
RAGFlow Strumento di audit per tre vulnerabilità (CVE-2026-28797 / CVE-2026-24770 / CVE-2025-69286)
Strumento di audit per tre vulnerabilità RAGFlow (CVE-2026-28797 / CVE-2026-24770 / CVE-2025-69286)
Solo libreria standard Python, nessuna dipendenza di terze parti, Python 3.8+ eseguibile direttamente.
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: indirizzo web di RAGFlow--auth: valore completo dell'header Authorization dalla risposta di login--component: componente target, default StringTransform--newline: usa newline per bypassare il payload (bypassa il rilevamento regex _is_jinjia2)Flusso: costruisce un canvas DSL malevolo -> POST /v1/canvas/set crea il canvas -> POST /v1/canvas/completion attiva l'esecuzione -> confronta uid= nell'output per determinare il successo della RCE.
python3 ragflow-audit.py zipslip --zip evil.zip [--extract-dir /tmp/out]
Controlla offline le voci zip, segnalando tre tipi di pericolo: path traversal (..), percorsi assoluti, link simbolici.
python3 ragflow-audit.py apikey --beta "分享链接token" --node "攻击者user_id后12位"
Recupera il subject uuid1 dal token beta del link di condivisione pubblico, enumera time_low e produce token candidati. Nell'exploit reale, per ogni token candidato si chiamano le API che richiedono autenticazione (200 successo / 401 continua).
Le credenziali di login di RAGFlow si trovano nell'header Authorization della risposta di login, non nel access_token nel body. L'access_token nel body è solo un UUID; chiamare le API restituisce 401.
curl -i -X POST http://TARGET:9380/v1/user/login \
-H 'Content-Type: application/json' \
-d '{"email":"[email protected]","password":"<RSA加密后的密码>"}'
Prendi il valore dell'header authorization: come parametro --auth.
Nota: la password per registrazione/login deve essere prima cifrata con RSA (la chiave pubblica è in /ragflow/conf/public.pem, PKCS1_v1_5, l'oggetto cifrato è il testo in chiaro dopo base64); passare direttamente la password in chiaro genera un errore.
Questo strumento è destinato esclusivamente a test di sicurezza autorizzati e ricerca sulle vulnerabilità. L'uso non autorizzato di questo strumento su sistemi altrui è di esclusiva responsabilità dell'utilizzatore.
| CVE | Tipo | Versioni interessate | Versione corretta |
|---|
| CVE-2026-28797 | SSTI (componenti StringTransform/Message) | < 0.25.0 (NVD: 0.24.0 and prior) | 0.25.0 (fix sandbox, mergiato il 2026-03-02) |
| CVE-2026-24770 | Parser MinerU Zip Slip | < 0.23.1 | 0.23.1 |
| CVE-2025-69286 | Chiave API derivabile (segreto uuid1 + tenant_id) | < 0.22.0 | 0.22.0 |