
cve-2026-48907 스캐너
Joomla! JCE Editor < 2.9.99.5용 단일 파일 자체 포함 스캐너 — 인증되지 않은 원격 코드 실행 (CVE-2026-48907)
작성자: Hussein Mohamed (masta ghimau)
[!CAUTION]
🚨 면책 조항 — 사용 전에 읽으십시오
이것은 침투형 보안 테스트 도구입니다.
THIS TOOL IS FOR AUTHORIZED SECURITY ASSESSMENTS ONLY.
Scanning systems you do NOT own or have WRITTEN PERMISSION to test is ILLEGAL in most jurisdictions.
The author (Hussein Mohamed masta ghimau) accepts ABSOLUTELY NO liability for any misuse, damage, legal action, or data loss arising from the use of this tool.
By running this scanner you agree to:
Only scan assets YOU OWN or have EXPLICIT WRITTEN CONSENT.
Understand that uploads a harmless POC PHP file to the target server as part of the intrusive accuracy check.
Manually delete every uploaded POC file immediately after use.
USE AT YOUR OWN RISK.
[!IMPORTANT] 정확성을 위해 "침투형"이 중요한 이유: 최고 수준의 신뢰도를 확보하고 오탐(false positive)을 제거하기 위해, 이 도구는 실시간 수학 검증 페이로드 테스트를 수행합니다. 안전한 PHP 개념 증명(proof-of-concept) 한 줄을 업로드한 뒤, 서버가 반환한 정확한 계산 결과를 검증하여 원격 코드 실행을 확인합니다. 버전 문자열만 읽는 비침투형 스캐너는 백포트된 패치나 사용자 지정 핫픽스를 놓칠 수 있습니다. 이 도구는 취약점이 실제로 존재하는지 검증합니다. 따라서 설계상 침투형이며 — 현명하게, 그리고 완전한 승인을 받은 상태에서 사용하십시오.
masta-cve-2026-48907.py는 완전히 독창적인 단일 파일 Python 스캐너로, 2.9.99.5보다 오래된 JCE Editor 컴포넌트 버전을 실행 중인 Joomla! 인스턴스에서 CVE-2026-48907을 탐지하도록 설계되었습니다.
requests/httpx 의존성 없음..py 파일.openpyxl 또는 rich 없이도 동작하지만, 설치되어 있으면 화려하게 표시됩니다.ThreadPoolExecutor를 통해 전체 URL 목록을 빠르게 스캔합니다..xlsx) 보고서를 자동 생성합니다.openpyxlrich나머지는 모두 Python 표준 라이브러리입니다(urllib, http.cookiejar, argparse, threading 등).
# 1. Clone the repo
git clone https://github.com/YOUR_USERNAME/masta-cve-2026-48907.git
cd masta-cve-2026-48907
# 2. (Optional but recommended) install extras
pip install -r requirements.txt
또한 아무것도 설치하지 않고 스크립트를 직접 실행할 수 있습니다(터미널 출력만 가능, Excel 없음):
python masta-cve-2026-48907.py -u https://target.com
python masta-cve-2026-48907.py -u https://target.com/joomla
python masta-cve-2026-48907.py -l targets.txt -t 10
python masta-cve-2026-48907.py -u https://target.com -p http://127.0.0.1:8080
python masta-cve-2026-48907.py -h
-u URL Single target URL
-l FILE File containing URLs (one per line)
-o OUTPUT Custom Excel output path
-t THREADS Concurrent threads (default: 5)
-p PROXY Proxy URL (e.g. http://127.0.0.1:8080)
--timeout N Request timeout in seconds (default: 12)
--verify-ssl Enable SSL certificate verification (default: disabled)
-v, --verbose Show full per-target result cards during scan
-d, --debug Show internal HTTP request traces
--no-color Disable colored terminal output
다음은 입력부터 최종 보고서까지의 전체 스캔 로직입니다.
flowchart TD
A[User provides -u URL or -l FILE] --> B[Normalize & deduplicate targets]
B --> C[Launch ThreadPoolExecutor]
C --> D[For each target]
D --> E1[probe_joomla<br/>GET /, meta, manifest,<br/>static assets, README]
E1 --> F1{Joomla! detected?}
F1 -- No --> R1[Status: NOT_JOOMLA]
F1 -- Yes --> E2[probe_jce<br/>GET jce.xml, endpoints,<br/>JCE-specific markers]
E2 --> F2{JCE detected?}
F2 -- No --> R2[Status: SAFE<br/>JCE not installed]
F2 -- Yes --> F3{Version >= 2.9.99.5?}
F3 -- Yes --> R3[Status: PATCHED]
F3 -- No --> E3[extract_csrf<br/>Parse Joomla! CSRF token]
E3 --> F4{Token found?}
F4 -- No --> R4[Status: PATCHED<br/>CSRF missing → likely hardened]
F4 -- Yes --> E5[Build math-verifier payload<br/>masta-cve-2026-48907-poc ...]
E5 --> E6[Vector 1: Multipart POST<br/>profile_file upload to tmp/]
E6 --> F5{HTTP 200?}
F5 -- Yes --> E7["GET /tmp/masta-{rand}.xml.php"]
E7 --> F6{Body contains<br/>MATHOK:3105:END ?}
F6 -- Yes --> R5[Status: VULNERABLE<br/>Confidence: CONFIRMED]
F6 -- No --> E8[Vector 2: Browser chain<br/>upload + rename via RPC]
E8 --> F7{RCE confirmed?}
F7 -- Yes --> R5
F7 -- No --> E9[Check for WAF block page]
E9 --> F8{WAF detected?}
F8 -- Yes --> R6[Status: BLOCKED_BY_WAF]
F8 -- No --> R7[Status: SAFE]
F5 -- No --> E8
R1 --> S[Append result to Excel + Terminal card]
R2 --> S
R3 --> S
R4 --> S
R5 --> S
R6 --> S
R7 --> S
S --> D
D --> T[Print Summary Dashboard]
T --> U[Save Excel Report to reports/]
U --> V[Print cleanup reminder for<br/>all uploaded POC files]
style R5 fill:#ff0000,stroke:#333,color:#fff
style R3 fill:#32CD32,stroke:#333,color:#000
style R6 fill:#FFD700,stroke:#333,color:#000
아래 이미지를 실제 터미널 스크린샷으로 교체하세요.

아래 이미지를 실제 Excel 보고서 스크린샷으로 교체하세요.

팁: 실제 스크린샷을 생성하려면 로컬 테스트 Joomla! 인스턴스를 대상으로 스캐너를 실행하세요. 스크린샷을 assets/ 폴더에 커밋하면 GitHub에서 자동으로 렌더링됩니다.
이 스캐너는 취약점을 확인하기 위해 대상 서버에 무해한 PHP 개념 증명(proof-of-concept) 파일을 업로드합니다. 이 도구는 스캔 종료 시 업로드된 모든 파일을 나열하는 정리 알림을 항상 출력합니다. 테스트 후 반드시 수동으로 삭제해야 합니다. 이 파일들은 masta-{random}.xml.php 또는 이와 유사한 이름을 가지며 다음의 평문 출처 표시 줄이 포함되어 있습니다:
masta-cve-2026-48907-poc. This test is done as part of Security Assessment - masta ghimau.
이 소프트웨어를 사용함으로써 귀하는 자신의 행동에 대한 전적인 책임을 인정합니다. 이 코드는 어떠한 보증도 없이 "있는 그대로(as-is)" 제공됩니다. 침투형 RCE 검증 스캐너를 실행하는 것이 어떤 의미인지 이해하지 못한다면 이 도구를 사용하지 마십시오.
🛡 Use it to protect your own assets. Not to harm others.
| 기능 | 설명 |
|---|
| 🔍 다중 소스 핑거프린팅 | 메타 태그, 매니페스트, 정적 자산, 언어 파일 및 JCE 전용 엔드포인트를 통해 Joomla! 및 JCE 탐지 |
| 🛡 WAF 탐지 | Cloudflare, Incapsula, Sucuri 및 ModSecurity 차단 식별 |
| 🧪 안전한 침투형 POC | 무해한 PHP 수학 검증기를 업로드(출처 표시 + 정리 대상임을 명시) |
| 📊 카드 기반 터미널 UI | 대상별 Rich Panel + Table 카드(또는 ANSI 폴백) |
| 📁 Excel 보고서 | 헤더, 틀 고정, 열 너비 및 색상 코딩된 상태 셀이 포함된 .xlsx 자동 생성 |
| ⚙️ 프록시 지원 | 모든 트래픽을 Burp / ZAP / 모든 HTTP 프록시를 통해 라우팅 |
| 🧵 스레드 기반 | 대량 목록을 위한 작업자 스레드 수 구성 가능 |
| 상태 | 의미 | 신뢰도 |
|---|
| VULNERABLE | PHP 페이로드가 실행되고 수학적 증명이 검증됨. RCE가 실제로 확인됨. | CONFIRMED |
| VULNERABLE_UPLOAD_ONLY | 파일 업로드는 성공했지만 PHP 실행이 차단됨. 악용 가능하지만 RCE는 미확인. | HIGH |
| PATCHED | Joomla! / JCE가 탐지되었고 버전이 >= 2.9.99.5이거나 CSRF가 강화됨. | HIGH / MEDIUM |
| SAFE | JCE가 설치되지 않았거나 악용 벡터가 실패함(패치/강화되었을 가능성 높음). | HIGH |
| BLOCKED_BY_WAF | 웹 애플리케이션 방화벽(WAF)이 테스트를 차단함. | LOW |
| NOT_JOOMLA | 대상이 Joomla! 사이트로 보이지 않음. | CERTAIN |
| ERROR | 네트워크 / 연결 / 처리되지 않은 예외. | LOW |