
RAGFlow Drei-Schwachstellen-Audit-Tool (CVE-2026-28797 / CVE-2026-24770 / CVE-2025-69286)
RAGFlow-Drei-Lücken-Audit-Tool (CVE-2026-28797 / CVE-2026-24770 / CVE-2025-69286)
Reine Python-Standardbibliothek, keine Drittanbieter-Abhängigkeiten, direkt mit Python 3.8+ ausführbar.
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: RAGFlow-Webadresse--auth: Vollständiger Wert des Authorization-Headers aus der Login-Antwort--component: Zielkomponente, Standard ist StringTransform--newline: Verwendet einen Zeilenumbruch zum Umgehen des Payloads (umgeht die _is_jinjia2-Regex-Erkennung)Ablauf: Schadhaftes Canvas-DSL erstellen -> POST /v1/canvas/set zum Erstellen des Canvas -> POST /v1/canvas/completion zum Auslösen der Ausführung -> Übereinstimmung mit uid= in der Ausgabe zur Bestätigung des RCE-Erfolgs.
python3 ragflow-audit.py zipslip --zip evil.zip [--extract-dir /tmp/out]
Offline-Prüfung von Zip-Einträgen, kennzeichnet drei Gefahrenkategorien: Pfad-Traversierung (..), absolute Pfade, symbolische Links.
python3 ragflow-audit.py apikey --beta "Freigabe-Link-Token" --node "letzte 12 Zeichen der Angreifer-user_id"
Stellt aus dem Beta-Token eines öffentlichen Freigabe-Links den uuid1-Host wieder her, enumeriert time_low und gibt Kandidaten-Token aus. Bei echter Ausnutzung wird für jedes Kandidaten-Token einzeln eine authentifizierungspflichtige API aufgerufen (200 Treffer / 401 weiter).
Die Anmeldeinformationen von RAGFlow befinden sich im Authorization-Header der Login-Antwort, nicht im access_token im Body. Der access_token im Body ist nur eine UUID; API-Aufrufe führen zu 401.
curl -i -X POST http://TARGET:9380/v1/user/login \
-H 'Content-Type: application/json' \
-d '{"email":"[email protected]","password":"<RSA-verschlüsseltes Passwort>"}'
Den Wert aus dem Antwort-Header authorization: als --auth-Parameter verwenden.
Hinweis: Das Passwort für Registrierung/Login muss zuerst RSA-verschlüsselt werden (öffentlicher Schlüssel unter /ragflow/conf/public.pem, PKCS1_v1_5, Verschlüsselungsobjekt ist der base64-codierte Klartext). Die direkte Übergabe des Klartext-Passworts führt zu einem Fehler.
Dieses Tool dient ausschließlich autorisierten Sicherheitstests und der Schwachstellenforschung. Die Folgen der unbefugten Nutzung dieses Tools gegen fremde Systeme liegen in der alleinigen Verantwortung des Nutzers.
| CVE | Typ | Betroffene Versionen | Behobene Version |
|---|
| CVE-2026-28797 | SSTI (StringTransform/Message-Komponenten) | < 0.25.0 (NVD: 0.24.0 and prior) | 0.25.0 (Sandbox-Fix, eingeführt am 2026-03-02) |
| CVE-2026-24770 | MinerU-Parser Zip Slip | < 0.23.1 | 0.23.1 |
| CVE-2025-69286 | API-Key ableitbar (uuid1 + tenant_id-Schlüssel) | < 0.22.0 | 0.22.0 |