CVE-2026-87902용 Tkinter GUI 익스플로잇 콘솔: WordPress를 핑거프린팅하고, pagename 트래버설을 통한 비인증 LFI를 확인하며, PEAR 가젯 체인을 통해 RCE로 에스컬레이션하고, 파일 관리자를 배포합니다.
WordPress 코어 get_page_template() — 비인증 LFI → PEAR 가젯 → RCE
MRdark-ops/CVE-2026-87902의 로직 위에 구축된 다크 네온 GUI.
CVE-2026-87902를 위한 현대적인 Tkinter GUI(표준 라이브러리만 사용, 서드파티 의존성 없음)로,
get_page_template()의 pagename 파라미터를 통한 WordPress 코어의 비인증 로컬 파일 포함(LFI)
취약점이며, PEAR 가젯 체인(pearcmd.php + config-create)을 통해
원격 코드 실행(RCE) 으로 에스컬레이션됩니다.
4.7.0 – 7.1.16.8.10, 7.0.6, 7.1.27hp8-65ch-5whpcheck-only 모드로 아무것도 실행하지 않고 LFI 확인pearcmd.php(Linux + XAMPP/Windows)를 브루트포스하고, config-create를 통해 PHP 기록fm_<hex>.php 배치pip install 불필요 — 순수 표준 라이브러리
(tkinter, urllib, ssl, socket, gzip, zlib, threading, queue, ...)시스템에 Tkinter가 없는 경우(이는 OS 패키지이며, pip 패키지가 아닙니다):
| 플랫폼 | 명령어 |
|---|---|
| Debian / Ubuntu | sudo apt install python3-tk |
| Fedora / RHEL | sudo dnf install python3-tkinter |
| Arch Linux | sudo pacman -S tk |
| macOS (Homebrew) | brew install python-tk |
| Windows | 공식 Python 설치 프로그램에 포함됨 |
git clone https://github.com/tonydelouvre/CVE-2026-87902.git
cd CVE-2026-87902
python3 xwp_gui.py
키보드 단축키:
| 키 | 동작 |
|---|---|
Ctrl+Enter | 스캔 시작 |
Esc | 스캔 중지 |
SINGLE(URL 하나) 또는 MASS를 선택한 뒤, 한 줄에 URL 하나씩 담긴 .txt 파일을 BROWSE LIST로 선택합니다.exploit -> RCE와 deploy file manager를 체크하고, 안전한 검증만 하려면 check-only를 선택합니다.oracle, depths, segments, probe, threads, timeout, proxy를 조정합니다.| 필드 | 기본값 | 설명 |
|---|---|---|
target url | – | 대상 기본 URL (단일 모드) |
target list | – | URL 목록 파일 (대량 모드) |
command | id | RCE 달성 후 실행되는 명령 |
drop dir | /tmp | File Manager가 기록되는 디렉터리 |
oracle | wp-links-opml | LFI 오라클로 악용되는 코어 파일 |
depths | 4,3,5,6,7 | 시도할 ../ 순회 깊이 |
segments | templates,templates/page-templates,page-templates | 테마의 page-* 디렉터리 |
probe | 12 | 탐색할 page_id 값의 개수 |
threads | 10 | 병렬 워커 수 (최대 50) |
timeout | 12.0 | 요청당 타임아웃(초) |
max time | 60.0 | 대상당 시간 예산(초) |
proxy | – | http://host:port |
build_pagename()은 segment + %252f + N× %252e%252e%252f + target을 생성하며, 이중 URL 인코딩을 적용합니다:
/?page_id=<N>&pagename=templates%252f%252e%252e%252f...%252fwp-links-opml
| 단계 | 모듈 | 동작 |
|---|---|---|
| 1. 핑거프린트 | Fingerprinter | WordPress + 버전(generator, ?ver=, wp-links-opml.php) 및 테마 탐지 |
| 2. 사전 조건 | PreconditionChecker | 트래버설 세그먼트로 사용되는 테마 page-* 디렉터리 탐색 |
| 3. 탐색 | PageDiscoverer | REST API, 사이트맵, 단축 링크, page-id- 클래스를 통해 page_id 값 수집 |
| 4. LFI | TraversalExploiter | ?page_id=N&pagename=<이중 인코딩 경로> 요청 후 <opml version= 오라클 탐지 |
| 5. RCE | RCEEscalator | 깊이 1–19에서 pearcmd.php 가젯 탐색, pear +config-create+로 PHP 작성 후 명령 실행 |
| 6. 사후 익스플로잇 | shell.php | 드롭 디렉터리에 파일 관리자(fm_<hex>.php) 배포 |
버전 단축: 핑거프린트가 patched 또는 out_of_range를 보고하면 시간을 절약하기 위해
대상이 즉시 건너뛰어집니다.
RESULTS 탭에는 target, verdict, version, lfi, rce, shell 열이 표시됩니다.
VULNERABLE로 분류된 행은 청록색으로 강조되며, RCE에 성공한 행은 마젠타색으로 바뀝니다.
EXPORT는 모든 내용을 CSV로 기록합니다:
target,verdict,version,lfi,rce,shell,detail
http://target.local,VULNERABLE,6.4,templates/../../ d=4 POST,uid=33(www-data),http://target.local/?page_id=2&pagename=...,
시스템 관리자용:
7.1.2 이상으로 업데이트하십시오(백포트: 6.8.10, 7.0.6, 7.1.2).pagename에 ../ 또는 %2e%2e가 포함된 요청을 차단하는 WAF 규칙을 추가하십시오.php.ini에서 register_argc_argv를 비활성화하십시오 — 이는 PEAR 가젯 체인을 무력화합니다.pearcmd.php를 제거하십시오.; php.ini
register_argc_argv = Off
승인된 보안 테스트 전용
이 도구는 사전 서면 동의를 받은 상태에서의 침투 테스트 및 보안 연구 목적으로만 제공됩니다. 명시적인 허가 없이 대상에 대해 사용하는 것은 다음과 같습니다:
이 도구를 사용함으로써 귀하는 대상에 대한 명시적인 서면 허가를 보유하고 있음을 동의하며, 자신의 행동에 대한 책임은 귀하에게 있고, 작성자는 오용에 대해 어떠한 책임도 지지 않음에 동의합니다. 위반 시 CFAA, GDPR 제32조, 프랑스 형법 제323-1조 및 기타 국내 또는 국제 사이버 범죄 법률에 따라 기소될 수 있습니다.
MIT — 원본 저장소를 따릅니다.