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
Herramientas/GitHubGitHub/arvindear/wp2shell-poc
Análisis de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebPost-ExplotaciónSeguridad WebPruebas de PenetraciónAprendizaje y EducaciónHerramienta de Acceso RemotoDesarrollo de Payloads
GitHubarvindear/wp2shell-poc

wp2shell-PoC

CVE-2026-63030 y CVE-2026-60137 cadena RCE prueba de concepto

77291hace 9h 57mAún no revisado
Ver Repositorio

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

wp2shell-PoC

⚠ Esta herramienta ha sido creada únicamente con fines educativos o de bug bounty. Queda estrictamente prohibido su uso no autorizado fuera de entornos controlados.

Descripción general

Prueba de concepto para 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 de la API REST Batch y una inyección SQL en WP_Query, lo que resulta en una ruta no autenticada hacia el compromiso total de WordPress y la ejecución remota de código (RCE).

Lea el aviso completo aquí

Cómo funciona

wp2shell es una cadena de RCE 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 arrays paralelos $matches y $validation indexados por posición. Una subpetición con una ruta malformada (p. ej., http://:) se añade a $validation pero no a debido a una sentencia , lo que desincroniza los arrays. Las peticiones posteriores se despachan bajo el manejador destinado a la petición, eludiendo la validación de esquema y las comprobaciones de permisos.

Descargar herramienta
$matches
continue
siguiente

La inyección SQL: Dos llamadas batch anidadas explotan esto. El batch externo elude la lista de métodos permitidos (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 no saneada 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 mediante changeset: Usando la SQLi, el atacante falsifica una publicación customize_changeset en memoria con "user_id": 1 en su JSON. Un gadget de detección de ciclos activa wp_update_post() sin sobrescribir post_content, preservando el payload 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útelo desde el directorio del repositorio para realizar una comprobación de vulnerabilidad:

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

Modo Check (predeterminado)

Realiza una única comprobación de vulnerabilidad. Envía una sonda de marcador batch benigna que detecta el fallo de confusión de rutas sin ejecutar payloads 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.

Use --confirm-sqli para enviar también un payload activo de confirmación de SQLi. La confirmación intenta primero la reflexión UNION, y luego recurre a sondas basadas en temporización.

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 Read - Extraer datos mediante inyección SQL

Extrae datos de la base de datos usando la inyección SQL 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 refleja ningún dato.

Fuerce 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 logins 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 blind

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 un shell de plugin):

Ejecutar un 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 preautenticación - ejecuta el puente completo SQLi→admin, inicia sesión como el administrador generado y luego sube el shell de plugin):

Ejecutar un único 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 preautenticación crea un administrador, esa cuenta generada se elimina automáticamente después de que finaliza la sesión de shell.

Lista de todos los flags:

FlagDescripción
--checkEjecutar comprobación de vulnerabilidad (modo predeterminado si no se especifica otro modo)
--readExtraer datos mediante inyección SQL
--shellEjecutar comandos en el servidor
--queryConsulta SQL personalizada para el modo read
--presetPreset de consulta predefinido (users, config, versions)
--techniqueTécnica de extracción SQLi: union, error, blind o auto (predeterminado)
--confirm-sqliEnviar payload 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 shell autenticado
--passwordContraseña de administrador para 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 detallada

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

Descargo de responsabilidad

Esta herramienta ha sido creada únicamente con fines educativos o de bug bounty. Queda estrictamente prohibido su uso no autorizado fuera de entornos controlados.