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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
xss2shell — 무해한 로그인 프로브를 사용하는 행위 기반 WordPress CVE-2026-64638 스캐너; 샌티타이저 동작을 분류하고 승인된 사용을 위한 알림 전용 PoC를 생성합니다. | Kitploit
도구/GitHubGitHub/0xlipon/xss2shell
Defensive ToolsReconnaissanceVulnerability ScannersWeb Vulnerability ScannersPayload GenerationVulnerability AnalysisWeb Application ExploitationWeb SecurityPenetration Testing
GitHub0xlipon/xss2shell

xss2shell

무해한 로그인 프로브를 사용하는 행위 기반 WordPress CVE-2026-64638 스캐너; 샌티타이저 동작을 분류하고 승인된 사용을 위한 알림 전용 PoC를 생성합니다.

311일 전아직 검토되지 않음

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
저장소 보기웹사이트

CVE-2026-64638 CVSS 8.9 pwn.ai Python 3.8+

🔥 XSS2Shell — CVE-2026-64638 스캐너 및 PoC 툴킷

5억 개 이상의 웹사이트에 영향을 미치는 WordPress 사전 인증 XSS-to-RCE 체인을 위한 동작 우선(behavior-first) 대량 스캐너이자 증거 등급 PoC 생성기입니다.
탐지 전용. 무기화 없음. 버그 바운티 프로그램과 블루 팀을 위해 제작되었습니다.

공식 체커: https://pwn.ai/xss2shell-checker.html

이 취약점이란? • 빠른 시작 • Shodan Dorks • 사용법 • 결정 매트릭스 • 탐지 • FAQ


🔎 Shodan Dorks

스캔 전에 인터넷에서 잠재적으로 취약한 WordPress 인스턴스를 찾아보세요:

핵심 WordPress 검색

root@kitploit:~
http.component:"wordpress" -http.title:"Just a moment"

자동화된 요청을 차단하거나 챌린지를 요구하는 Cloudflare "I'm Under Attack" 모드 / 봇 보호 페이지를 제외하면서 WordPress 사이트를 찾습니다.

로그인 페이지로 좁히기

root@kitploit:~
http.component:"wordpress" http.title:"Log In"

WordPress 로그인 페이지만 반환합니다 — CVE-2026-64638의 정확한 공격 표면입니다.

버전별 탐색

root@kitploit:~
http.component:"wordpress" "wp-content" "?ver=7.0" -"?ver=7.0.3"

에셋 버전 핑거프린팅을 통해 7.0.3 패치가 없는 WordPress 7.0.x 인스턴스를 식별합니다.

공격 표면 넓히기

root@kitploit:~
http.component:"wordpress" http.html:"wp-login.php"

wp-login.php에 접근 가능하지만 현재 페이지가 아닐 수 있는 사이트를 포착합니다 — 더 넓은 범위를 커버합니다.

Cloudflare 제외 (결합)

root@kitploit:~
http.component:"wordpress" -http.title:"Just a moment" -http.title:"Attention Required" -org:"Cloudflare"

대부분의 Cloudflare 프런트 대상(target)을 걸러내는 공격적인 필터입니다. --active로 대규모 스캔 시 사용하세요 — Cloudflare가 프로브 요청을 속도 제한(rate-limit)하거나 차단합니다.

팁: shodan download로 Shodan 결과를 내보내고 호스트 이름을 xss2shell_mass.py -i로 직접 파이프하세요.


🚨 CVE-2026-64638이란?

2026년 8월 7일, pwn.ai가 CVE-2026-64638(XSS2Shell)을 공개했습니다 — 이는 WordPress Core의 치명적인 사전 인증 크로스사이트 스크립팅(XSS) 취약점으로, 서버에서 **원격 코드 실행(RCE)**까지 이어지는 공격 체인입니다. [인용:pwn.ai 블로그]

이 버그는 PHP의 strip_tags()와 WordPress의 wp_kses_post() 사이의 파서 불일치를 악용합니다:

  • strip_tags() 는 < 바로 뒤에 문자가 오는 형태를 HTML 태그로 식별합니다. < area id=...>(공백 포함)는 텍스트로 처리됩니다 — 살아남습니다.
  • wp_kses_post()(KSES)는 < area를 유효한 <area> 요소로 인식합니다 — 그리고 <area>는 KSES에서 **허용 목록(allowlist)**에 등록되어 있습니다. [인용:pwn.ai 블로그]

특수하게 조작된 사용자 이름 < area id=ajaxurl href=/?rest_route=/&_method=GET&_jsonp=alert>...으로 한 번의 실패한 로그인을 시도하면 두 살균기를 모두 우회하고, 로그인 페이지에서 실제 DOM으로 렌더링되며, DOM 클로버링을 통해 WordPress 자체 user-profile.js 스크립트를 가로채고, WordPress 오리진에서 alert()를 실행합니다 — 클릭 0회, 인증 불필요, 쿠키 불필요. [인용:pwn.ai 블로그]

