
# CVE-2026-0911 인증 PoC: WordPress Hustle 플러그인의 모듈 가져오기 엔드포인트에서 취약한 파일 업로드 및 고아 파일 동작을 테스트하며, 다중 대상 스캔 및 페이로드 사용자 지정을 지원합니다.
WordPress 플러그인 Hustle(wordpress-popup, WPMU DEV)에 대한 CVE-2026-0911 범위 내에서, 인증이 필요한 모듈 가져오기 엔드포인트를 통한 업로드 동작을 테스트하는 연구/펜테스트 보조 도구입니다.
이 저장소 또는 파일 세트 내의 CVE-2026-0911.py 스크립트는 소유한 시스템 또는 서면 허가를 받고 테스트하는 시스템에서만 사용해야 합니다.
영향을 받는 버전(Wordfence/NVD: 7.8.9.2 및 이전)에서 action_import_module() 내부의 wp_handle_upload() 호출이 test_type => false 로 수행되어 파일 유형 검증이 약하게 유지됩니다. 가져오기 후 JSON 검증이 실패하더라도 업로드된 파일은 삭제되지 않을 수 있습니다("고아" 파일). 서버가 wp-content/uploads 아래에서 PHP를 실행한다면, 이는 실질적으로 원격 코드 실행으로 이어지는 체인의 일부가 될 수 있습니다. 패치된 버전에서는 test_type => true 및 임시 upload_mimes로 .json 제한이 적용됩니다.
자세한 기술 요약은 NVD 레코드 및 Wordfence 참조를 확인하세요.
from __future__ import annotations와 호환)설치 예시:
pip install requests
최소 하나의 대상(-u 또는 -l)과 유효한 WordPress 세션(--cookie 또는 --cookie-file)이 필수입니다.
python CVE-2026-0911.py -u "https://ornek.com" --cookie "wordpress_logged_in_...=...; ..."
도움말:
python CVE-2026-0911.py --help
| 매개변수 | 설명 |
|---|---|
-u, --url | 단일 대상 루트 URL (예: https://site.com) |
-l, --list | 줄당 하나의 URL이 포함된 파일 (# 주석) |
--cookie | 브라우저에서 복사한 쿠키 문자열 |
--cookie-file | 쿠키를 한 줄에 저장하는 파일 |
--nonce | hustle_single_action용 수동 WordPress nonce (자동 가져오기 대신) |
--admin-page | nonce를 가져올 admin.php?page= 값 (기본값: hustle_popup_listing) |
--module-id | POST moduleId (기본값 0: 잘못된 모듈 → 가져오기 흐름) |
--module-type | popup, slidein, embedded, social_sharing |
--module-mode | 예: informational, optin |
--remote-name | multipart로 전송되는 파일 이름 (기본값: probe_rce.php) |
--payload-file | 업로드할 내용을 파일에서 읽기 (--uploader 및 기본 프로브를 재정의) |
--uploader | 내장 미니 PHP form-uploader 본문 사용 |
--workers | 목록 모드의 동시 스레드 수 (기본값: 8) |
--timeout | 요청 시간 초과 초 (기본값: 25) |
--verify-ssl | TLS 검증 켜기 (기본값: 꺼짐) |
--debug | 추가 디버그 출력 |
--quiet | 도메인/단계 로그 끄기; 요약 중심 |
-o, --output | 성공적인 "hit" 줄이 추가되는 파일 |
admin-ajax.php POST 요약, 가능한 후보 URL. 다중 대상에서는 줄이 스레드에서 오기 때문에 중간중간 섞여 보일 수 있습니다. 각 줄에는 대상 도메인이 포함됩니다.--quiet로 이러한 세부 정보가 숨겨집니다.-o 파일에 추가(append)되며, flush/가능하면 fsync로 디스크에 기록됩니다. 기본 파일 이름: cve-2026-0911-hits.txt (작업 디렉터리의 절대 경로가 요약됨).단일 사이트, TLS 검증, 디버그:
python CVE-2026-0911.py -u "https://lab.local" --cookie-file cookie.txt --verify-ssl --debug
목록 스캔, 16개 워커, 사용자 지정 출력:
python CVE-2026-0911.py -l hedefler.txt --cookie "..." --workers 16 -o sonuclar.txt
내장 업로더 본문 및 사용자 지정 원격 파일 이름:
python CVE-2026-0911.py -u "https://lab.local" --cookie "..." --uploader --remote-name test.php
optinVars 내의 single_module_action_nonce 필드에서 읽습니다.moduleId=0 경로에서 플러그인은 업로드 전에 모듈 제한으로 인해 오류를 반환할 수 있습니다. 이 경우 파일이 기록되지 않습니다.wp-content/uploads/YYYY/MM/ 가정에 따라 생성됩니다. WordPress가 파일 이름을 변경하면 실제 경로가 다를 수 있습니다.--cookie는 다른 도메인에서 작동하지 않습니다. 다중 사이트 테스트에서는 각 환경에 적합한 세션이 필요합니다.0, 없으면 0이 아닌 코드(스크립트 내부 main 반환).Ctrl+C로 중단: 130.이 도구는 합법적인 보안 테스트, 교육 및 방어 목적으로만 사용해야 합니다. 무단 시스템에서의 사용은 불법이며 심각한 처벌을 초래할 수 있습니다. 작성자와 기여자는 오용에 대해 책임을 지지 않습니다.