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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
POC-WP-XSS2Shell-CVE-2026-64638 — CVE-2026-64638 (XSS2Shell)의 기능적 PoC: WordPress Core의 사전 인증 XSS에서 RCE로 이어지는 체인. Docker 실습 환경 + Python 공격자 서버 + 기술 분석 및 완화 조치. | Kitploit
도구/GitHubGitHub/686f6c61/poc-wp-xss2shell-cve-2026-64638
Vulnerability AnalysisExploitationWeb Application ExploitationLearning & EducationPayload DevelopmentLabs & Practice
GitHub686f6c61/poc-wp-xss2shell-cve-2026-64638

POC-WP-XSS2Shell-CVE-2026-64638

CVE-2026-64638 (XSS2Shell)의 기능적 PoC: WordPress Core의 사전 인증 XSS에서 RCE로 이어지는 체인. Docker 실습 환경 + Python 공격자 서버 + 기술 분석 및 완화 조치.

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
저장소 보기
113일 전아직 검토되지 않음

XSS2Shell — CVE-2026-64638 PoC

XSS2Shell(CVE-2026-64638) 체인에 대한 교육용 Proof of Concept으로, pwn.ai가 독자적으로 발견하여 2026년 8월 7일에 공개한 WordPress Core의 사전 인증(pre-authentication) XSS → RCE 취약점입니다.


목차

  1. 요약
  2. 법적 고지
  3. 체인 구조
  4. 요구 사항
  5. 저장소 구조
  6. 빠른 사용 가이드
  7. 익스플로잇 검증
  8. 추가 문서

요약

CVE-2026-64638은 WordPress 로그인 화면(wp-login.php)의 사전 인증 반사형 cross-site scripting(XSS) 취약점입니다. 2026년 8월 6일에 긴급 보안 릴리스로 공개된 7.0.3 이전의 모든 지원 버전의 WordPress에 영향을 미칩니다. CVSS v4.0 점수는 8.9입니다.

XSS2Shell이라는 이름의 이 체인은 조작된 username으로 실패한 login 시도만으로도 공격자가 다음을 수행할 수 있음을 보여줍니다:

  1. PHP(strip_tags)와 WordPress(wp_kses_post)의 두 구문 분석기 간의 불일치를 이용하여 login 페이지에 활성 DOM 요소를 주입.
  2. WordPress 자체 JavaScript(user-profile.js)의 실행 흐름을 가로채 동일 출처로 REST JSONP 요청을 수행.
  3. jQuery.globalEval()을 통해 JSONP 응답을 WordPress 출처에서의 JavaScript 실행으로 변환.
  4. Paulos Yibelo(2022)의 Same Origin Method Execution(SOME) 기법과 연계하여 관리자 인증 세션 내에서 Application Passwords 승인 버튼을 자동으로 click.
  5. 생성된 Application Password 자격 증명을 탈취하고 악성 JavaScript가 포함된 페이지를 게시한 후, 최종적으로 서버에서 PHP를 실행하는 ZIP 형식의 plugin을 업로드.

결과적으로 공격자가 제어하는 링크에 대한 관리자의 단 한 번의 click에서 시작하여 WordPress 서버에서 web 프로세스 사용자(일반적으로 www-data)의 권한으로 원격 코드 실행(RCE)이 이루어집니다.


법적 고지

이 저장소는 엄격히 교육 및 방어 목적의 자료를 포함합니다.

  • 목적: 교육, 자체 감사 및 patch 검증을 목적으로 익스플로잇 체인을 시연.
  • 승인된 사용: 소유한 WordPress 설치 또는 명시적 서면 승인을 받은 설치에 대해서만 독점적으로 실행.
  • 금지 사항: 동의 없이 제3자 시스템을 대상으로 한 모든 사용. 저장소 작성자는 여기에 포함된 자료의 오용에 대해 책임을 지지 않습니다.
  • 책임: 운영자는 적용 가능한 법률(스페인의 LOPD/RGPD, 미국의 CFAA 등)을 준수할 유일한 책임을 집니다.

PoC는 로컬에서 재현 가능한 공격 대상 역할을 하는 자체 포함 Docker 환경과 함께 제공됩니다.


체인 구조

root@kitploit:~
┌─────────────────────────────────────────────────────────────────────┐
│  1. XSS pre-auth en wp-login.php                                    │
│     log=< area id=ajaxurl href=/?rest_route=/&_jsonp=...>           │
│     (discrepancia strip_tags ↔ wp_kses_post)                        │
└──────────────────────────────────────────┬──────────────────────────┘
                                           │
                                           ▼
┌─────────────────────────────────────────────────────────────────────┐
│  2. user-profile.js dispara .trigger('click')                       │
│     DOM clobbering de ajaxurl → petición POST al origen             │
└──────────────────────────────────────────┬──────────────────────────┘
                                           │
                                           ▼
┌─────────────────────────────────────────────────────────────────────┐
│  3. REST JSONP responde application/javascript                      │
│     jQuery.globalEval() ejecuta el callback en el origen WP         │
└──────────────────────────────────────────┬──────────────────────────┘
                                           │  callback = window.opener
                                           │            .approve.click
                                           ▼
┌─────────────────────────────────────────────────────────────────────┐
│  4. SOME: click() cruza la frontera opener→admin                    │
│     authorize-application.php#approve se pulsa en sesión admin      │
└──────────────────────────────────────────┬──────────────────────────┘
                                           │
                                           ▼
┌─────────────────────────────────────────────────────────────────────┐
│  5. WP crea Application Password → redirige a success_url           │
│     El atacante captura user_login + password en callback.php       │
└──────────────────────────────────────────┬──────────────────────────┘
                                           │  HTTP Basic REST
                                           ▼