로그인한 관리자 권한으로 승격된다면? 동일한 프리미티브가 Same Origin Method Execution(SOME)을 통해 애플리케이션 비밀번호를 탈취하고, 악성 플러그인을 업로드하며, www-data 권한으로 PHP를 실행합니다. [인용:pwn.ai 블로그] [인용:hadrian.io 블로그]

영향을 받는 버전: WordPress 6.4 ~ 7.0.2 — 7.0.3에서 패치, 4.7+ 버전으로 백포트됨.
영향 규모: 공개 시점 기준 약 5억 개 웹사이트. [인용:pwn.ai 블로그]

📰 주요 자료


⚡ 이 툴킷이 하는 일

이것은 탐지 전용 툴킷입니다. 취약점을 무기화하지 않으며, 보안 연구자, 버그 바운티 헌터, 블루 팀에게 다음을 수행하는 데 필요한 모든 것을 제공합니다:

  1. 대량 스캔 — 동작 우선(behavior-first) 정확성으로 수백 개의 WordPress 호스트를 몇 분 만에 스캔
  2. 증거 등급 PoC 페이지 생성 — XSS가 실제로 발동함을 증명 (alert()만 사용)
  3. 결과 분류 — 정확한 신뢰 수준으로 분류, 버전 일치로 인한 오탐 없음

🔑 왜 동작 우선(Behavior-First)인가?

"버전 문자열은 코드의 패치 수준이 어떠해야 하는지를 알려줍니다.
버그가 실제로 발동하는지는 로그인 페이지의 살균기 동작만이 말해줍니다."

관리형 호스트는 버전 문자열을 올리지 않고 보안 패치를 조용히 백포트합니다. 로그인 강화 플러그인은 오류 메시지를 완전히 대체하여 패치되지 않은 버전에서도 반사 채널을 차단합니다. 버전 전용 스캐너는 오탐과 미탐을 모두 발생시킵니다. 이 스캐너는 단일 무해 프로브를 전송하고 실제 살균기 동작을 분류합니다.


🚀 빠른 시작

설치

root@kitploit:~
git clone https://github.com/jakestone/xss2shell.git
cd xss2shell
pip install -r requirements.txt

5분 스캔

root@kitploit:~
# Passive — no probes sent to target, version + endpoint fingerprinting only
python3 xss2shell_mass.py -i domains.txt -o results

# Active — sends ONE benign failed-login per host (authorized assets only!)
python3 xss2shell_mass.py -i domains.txt -o results --active --workers 80

증거 PoC 생성

root@kitploit:~
# Single target
python3 make_poc.py --target https://blog.example.com

# Batch from scanner output
python3 make_poc.py --from-results results.csv -o pocs/

동영상을 녹화하면서 생성된 .poc.html을 브라우저에서 열어보세요 → alert()가 실행되면 사전 인증 XSS 증거가 확보된 것입니다.


📖 사용법

대량 스캐너 (xss2shell_mass.py)

root@kitploit:~
usage: xss2shell_mass.py [-h] -i INPUT [-o OUTPUT]
                         [--active] [--workers WORKERS]
                         [--timeout TIMEOUT] [--quiet]

패시브 스캔 증거 (능동 프로브 없음, 항상 수집됨)

  1. 홈페이지 → WordPress 핑거프린트 (meta generator, 에셋 ?ver= 파라미터, wp-content 참조)
  2. 로그인 페이지 → 접근 가능성, 기본 로그인 폼 감지, user-profile.js 가젯 등록 여부, 코어 에셋 버전
  3. REST JSONP 스모크 테스트 → /?rest_route=/&_method=GET&_jsonp=<random>에 대한 무해한 GET 요청 — JSONP 경로가 열려 있나?
  4. Feed/Readme 폴백 → 홈페이지 핑거프린트가 없을 때 버전 추출

능동 프로브 (POST 1회, --active 플래그)

사용자 이름 < area id=<RANDOM> href=/x2s>로 실패한 로그인 1회를 전송하고 HTML 응답을 분류합니다:

  • bypass — 마커가 포함된 실제 <area> 요소가 살아남음 → strip_tags/KSES 불일치 확인됨
  • escaped — 마커는 존재하지만 엔티티 인코딩됨 → 패치 또는 강화 조치 존재
  • stripped — 기본 WP 오류 표시, 태그 제거됨 → acevomod 또는 패치됨
  • closed — 사용자 이름 반사가 전혀 없음 → 로그인 강화 플러그인 설치됨

PoC 생성기 (make_poc.py)

root@kitploit:~
usage: make_poc.py [-h] [--target TARGET] [--from-results FROM_RESULTS]
                   [-o OUTDIR]

