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
wp2shell-PoC — Prueba de concepto de cadena RCE para CVE-2026-63030 y CVE-2026-60137 | Kitploit
Herramientas/GitHubGitHub/sowarma/wp2shell-poc
Análisis de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebExfiltración de DatosPost-ExplotaciónSeguridad WebPruebas de PenetraciónAprendizaje y EducaciónSeguridad de APIs
GitHubsowarma/wp2shell-poc

wp2shell-PoC

Prueba de concepto de cadena RCE para CVE-2026-63030 y CVE-2026-60137

35123hace 7 díasAún no revisado

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

wp2shell-PoC

⚠ Esta herramienta se crea únicamente con fines educativos o de bug bounty. El uso no autorizado fuera de entornos controlados está estrictamente prohibido.

Descripción general

Prueba de concepto de la cadena de vulnerabilidades wp2shell que afecta a WordPress Core, combinando CVE-2026-63030 y CVE-2026-60137. El proyecto demuestra la interacción entre la vulnerabilidad de confusión de rutas del endpoint REST API Batch y una inyección SQL en WP_Query, lo que resulta en una vía no autenticada hacia el compromiso total de WordPress y la ejecución remota de código (RCE).

Lee el aviso completo aquí

Cómo funciona

wp2shell es una cadena RCE de preautenticación en el núcleo de WordPress que combina CVE-2026-63030 (confusión de rutas en el endpoint REST batch) y CVE-2026-60137 (inyección SQL en WP_Query).

