Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
POC-WP-XSS2Shell-CVE-2026-64638 — PoC funcional de CVE-2026-64638 (XSS2Shell): cadena pre-auth XSS a RCE en WordPress Core. Laboratorio Docker + servidor atacante Python + análisis técnico y mitigación. | Kitploit
Herramientas/GitHubGitHub/686f6c61/poc-wp-xss2shell-cve-2026-64638
Análisis de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebAprendizaje y EducaciónDesarrollo de PayloadsLabs y Práctica
GitHub686f6c61/poc-wp-xss2shell-cve-2026-64638

POC-WP-XSS2Shell-CVE-2026-64638

PoC funcional de CVE-2026-64638 (XSS2Shell): cadena pre-auth XSS a RCE en WordPress Core. Laboratorio Docker + servidor atacante Python + análisis técnico y mitigación.

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir
Ver Repositorio
1hace 13 díasAún no revisado

XSS2Shell — PoC de CVE-2026-64638

Proof of Concept educativa de la cadena XSS2Shell (CVE-2026-64638), vulnerabilidad pre-autenticación XSS → RCE en WordPress Core descubierta de forma autónoma por pwn.ai y divulgada el 7 de agosto de 2026.


Tabla de contenidos

  1. Resumen ejecutivo
  2. Aviso legal
  3. Arquitectura de la cadena
  4. Requisitos
  5. Estructura del repositorio
  6. Guía rápida de uso
  7. Verificación de la explotación
  8. Documentación adicional

Resumen ejecutivo

CVE-2026-64638 es una vulnerabilidad de tipo cross-site scripting (XSS) reflejado, pre-autenticación, en la pantalla de inicio de sesión de WordPress (wp-login.php). Afecta a todas las versiones de WordPress bajo mantenimiento anteriores a la 7.0.3, publicada el 6 de agosto de 2026 como security release de emergencia. Se le asignó un CVSS v4.0 de 8.9.

La cadena bautizada XSS2Shell demuestra cómo, partiendo únicamente de un intento de login fallido con un username manipulado, un atacante puede:

  1. Inyectar elementos DOM vivos en la página de login aprovechando una discrepancia entre dos analizadores sintácticos de PHP (strip_tags) y de WordPress (wp_kses_post).
  2. Secuestrar el flujo de ejecución del JavaScript propio de WordPress (user-profile.js) para realizar una petición REST JSONP al propio origen.
  3. Convertir la respuesta JSONP en ejecución de JavaScript en el origen de WordPress mediante jQuery.globalEval().
  4. Encadenar todo ello con la técnica Same Origin Method Execution (SOME) de Paulos Yibelo (2022) para hacer click automáticamente en el botón de aprobación de Application Passwords dentro de la sesión autenticada de un administrador.
  5. Capturar la credencial Application Password resultante, publicar una página con JavaScript malicioso y, finalmente, subir un plugin en formato ZIP que ejecuta PHP en el servidor.

El resultado es ejecución remota de código (RCE) en el servidor WordPress, bajo el usuario del proceso web (típicamente www-data), partiendo de un único click del administrador sobre un enlace controlado por el atacante.


Aviso legal

Este repositorio contiene material estrictamente educativo y defensivo.

  • Propósito: demostrar la cadena de explotación con fines de formación, auditoría propia y validación de patches.
  • Uso autorizado: ejecútalo únicamente contra instalaciones de WordPress que te pertenezcan o sobre las que dispongas de autorización escrita explícita.
  • Prohibido: cualquier uso contra sistemas de terceros sin consentimiento. El autor del repositorio no se responsabiliza del uso indebido del material aquí incluido.
  • Responsabilidad: el operador es el único responsable del cumplimiento de la legislación aplicable (LOPD/RGPD en España, CFAA en EE. UU., etc.).

La PoC se entrega con un entorno Docker autocontenido cuya única finalidad es servir como blanco local y reproducible.


Arquitectura de la cadena

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       │
└─────────────────────────────────────────────────────────────────────┘

Requisitos

La PoC está construida para ejecutarse en macOS o Linux con:

  • Docker 24+ y Docker Compose v2 (para el blanco local).
  • Python 3.9+ (para el orquestador opcional).
  • PHP 8.1+ con extensión zip (para construir el payload manualmente, opcional; el ZIP ya construido se incluye en payload/).
  • Un navegador moderno basado en Chromium o Firefox.

No es necesario instalar WordPress manualmente: el docker-compose.yml levanta un WordPress 7.0.2 vulnerable (la última versión anterior al parche) junto con MariaDB.


Estructura del repositorio

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

Guía rápida de uso

1. Levantar el blanco (WordPress 7.0.2 vulnerable)

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

WordPress quedará accesible en http://localhost:8080. Sigue el asistente de instalación y crea un usuario administrador (por ejemplo admin / admin-password).

El Dockerfile ancla la imagen a wordpress:7.0.2-php8.2-apache, que es la última versión anterior al parche 7.0.3.

2. Levantar la infraestructura del atacante

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

El servidor atacante escucha en http://localhost:9000 y expone:

  • / → index.html (la página cebo).
  • /callback.php → receptor de la Application Password.

3. Simular el click del administrador

  1. Inicia sesión como administrador en http://localhost:8080/wp-admin.
  2. En la misma sesión del navegador, abre una nueva pestaña y visita http://localhost:9000/.
  3. Verás un único botón «Approve Application». Al pulsarlo se ejecuta toda la cadena de forma automática.

4. Observar la captura de credenciales

En el terminal donde corre server.py aparecerá una línea del tipo:

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

La credencial se guarda también en attacker/captured_credentials.txt.

5. Ver el RCE

Tras unos segundos, el orquestador de index.html habrá:

  • Publicado una página que ejecuta JavaScript en el origen de WordPress.
  • Subido el plugin payload.zip a wp-content/plugins/payload/.

Verifica la ejecución de código con:

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

Una cabecera Hacked: true y un cuerpo JSON confirman el RCE.


Verificación de la explotación

Una vez completada la cadena, los siguientes endpoints sirven de evidencia:

RecursoEvidencia esperada
GET /wp-content/plugins/payload/shell.phpCabecera Hacked: true + JSON {"rce":true,"user":"www-data"}

Documentación adicional

  • docs/ANALISIS.md — Análisis técnico detallado de cada fase de la cadena, con referencias al código fuente de WordPress.
  • docs/MITIGACION.md — Mitigaciones recomendadas, hardening y verificación del patch 7.0.3.

Créditos

  • Investigación original y divulgación: pwn.ai — https://pwn.ai/blog/xss2shell
  • Técnica SOME subyacente: Paulos Yibelo (2022), publicada en el blog de pwn.ai y nominada a Top Web Hacking Techniques de 2022.
  • PoC y empaquetado de este repositorio: trabajo propio con fines educativos.

Licencia

Distribuido bajo licencia MIT. Consulta el archivo LICENSE para más detalles.

Descargar herramienta
attacker/captured_credentials.txtApplication Password capturada
wp-admin → Aplicaciones → Contraseñas de aplicaciónUna nueva entrada llamada «SomeApp»