각 대상에 대해 pwn.ai가 공개한 PoC 페이지를 생성합니다 — 패치되지 않은 WordPress에서 alert()를 트리거하는 바로 그 HTML 폼입니다. 세 가지 페이로드 변형이 주석으로 포함되어 있습니다:


🧠 결정 매트릭스

스캐너의 결정 엔진은 버전 분류(WordPress.org의 stable-check API 기반)와 동작 증거를 결합하여 10가지의 서로 다른 판정을 내립니다:

출력 형식

CSV 열: host, url, status, checker_status, wp_version, branch_status, evidence, http, ms, error

checker_status 열은 직접적인 상호 검증을 위해 pwn.ai 공개 체커의 용어(vulnerable / patched / not_wordpress / unreachable / inconclusive / error)에 매핑됩니다.


🔍 탐지 시그니처 (블루 팀 / SOC)

방어 측에 계신다면, 이 취약점이 남기는 포렌식 신호는 다음과 같습니다:

서버 측 (웹 서버 / WAF 로그)

root@kitploit:~
# Primary signal: encoded '<' in the log parameter
POST /wp-login.php  →  log=%3C...  (URL-encoded < in username field)

# Higher confidence: paired with REST pivoting
GET /?rest_route=/&_method=GET&_jsonp=...     # JSONP callback
GET /wp-json/wp/v2/statuses/publish?_jsonp=...  # WAF-bypass variant

# Escalation stage indicators
GET /wp-admin/authorize-application.php?success_url=<off-origin>
POST /wp-admin/update.php?action=upload-plugin
GET /wp-content/plugins/<random>/shell.php

엣지 / WAF 차단 규칙

log 파라미터에 %3C(URL 인코딩된 <)가 포함된 POST /wp-login.php를 차단하세요. 유효한 WordPress 사용자 이름에는 꺾쇠괄호가 절대 포함되지 않습니다. 특정 태그로 범위를 좁히지 마세요 — KSES는 < 뒤에 탭, 줄바꿈, 캐리지 리턴과 모든 허용 목록 태그를 허용하므로 태그별 규칙은 쉽게 우회됩니다. [인용:hadrian.io 블로그]

방어자를 위한 핵심 인사이트

승격 단계의 _jsonp= 콜백은 속성 탐색에 **점(dot)**을 사용합니다 (예: window.opener.approve.click). 점이 포함된 JSONP 콜백이 있는 REST 요청을 악용의 강력한 지표로 플래그하세요. [인용:hadrian.io 블로그]


⚖️ 법적 및 윤리적 사용

root@kitploit:~
THIS TOOL IS DETECTION-ONLY. IT DOES NOT:
  ✗ Weaponize the JSONP callback beyond the public alert()
  ✗ Include admin-lure pages or Application Password capture
  ✗ Include REST abuse, plugin upload, or PHP shell code
  ✗ Execute more than one failed login per target per scan

YOU MUST:
  ✓ Only scan assets you own or have written authorization to test
  ✓ Only generate PoCs for your own browser on your own server
  ✓ Never send PoC links to site admins/users
  ✓ Never escalate past alert() without program written approval
  ✓ Follow the bug bounty program scope and rules

This toolkit exists for authorized security research, bug bounty
programs, and defensive detection engineering. Misuse is your
responsibility.

📁 리포지토리 구조

root@kitploit:~
xss2shell/
├── README.md                  ← You are here
├── xss2shell_mass.py          ← Behavior-first mass scanner (v1.1.0)
├── make_poc.py                ← Evidence-grade PoC page generator
├── requirements.txt           ← Python dependencies (just `requests`)
├── .gitignore                 ← Ignores scan outputs and cache
└── example/
    ├── domains.txt            ← Example input file
    └── example_output.csv     ← Example scan output

❓ FAQ

Q: 그냥 WordPress 버전 문자열만 확인하면 안 되나요?
A: 관리형 호스트(WP Engine, Kinsta, Pantheon 등)는 버전을 올리지 않고 보안 패치를 백포트하는 경우가 많습니다. 로그인 강화 플러그인은 오류 메시지를 완전히 대체합니다. 두 경우 모두 버전 전용 스캐너에서 오탐이 발생하고, 숨겨진 버전에서는 미탐이 발생합니다. 이 스캐너는 실제 살균기 동작을 테스트합니다.

Q: --active 프로브는 위험한가요?
A: 아닙니다. 무해한 마커 사용자 이름으로 정확히 한 번의 실패한 로그인을 전송합니다. JavaScript 실행을 시도하지 않으며, 유효한 사용자 이름을 열거하지 않고, 실제 악용을 트리거하지 않습니다. 일반적인 로그인 시도보다 덜 침습적입니다.

