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 공격자 서버 + 기술 분석 및 완화 조치.

저장소 보기
121개월 전아직 검토되지 않음

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

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)의 두 구문 분석기 간의 불일치를 이용하여 페이지에 활성 DOM 요소를 주입.
login
  • WordPress 자체 JavaScript(user-profile.js)의 실행 흐름을 가로채 동일 출처로 REST JSONP 요청을 수행.
  • jQuery.globalEval()을 통해 JSONP 응답을 WordPress 출처에서의 JavaScript 실행으로 변환.
  • Paulos Yibelo(2022)의 Same Origin Method Execution(SOME) 기법과 연계하여 관리자 인증 세션 내에서 Application Passwords 승인 버튼을 자동으로 click.
  • 생성된 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
    wp-admin → 애플리케이션 → 애플리케이션 비밀번호«SomeApp»이라는 새 항목

    추가 문서

    • 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 파일을 참조하세요.

    도구 다운로드