文章总结: 本文分析GitLabCVE-2026-85706未授权路径遍历漏洞,指出漏洞位于仓库提交API,根因是路径约束不当及身份认证缺失。攻击者无需登录即可利用特定请求读取服务器部分敏感文件,但存在内容限制。文章详述了四个环节的漏洞链,包括认证顺序、参数伪造、错误回显和尾斜杠绕过,并提供了复现环境和exp仓库。 综合评分: 78 文章分类: 漏洞分析,代码审计,渗透测试
【附exp】GitLab CVE-2026-85706 未授权路径遍历
原创
棉花糖糖糖 棉花糖糖糖
棉花糖fans
2026年9月12日 09:56 四川
在小说阅读器读本章
去阅读
在公众号小说中沉浸阅读
前言
大家好,这里是棉花糖,一个四年网安自由职业者,bdziyi.com的站长。
GitLab 公开了 GitLab CE/EE 中存在的路径遍历漏洞(CVE-2026-85706)。该漏洞位于仓库提交相关 API,根因涉及路径约束不当以及身份认证强制措施缺失。在特定条件下,未经身份认证的远程攻击者可使服务端访问预期目录之外的本地文件,并读取 GitLab 服务器上的文件,但实测因为漏洞限制无法读取任意文件,只能读取部分gitlab敏感配置,其余文件可通过返回状态可判断文件存在但无法读取。
部分厂商通报为任意文件读取但我没有发现任意文件读取的点,甚至还有内容限制截断,暂未深入发掘实战价值。
分析
GitLab 的「创建 commit」API(POST /api/v4/projects/:id/repository/commits)允许单次请求携带大量文件内容。为避免超大请求体直接进入 Rails 解析,Workhorse 会先把请求体落盘为临时文件,再把 file.path / file.size 等元数据注入转发请求,Rails 端点按这些参数读回文件。漏洞链路由四个环节叠加:
- 认证在文件读取之后:
post ':id/repository/commits'入口只有require_gitlab_workhorse!(仅校验”经 Workhorse 转发”),真正的authenticate!藏在后面的authorize_push_to_branch!里,而路径遍历读取发生在它之前。 - 落盘元数据取自请求参数:
file_params_from_body_upload直接把请求参数file.path/file.size/Content-Type当作 Workhorse 注入的元数据,不区分参数来源,File.read(file_path)即可遍历任意本地路径。 - Rack 解析错误回显:
Content-Type=application/x-www-form-urlencoded时,文件内容交给Rack::Utils.parse_nested_query解析;内容中的非法 %-序列触发ArgumentError: invalid %-encoding (<组件内容>),经bad_request!原样回显进 400 响应。回显先到先得:&/=是组件边界,解析在第一个非法%所在组件处中断并回显该组件,无分隔符时整个文件作为一个组件整体回显(合法的%xx十六进制转义不触发错误)。 - 尾部斜杠绕过 Workhorse 改写:直接打主端点会命中 Workhorse 的 body-upload 拦截(严格匹配
.../repository/commits\z),伪造参数被吞进落盘文件内容。URL 末尾加/即不匹配该规则,落入兜底的签名反向代理——原始请求体连同伪造参数原样转发给 Rails 且携带有效 JWT,require_gitlab_workhorse!通过;Grape 归一化尾斜杠后仍命中漏洞 handler。
前置条件:URL 中 :id 必须是真实存在的项目(任意公开项目即可),全程无需登录。
复现截图:
该环境已上线无境靶场,可在线复现:https://bdziyi.com/ulab/lab.html?page=target-detail&id=297
exp仓库:
https://github.com/mhtsec/CVE-2026-85706
如果您对内网靶场、SRC靶场、WEB靶场、应急响应靶场、网安方案、资料文档、各种各样的网安工具、实用的在线功能、教程资源感兴趣,欢迎看看我的网站广告,包您心动:棉花糖会员站介绍(26年4月26日版本) :在线内网靶场、网安资料方案、在线工具全能资源站
网络安全交流群请在公众号菜单栏点击找棉花糖,加棉花糖好友后发送“棉花糖fans”,邀请您进群,CISP全系列、国内外网安考证也可以在公众号菜单栏点击找棉花糖,微信联系哦,爱你😘,下篇文章再见
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:棉花糖fans 棉花糖糖糖 棉花糖糖糖《【附exp】GitLab CVE-2026-85706 未授权路径遍历》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。









评论