┌─────────────────────────────────────────────────────────────────────┐
│  6. POST /wp-json/wp/v2/pages  → publica página con <script>        │
│     El admin visita la página → JS en origen WP con sesión admin    │
└──────────────────────────────────────────┬──────────────────────────┘
                                           │
                                           ▼
┌─────────────────────────────────────────────────────────────────────┐
│  7. fetch update.php?action=upload-plugin  → sube payload.zip       │
│     PHP del plugin es accesible directamente sin activarlo          │
└──────────────────────────────────────────┬──────────────────────────┘
                                           │
                                           ▼
┌─────────────────────────────────────────────────────────────────────┐
│  8. RCE confirmada: GET /wp-content/plugins/payload/shell.php       │
└─────────────────────────────────────────────────────────────────────┘

요구 사항

PoC는 다음 환경의 macOS 또는 Linux에서 실행되도록 제작되었습니다:

  • Docker 24+ 및 Docker Compose v2(로컬 공격 대상용).
  • Python 3.9+(선택 사항인 오케스트레이터용).
  • PHP 8.1+ 및 zip 확장(payload 수동 구축용, 선택 사항이며 이미 빌드된 ZIP은 payload/에 포함).
  • Chromium 또는 Firefox 기반의 최신 브라우저.

WordPress를 수동으로 설치할 필요는 없습니다: docker-compose.yml이 MariaDB와 함께 취약한 WordPress 7.0.2(패치 이전 마지막 버전)를 실행합니다.


저장소 구조

root@kitploit:~
POC XSS2Shell (CVE-2026-64638)/
├── README.md                       ← Este archivo
├── docker-compose.yml              ← Blanco: WordPress 7.0.2 + MariaDB
├── .env.example                    ← Variables de configuración
├── exploit.py                      ← Orquestador en Python (opcional)
├── attacker/                       ← Infraestructura del atacante
│   ├── index.html                  ← Página cebo con la cadena SOME
│   ├── callback.php                ← Receptor de la Application Password
│   └── server.py                   ← Servidor estático + PHP embebido
├── payload/                        ← Plugin ZIP malicioso
│   ├── build_payload.py            ← Generador del ZIP
│   ├── shell.php                   ← Webshell mínimo
│   └── payload.zip                 ← ZIP preconstruido (listo para usar)
└── docs/
    ├── ANALISIS.md                 ← Análisis técnico detallado
    └── MITIGACION.md               ← Guía de mitigación y hardening

빠른 사용 가이드

1. 공격 대상 실행(취약한 WordPress 7.0.2)

root@kitploit:~
cp .env.example .env
docker compose up -d

WordPress는 http://localhost:8080에서 접근할 수 있습니다. 설치 마법사를 따라 관리자 사용자(예: admin / admin-password)를 만드세요.

Dockerfile은 이미지를 패치 7.0.3 이전의 마지막 버전인 wordpress:7.0.2-php8.2-apache에 고정합니다.

2. 공격자 인프라 실행

root@kitploit:~
# En otro terminal, dentro de attacker/
python3 server.py

공격자 서버는 http://localhost:9000에서 수신 대기하며 다음을 노출합니다:

  • / → index.html(미끼 페이지).
  • /callback.php → Application Password 수신기.

3. 관리자의 click 시뮬레이션

  1. http://localhost:8080/wp-admin에서 관리자로 로그인.
  2. 동일한 브라우저 세션에서 새 탭을 열고 http://localhost:9000/에 접속.
  3. «Approve Application»이라는 단일 버튼이 표시됩니다. 이 버튼을 누르면 전체 체인이 자동으로 실행됩니다.

4. 자격 증명 탈취 확인

server.py가 실행 중인 터미널에 다음과 같은 줄이 나타납니다:

root@kitploit:~
[+] Application Password recibida para el usuario 'admin':
    XXXX XXXX XXXX XXXX XXXX XXXX

자격 증명은 attacker/captured_credentials.txt에도 저장됩니다.

5. RCE 확인

몇 초 후, index.html의 오케스트레이터가 다음을 수행했을 것입니다:

  • WordPress 출처에서 JavaScript를 실행하는 페이지를 게시.
  • payload.zip 플러그인을 wp-content/plugins/payload/에 업로드.

다음 명령으로 코드 실행을 확인하세요:

root@kitploit:~
curl -sI http://localhost:8080/wp-content/plugins/payload/shell.php

Hacked: true 헤더와 JSON 본문이 RCE를 확인합니다.


익스플로잇 검증

체인이 완료되면 다음 endpoints가 증거로 사용됩니다:

리소스예상 증거
GET /wp-content/plugins/payload/shell.phpHacked: true 헤더 + JSON {"rce":true,"user":"www-data"}
attacker/captured_credentials.txt캡처된 Application Password

추가 문서

  • docs/ANALISIS.md — WordPress 소스 코드를 참조하는 체인의 각 단계에 대한 상세 기술 분석.
  • docs/MITIGACION.md — 권장 완화 조치, hardening 및 7.0.3 patch 검증.

크레딧

  • 원본 연구 및 공개: pwn.ai — https://pwn.ai/blog/xss2shell
  • 기반이 된 SOME 기법: Paulos Yibelo(2022), pwn.ai 블로그에 게시되었으며 2022년 Top Web Hacking Techniques에 후보로 지명.
  • 이 저장소의 PoC 및 패키징: 교육 목적의 자체 작업.

라이선스

MIT 라이선스로 배포됩니다. 자세한 내용은 LICENSE 파일을 참조하세요.

도구 다운로드
wp-admin → 애플리케이션 → 애플리케이션 비밀번호
«SomeApp»이라는 새 항목