
Ferramenta de auditoria de três vulnerabilidades do RAGFlow (CVE-2026-28797 / CVE-2026-24770 / CVE-2025-69286)
Ferramenta de auditoria de três vulnerabilidades do RAGFlow (CVE-2026-28797 / CVE-2026-24770 / CVE-2025-69286)
Somente biblioteca padrão do Python, sem dependências de terceiros, executável diretamente com Python 3.8+.
python3 ragflow-audit.py [-h] {ssti,zipslip,apikey} ...
python3 ragflow-audit.py ssti --url http://TARGET:9380 --auth "AUTH_HEADER" [--component StringTransform|Message] [--newline]
--url: endereço web do RAGFlow--auth: valor completo do cabeçalho Authorization da resposta de login--component: componente alvo, padrão StringTransform--newline: usa quebra de linha no payload para contornar (contorna a detecção regex _is_jinjia2)Fluxo: constrói canvas DSL malicioso -> POST /v1/canvas/set cria o canvas -> POST /v1/canvas/completion dispara a execução -> verifica uid= na saída para determinar se o RCE foi bem-sucedido.
python3 ragflow-audit.py zipslip --zip evil.zip [--extract-dir /tmp/out]
Verifica offline as entradas zip e sinaliza três tipos de perigo: path traversal (..), caminhos absolutos e links simbólicos.
python3 ragflow-audit.py apikey --beta "分享链接token" --node "攻击者user_id后12位"
Recupera o uuid1 original a partir do token beta do link de compartilhamento público, enumera o time_low e gera tokens candidatos. Na exploração real, chame as APIs que exigem autenticação com cada token candidato (200 = acerto / 401 = continue).
As credenciais de login do RAGFlow ficam no cabeçalho Authorization da resposta de login, não no access_token do body. O access_token do body é apenas um UUID e chamadas à API retornam 401.
curl -i -X POST http://TARGET:9380/v1/user/login \
-H 'Content-Type: application/json' \
-d '{"email":"[email protected]","password":"<RSA加密后的密码>"}'
Use o valor do cabeçalho authorization: da resposta como parâmetro --auth.
Atenção: a senha de registro/login precisa ser criptografada com RSA primeiro (a chave pública está em /ragflow/conf/public.pem, PKCS1_v1_5, e o objeto criptografado é o texto base64 resultante); enviar a senha em texto puro diretamente causará erro.
| CVE | Tipo | Versões afetadas | Versão corrigida |
|---|---|---|---|
| CVE-2026-28797 | SSTI (componentes StringTransform/Message) | < 0.25.0 (NVD: 0.24.0 e anteriores) | 0.25.0 (correção de sandbox, incorporada em 2026-03-02) |
| CVE-2026-24770 | Zip Slip no parser MinerU | < 0.23.1 | 0.23.1 |
| CVE-2025-69286 | Chave de API derivável (segredo uuid1 + tenant_id) | < 0.22.0 | 0.22.0 |
Esta ferramenta destina-se exclusivamente a testes de segurança autorizados e pesquisa de vulnerabilidades. O uso desta ferramenta em sistemas de terceiros sem autorização é de inteira responsabilidade do usuário.