Q: 이 도구를 무단 스캔에 사용할 수 있나요?
A: 아닙니다. 능동 프로브는 /wp-login.php에 HTTP POST를 전송하며, 이는 대상 서버에 대한 요청입니다. 소유한 자산 또는 테스트에 대한 명시적인 서면 승인이 있는 자산에서만 사용하세요.

Q: vulnerable과 confirmed_vulnerable의 차이는 무엇인가요?
A: vulnerable은 WordPress.org API가 버전이 안전하지 않다고 말하지만, strip_tags/KSES 불일치가 동작적으로 확인되지 않은 상태입니다. confirmed_vulnerable은 프로브를 전송했고 <area> 요소가 두 살균기를 모두 통과했음을 의미합니다 — 공개된 공격 체인이 실제로 발동할 수 있습니다.

Q: 버그 바운티 프로그램 보고서에 사용할 수 있나요?
A: 네! checker_status 열은 쉬운 상호 검증을 위해 pwn.ai의 공개 체커 용어에 직접 매핑됩니다. 완전한 보고서를 위해 make_poc.py의 PoC 동영상 증거와 스캔 결과를 함께 사용하세요.

Q: RCE 체인도 탐지하나요?
A: 아닙니다. 이 툴킷은 사전 인증 XSS 진입점을 탐지합니다. 전체 RCE 체인은 로그인한 관리자, 활성화된 애플리케이션 비밀번호, 플러그인 업로드 권한이 필요합니다 — 이 스캐너가 평가하지 않는 조건들입니다. 스캐너는 외부에서 관찰 가능한 것, 즉 살균기 우회에 초점을 맞춥니다.


🏆 크레딧 및 참고 자료

  • 발견 및 공개: pwn.ai — 멀티 에이전트 AI 시스템이 자율적으로 발견
  • SOME 기법 기반: Paulos Yibelo — Top Web Hacking Techniques 후보에 오른 2022년 연구
  • 기술 분석: Hadrian — 포괄적인 탐지 및 완화 지침
  • CVE: CVE-2026-64638 / GHSA-52p2-r8wf-jcrf
  • 패치: WordPress 7.0.3

0xlipon 제작 • 탐지 전용 • 승인된 사용 전용

도구 다운로드
자료링크
원본 공개 (pwn.ai)pwn.ai/blog/xss2shell
Hadrian 기술 분석hadrian.io/blog/wordpress-xss2shell
WordPress 권고 (GHSA)GHSA-52p2-r8wf-jcrf
SOME 공격 연구 (2022)pwn.ai/blog/bypass-csp-using-wordpress
WordPress 7.0.3 릴리스wordpress.org/news/2026/08/wordpress-7-0-3-release
플래그설명
-i, --input줄당 하나의 호스트가 포함된 파일 (도메인 또는 전체 URL)
-o, --output출력 파일의 기본 경로 (.csv + .json 생성)
--active동작 프로브 활성화 — 호스트당 실패한 로그인 1회
--workers스레드 풀 크기 (기본값: 50, 연결 상태가 좋으면 최대 ~200)
--timeoutHTTP 타임아웃(초) (기본값: 10)
--quietconfirmed_vulnerable, vulnerable, likely_vulnerable만 출력
변형href 값사용 시기
기본(Default)/?rest_route=/&_method=GET&_jsonp=alert표준 WordPress
엔벨로프(Envelope)/?rest_route=/&_method=GET&_envelope=1&_jsonp=alertREST가 401을 반환할 때 (200으로 래핑됨)
WAF 피벗(Pivot)/wp-json/wp/v2/statuses/publish?_jsonp=alert&_method=GET?rest_route=가 WAF에 차단될 때
판정조건
confirmed_vulnerable 🔴버전이 안전하지 않고 AND 프로브 마커가 <area> 요소로 살아남았고 AND user-profile.js 가젯이 존재함
vulnerable 🔴wordpress.org 기준 버전이 안전하지 않음; 동작 프로브 미실행 (--active로 재실행)
likely_vulnerable 🟠프로브 마커는 살아남았지만 user-profile.js가 등록되지 않음 (공개된 자동 실행 가젯 없음)
mitigated 🟣버전은 안전하지 않지만 프로브 마커가 이스케이프/제거/차단됨 (조용한 백포트 또는 강화 조치)
likely_patched 🟢버전이 숨겨져 있거나 알 수 없지만 프로브 마커가 이스케이프/제거됨
patched 🟢버전이 latest 또는 outdated임 (보안 백포트 포함)
not_wordpress ⚫WordPress 핑거프린트가 감지되지 않음
unreachable ⚫연결 실패 (타임아웃, SSL, DNS)
inconclusive 🟡WAF 차단, Cloudflare 챌린지, 프로브 없는 숨겨진 버전, 또는 로그인 페이지 없음
error 🟡스캔 중 예기치 않은 오류