La confusión de rutas: /wp-json/batch/v1 procesa múltiples subpeticiones mediante matrices paralelas $matches y $validation indexadas por posición. Una subpetición con una ruta malformada (p. ej., http://:) se añade a $validation pero no a $matches debido a una sentencia continue, desincronizando las matrices. Las peticiones posteriores se despachan bajo el manejador destinado a la siguiente petición, omitiendo la validación del esquema y las comprobaciones de permisos.

La inyección SQL: Dos llamadas batch anidadas explotan esto. El batch externo omite la lista blanca de métodos (que normalmente bloquea GET). El batch interno entrega una cadena escalar author_exclude a GET /wp/v2/posts; la desincronización la enruta más allá de la validación, y WP_Query interpola la cadena sin sanitizar directamente en SQL, produciendo una inyección ciega basada en UNION.

Envenenamiento de caché: La SQLi devuelve objetos WP_Post falsificados, que WordPress almacena en caché en memoria. Estas publicaciones falsas contienen shortcodes [embed] que hacen que WordPress cree filas reales de oembed_cache en la base de datos a partir de las referencias falsas.

Escalada de changeset: Usando la SQLi, el atacante falsifica en memoria una publicación customize_changeset con "user_id": 1 en su JSON. Un gadget de detección de ciclos activa wp_update_post() sin sobrescribir post_content, preservando la carga útil del atacante. Aplicar el changeset asume temporalmente la identidad del administrador.

Reentrada de hooks: Una publicación fabricada con estado parse y tipo request dispara el hook parse_request, reproduciendo toda la petición batch con el rol de administrador asumido. Esta vez, una subpetición POST /wp/v2/users tiene éxito, creando una nueva cuenta de administrador.

Ejecución de código: El atacante inicia sesión como el administrador creado y sube un plugin malicioso para ejecutar comandos arbitrarios.

Versiones afectadas

VersiónEstado
WordPress 6.9.0 – 6.9.4Vulnerable
WordPress 7.0.0 – 7.0.1Vulnerable
WordPress 6.9.5Corregida
WordPress 7.0.2+Corregida

Uso

Para usar este PoC, el único requisito es Python 3.8+.

Ejecútalo desde el directorio del repositorio para realizar una comprobación de vulnerabilidad:

root@kitploit:~
wp2shell.py http://victim.com

Modo de comprobación (predeterminado)

Realiza una comprobación única de vulnerabilidad. Envía una sonda benigna de marcador batch que detecta el bug de confusión de rutas sin ejecutar cargas útiles de SQLi. Un objetivo vulnerable devuelve HTTP 207 con el patrón de error parse_path_failed, block_cannot_read y rest_batch_not_allowed.

Usa --confirm-sqli para enviar también una carga útil activa de confirmación de SQLi. La confirmación intenta primero la reflexión UNION y luego recurre a sondas basadas en tiempos.

Comprobar un único objetivo (modo predeterminado)

root@kitploit:~
wp2shell.py http://target.com

Comprobar con modo explícito

root@kitploit:~
Check with explicit mode
wp2shell.py http://target.com --check

Comprobar con confirmación de SQLi

root@kitploit:~
wp2shell.py http://target.com --check --confirm-sqli

Modo de lectura - Extraer datos mediante inyección SQL

Extrae datos de la base de datos utilizando la inyección SQL de preautenticación. Por defecto usa --technique auto, que prueba los métodos disponibles en este orden:

  • union - falsifica una fila WP_Post falsa mediante UNION y lee su título de vuelta desde la respuesta REST como ||HEX(value)||. Una petición por valor. El más rápido.
  • error - usa EXTRACTVALUE/UPDATEXML para filtrar ~15 bytes por petición. Funciona cuando el objetivo refleja errores de MySQL (p. ej., WP_DEBUG_DISPLAY activado).
  • blind - búsqueda binaria booleana, ~8 peticiones por carácter. Lee la cabecera X-WP-Total como señal de verdadero/falso. Funciona incluso cuando no se reflejan datos.

Fuerza una técnica específica con --technique union|error|blind. Estas rutas de lectura son de solo lectura y no escriben en la base de datos.

Huella del servidor (consulta predeterminada)

root@kitploit:~
wp2shell.py http://target.com --read

Volcar nombres de usuario y hashes de contraseñas

root@kitploit:~
wp2shell.py http://target.com --read --preset users

Consulta SQL personalizada

root@kitploit:~
wp2shell.py http://target.com --read --query "SELECT @@version"

Forzar técnica ciega

root@kitploit:~
wp2shell.py http://target.com --read --technique blind --query "SELECT user_login FROM wp_users LIMIT 1"

Extraer con técnica basada en errores

root@kitploit:~
wp2shell.py http://target.com --read --technique error --query "SELECT user_pass FROM wp_users LIMIT 1"

Modo shell

Ejecuta comandos en el servidor objetivo. Funciona en dos modos:

Con credenciales (inicia sesión como administrador existente y sube el shell del plugin):

Ejecutar comando específico

root@kitploit:~
wp2shell.py http://target.com --shell --user admin --password '<recovered>' --cmd id

Shell interactivo

root@kitploit:~
wp2shell.py http://target.com --shell --user admin --password '<recovered>' --interactive
Sin credenciales (RCE de preautenticación: ejecuta el puente completo SQLi→admin, inicia sesión como administrador generado y luego sube el shell del plugin):

Ejecutar un solo comando

root@kitploit:~
wp2shell.py http://target.com --shell --cmd id

Shell interactivo

root@kitploit:~
wp2shell.py http://target.com --shell --interactive

El webshell del plugin se sube con una ruta aleatoria y un token por ejecución. El webshell subido se elimina automáticamente. Cuando el puente de preautenticación crea un administrador, esa cuenta generada se elimina automáticamente después de que la sesión de shell termine.

Lista de todas las banderas:

Referencias:

  1. https://slcyber.io/research-center/exploit-brokers-pay-500000-for-a-wordpress-rce-i-found-one-with-gpt5-6/
  2. https://www.picussecurity.com/resource/blog/cve-2026-63030-and-cve-2026-60137-wp2shell-wordpress-rce-explained

Aviso legal

Esta herramienta se crea únicamente con fines educativos o de bug bounty. El uso no autorizado fuera de entornos controlados está estrictamente prohibido.

Descargar herramienta
BanderasDescripción
--checkEjecuta la comprobación de vulnerabilidad (modo predeterminado si no se especifica otro modo)
--readExtrae datos mediante inyección SQL
--shellEjecuta comandos en el servidor
--queryConsulta SQL personalizada para el modo de lectura
--presetConjunto de consultas predefinido (users, config, versions)
--techniqueTécnica de extracción SQLi: union, error, blind o auto (predeterminado)
--confirm-sqliEnvía la carga útil de confirmación de SQLi después de la comprobación
--cmdComando a ejecutar en modo shell (predeterminado: id)
--interactive, -iModo shell interactivo
--userNombre de usuario administrador para el shell autenticado
--passwordContraseña de administrador para el shell autenticado
--proxyProxy HTTP/HTTPS (p. ej., http://127.0.0.1:8080)
--timeoutTiempo de espera de la petición en segundos (predeterminado: 30)
--verbose, -vSalida verbosa