文章总结: Gogs存在严重漏洞CVE-2026-52813,经身份验证的攻击者可通过组织创建API中的路径遍历漏洞,在服务器上执行任意命令。漏洞源于组织名称未经过滤即用于文件路径构造,攻击者可利用web编辑机制和git钩子实现远程代码执行。此外还涉及CVE-2026-52810授权绕过漏洞。建议升级至0.14.3版本并检查可疑组织名称和恶意钩子。 综合评分: 85 文章分类: 漏洞分析,web安全,代码审计,红队
GOGS漏洞利用路径遍历实现远程代码执行
原创
ZM ZM
暗镜
2026年9月9日 08:00 北京
在小说阅读器读本章
去阅读
在公众号小说中沉浸阅读
自托管 Git 服务 Gogs 中存在一个严重漏洞,该漏洞可能允许经过身份验证的攻击者在创建过程中利用路径遍历漏洞在服务器上执行命令。
该漏洞被追踪为CVE-2026-52813,由 Aikido 安全研究员 Jorian Woltjer 报告,并在 Gogs 版本 0.14.3 中修复。
问题源于一个 API 端点,该端点在将组织用户名传递给文件系统路径构造例程之前,接受了未经清理的组织用户名。
Gogs 过去filepath.Join会将组织名称附加到其配置的存储库根目录。虽然标准的帐户注册控制措施将用户名限制为安全的字母数字字符、连字符、下划线和句点,但组织创建 API 并未强制执行相同的验证。
经过身份验证的攻击者可以提供包含遍历序列的组织名称../,从而指示 Gogs 在其预期存储路径之外创建存储库。
例如,精心构造的组织名称可以指向可写的临时位置,例如/tmp. Gogs 然后会在攻击者选择的文件系统位置初始化一个裸 Git 仓库。
最初,这种行为似乎只提供了一种受限的文件写入原语。裸仓库包含的是 Git 元数据,而不是传统的工作树,这限制了直接覆盖任意应用程序文件的机会。
然而,Woltjer 证明, Gogs 基于 Web 的编辑机制可以被利用,将这种原始机制转化为远程代码执行。当用户通过其 Web 界面编辑存储库文件时,Gogs 会创建临时工作树。
攻击者可以先创建一个支持 Web 编辑的合法存储库,然后使用遍历名称的组织将恶意裸存储库放置在临时工作树中。
攻击者可以从合法仓库的本地克隆版本中,向类似 /usr/local/bin 这样的路径提交 Git hook traversal.git/hooks/update。尽管 Gogs 的 Web 编辑器会屏蔽包含 /usr/local/bin 的路径.git/,但标准的 Git push 操作可以绕过这一限制。
验证逻辑会查找名称完全匹配的路径段.git,这使得类似这样的目录traversal.git能够绕过检查。随后,通过 API 向嵌套仓库提交代码会触发恶意update钩子,攻击者会以 Git 服务使用的帐户身份执行由其控制的命令。
此次披露还重点提及了CVE-2026-52810,这是一个影响 Git HTTP 请求的独立授权漏洞。Gogs 会根据服务查询参数将部分请求分类为只读拉取请求,同时根据请求路径路由操作。
响应service=git-upload-pack请求git-receive-pack可能会导致推送操作被误判为拉取操作,从而使只读用户也能写入私有仓库。Woltjer 报告称,此授权问题会影响需要身份验证才能查看的私有仓库和部署。
管理员应升级到 Gogs 0.14.3 或更高版本以解决 CVE-2026-52813,检查实例是否存在可疑的组织名称、意外的存储库路径和恶意 Git 钩子,并密切监控上游针对 receive-pack 授权绕过的修复工作。
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:暗镜 ZM ZM《GOGS漏洞利用路径遍历实现远程代码执行》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。








评论