Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
xss2shell-check — CVE-2026-64638 (XSS2Shell)용 비파괴적 탐지기 — WordPress 사전 인증 XSS 반사 프리미티브 | Kitploit
도구/GitHubGitHub/sanaullahamanullah/xss2shell-check
Defensive ToolsVulnerability ScannersWeb Vulnerability ScannersVulnerability AnalysisInformation GatheringWeb SecurityPenetration Testing
GitHubsanaullahamanullah/xss2shell-check

xss2shell-check

CVE-2026-64638 (XSS2Shell)용 비파괴적 탐지기 — WordPress 사전 인증 XSS 반사 프리미티브

저장소 보기
4일 전아직 검토되지 않음

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

xss2shell-check

WordPress wp-login.php의 CVE-2026-64638 ("XSS2Shell") 반사(reflection) 프리미티브를 탐지하는 비파괴적이고 의존성 없는 도구입니다.

배경

CVE-2026-64638은 WordPress 코어의 인증 전(pre-authentication) 반사형 XSS로, PWN.AI가 2026-08-07에 공개했으며(CVSS 8.9, CWE-79) 7.0.3에서 패치되었고 모든 유지 관리 브랜치(6.9.6, 6.8.7, 6.7.6, 6.6.6, 6.5.9, …)로 백포트되었습니다.

근본 원인은 PHP의 strip_tags()와 WordPress의 KSES 새니타이저 사이의 **파서 차이(parser differential)**입니다:

  • strip_tags()는 < 뒤에 공백이 오면 태그로 인식하지 않으므로 < area id=x>와 같은 사용자 이름이 일반 텍스트로 남습니다.
  • KSES에는 그러한 규칙이 없어 로그인 오류 메시지 안의 텍스트를 실제 <area id="x"> 요소로 다시 파싱합니다.

이로 인해 공격자가 선택한 id/class/href 속성을 가진 DOM 주입이 발생합니다. 이는 공개된 다단계 체인(DOM clobbering → REST JSONP → 애플리케이션 비밀번호 탈취 → 플러그인 업로드 → 로그인한 관리자 피해자에 대한 RCE)의 기반이 되는 프리미티브입니다.

이 도구의 기능

두 가지 비파괴적 프로브(임의의 마커 사용자 이름으로 로그인 실패):

  1. RAW_HTML — 오류 응답에 <b>marker</b>가 이스케이프되지 않은 채 나타납니다.
  2. AREA_BYPASS — < area id=marker>가 strip_tags()를 통과하여 응답에 실제/정규화된 요소(예: area id="marker")로 다시 나타납니다.

어떤 페이로드도 실행되지 않습니다. 이 도구는 공격자 HTML이 실제 DOM으로 렌더링되는지만 측정합니다. 선택적 추가 기능:

  • --version — 피드 <generator> 태그를 통해 코어 버전 식별.
  • --jsonp — 공개된 체인에서 사용하는 REST JSONP 봉투(_jsonp/_envelope)에 연결할 수 있는지 확인.

사용법

root@kitploit:~
python3 xss2shell_check.py https://example.com
python3 xss2shell_check.py --jsonp --verbose https://example.com
python3 xss2shell_check.py --version https://example.com
python3 xss2shell_check.py --json https://example.com

Python 3.6+, 표준 라이브러리만 사용. 의존성 없음.

종료 코드

코드의미
0취약함(반사 프리미티브 존재)
1패치됨 / 취약하지 않음
2오류(연결 불가, WAF 챌린지, 예상치 못한 응답)

탐지 매트릭스

탐지 참고 사항

  • 취약한 시그니처는 정규화된 요소(<area id="…">)입니다. 속성 따옴표는 KSES 세대에 따라 다르며(기존 사용자 정의 파서: <area id=x>; DOMDocument: <area id="x"> / <area id="x" />), 따라서 모든 형식이 매칭됩니다. 다시 파싱되지 않는 원시 < area …> 통과는 브라우저에서 비활성 텍스트일 뿐 프리미티브가 아니므로 RAW_TEXT_ONLY로 보고되며 오탐(false positive)을 유발하지 않습니다.
  • 버전 라벨은 참고용일 뿐입니다: 패치된 백포트(6.9.6, 6.8.7, 6.7.6, 6.6.6, 6.5.9, 4.7.34, …)는 4.7.0–7.0.2 시리즈 안에 속하며 브랜치별로 처리됩니다. 반사 검사가 여전히 최종 판정 기준입니다.
  • 요청: 1회 GET(로그인 페이지 — WAF/고정 쿠키와 리디렉션 후 최종 URL도 캡처) + 고유한 무작위 마커를 사용한 2회 POST. POST 리디렉션은 POST로 다시 발행됩니다. WAF 차단은 조용한 "취약하지 않음"이 아닌 종료 코드 2로 표시됩니다.
  • 사용자 정의 login_errors 필터나 CDN/WAF가 응답을 다시 쓰거나 로그인 오류가 사용자 이름을 에코하지 않는 경우 오탐(false negative)이 발생할 수 있습니다.

면책 조항

승인된 보안 테스트 전용입니다. 이 도구는 소유하거나 명시적인 서면 허가를 받은 시스템만 테스트하기 위한 것입니다. 승인되지 않은 테스트는 대부분의 관할권에서 불법입니다.

참고 자료

  • Criminal IP — WordPress 취약점 CVE-2026-64638: 로그인 페이지 XSS에서 서버 측 코드 실행까지
  • CUHK ITS — WordPress 인증 전 XSS 취약점 "XSS2Shell" (CVE-2026-64638)

라이선스

MIT

도구 다운로드
플래그용도
--version코어 버전 식별(피드 생성기 태그, 홈페이지 메타 대체)
--jsonpREST JSONP 봉투(_jsonp/_envelope)에 연결할 수 있는지도 확인
-v, --verbose프로브 응답 스니펫 출력(보고서용 증거)
--json기계 판독 가능한 JSON 결과(CI / 자동화)
관찰된 동작판정종료 코드
<b>marker</b>가 이스케이프되지 않은 채 에코됨RAW_HTML — 취약함0
< area id=marker>가 실제 <area id="marker">로 다시 파싱됨(모든 따옴표/void 형식)AREA_BYPASS — 취약함0
사용자 이름이 HTML 이스케이프됨ESCAPED — 취약하지 않음1
태그가 제거되고 텍스트만 남음STRIPPED — 취약하지 않음1
원시 < area …>가 통과하지만 다시 파싱되지 않음RAW_TEXT_ONLY — 비활성 텍스트, 취약하지 않음1
에코가 전혀 없음NOT_REFLECTED — 취약하지 않음1
프로브 차단(HTTP ≥ 400 / 챌린지 페이지) 또는 대상 연결 불가오류2