
Template Nuclei para detecção não-intrusiva do XSS2Shell, um parser differential pré-autenticado no WordPress Core que permite injeção de elementos DOM na página de login, servindo de base para uma cadeia de XSS → RCE.
WordPress Core의 사전 인증 differential parser인 XSS2Shell을 비침습적으로 탐지하기 위한 Nuclei 템플릿으로, 로그인 페이지에 DOM 요소를 주입할 수 있어 XSS → RCE 체인의 기반이 됩니다.
⚠️ 이 템플릿은 탐지만 수행합니다 (HTML 응답에서 마커가 반사되는 단계). DOM clobbering, JSONP/SOME, Application Password 탈취 또는 플러그인 업로드 등 전체 공격 체인은 실행하지 않습니다. 명시적 승인을 받은 자산에만 엄격히 사용하세요.
WordPress Core는 wp-login.php에서 "등록되지 않은 사용자" 오류 메시지를 렌더링할 때 제출된 username을 두 개의 서로 다른 필터 간에 일관되지 않은 이스케이프 방식으로 HTML에 삽입합니다:
wp_strip_all_tags() (PHP의 strip_tags() 기반)는 < 뒤에 즉시 문자가 오는 경우에만 태그로 인식합니다 — < 뒤에 공백이 오면 필터는 해당 내용을 일반 텍스트로 처리합니다.wp_kses_post()는 자체 tokenizer를 사용하며, 이 공백을 허용하여 문자열을 실제 HTML 요소로 재구성합니다 (<area>, <div>, <button>은 allowlist에 포함됨).결과적으로 인증되지 않은 공격자는 로그인 페이지에 임의의 DOM 요소를 주입할 수 있으며, 이는 레거시 스크립트 user-profile.js의 핸들러, ajaxurl 변수의 DOM clobbering, REST API의 JSONP와 결합되어 WordPress 오리진에서 JavaScript 실행을 가능하게 하고, 전체 체인으로 이어질 경우 관리자 계정에 대한 RCE로 이어집니다.
pwn.ai가 발견 및 공개했습니다. WordPress 7.0.3에서 수정되었습니다 (4.7 브랜치까지 백포트).
템플릿은 log 필드에 다음 payload를 포함한 POST 요청을 /wp-login.php로 전송합니다:
< area id=xss2shell-marker href=/x>< div id=xss2shell-div>
WordPress가 취약한 경우 wp_kses_post()는 이러한 문자열을 응답에서 실제 HTML 요소로 재구성합니다. 템플릿은 regex의 두 matcher (조건 and)를 사용하여 두 태그 모두 재구성된 형태로 나타나는지 확인합니다 — 입력을 부분적으로 반사하는 WAF의 오탐을 줄입니다.
# 템플릿 구문 검증
nuclei -t CVE-2026-64638.yaml -validate
# 단일 타깃에 실행
nuclei -t CVE-2026-64638.yaml -u https://target.com
# 타깃 목록에 실행
nuclei -t CVE-2026-64638.yaml -l targets.txt
# 디버그 (전체 request/response 확인)
nuclei -t CVE-2026-64638.yaml -u https://target.com -debug-req -debug-resp
| 결과 | 의미 |
|---|---|
| Match 긍정 | 주입된 태그가 실제 HTML로 반사됨 → differential parser 존재 → 대상 취약 (패치 안 됨) |
| Match 없음 | Payload가 이스케이프되거나 제거됨 → 대상 패치됨 (WordPress ≥ 7.0.3) 또는 태그 내 공백을 정규화하는 WAF/프록시에 의해 보호됨 |
WordPress 7.0.3 이상으로 업데이트하세요. 패치는 4.7부터 모든 유지 관리 브랜치에 백포트되었습니다.
이 템플릿은 보안 연구 및 승인된 침투 테스트 목적으로 제공됩니다. 명시적 승인 없이 시스템에 사용하는 것은 불법입니다. 저자는 오용에 대해 책임을 지지 않습니다.
Renzi