Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

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

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

订阅源联系隐私© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
gitea-git-redir-ssrf — 针对 Gitea 仓库迁移端点中经身份验证的 SSRF 的概念验证与实验环境,其中 git 会跟随 HTTP 重定向进入回环 git HTTP,并泄露内部对象。 | Kitploit
工具/GitHubGitHub/abraxas/gitea-git-redir-ssrf
漏洞分析漏洞利用Web应用程序漏洞利用Web安全渗透测试实验室与实践
GitHubabraxas/gitea-git-redir-ssrf

gitea-git-redir-ssrf

针对 Gitea 仓库迁移端点中经身份验证的 SSRF 的概念验证与实验环境,其中 git 会跟随 HTTP 重定向进入回环 git HTTP,并泄露内部对象。

查看仓库
13天前尚未审核

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

Abraxas Labs - gitea-git-redir-ssrf

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  gitea-git-redir-ssrf

gitea-git-redir-ssrf

Gitea 1.27.3 - Gitea

IsMigrateURLAllowed 是对你输入的 URL 执行的一次性 net.LookupIP。随后字节流会经过 git clone --mirror。HandleGitCmdHTTPRedirection 本应阻止 git 跟随该跳转。但它什么也没做。注释本身就是发现:他们没有设置 http.followRedirects=false,因为 GitLab 在没有 .git 时会返回 301。拉取镜像的 fetch 调用的是同一个空操作。

已登录用户可以从允许列表中的诱饵主机进行迁移,git 会跟随 302 跳转进入回环 git HTTP。内部对象会落入他们拥有的仓库中。

ID暂无 CVE
CWECWE-918
CVSS高危:7.7 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:N/A:N
产品Gitea
受影响版本至 v1.27.3(146cc3e)
认证已认证(默认开放注册)
许可证GNU Affero GPL v3.0
实验环境仅 127.0.0.1

攻击者能做什么

注册,从一个看似外部的 URL 进行迁移,该 URL 会 302 跳转到 http://127.0.0.1:.../internal.git。直接迁移到回环会被拒绝。跟随重定向的克隆则不会。见证文件会落入他们的仓库中。

不是 file:// 磁盘读取。不是对 /api/internal 使用 X-Gitea-Internal-Auth(git 不会设置该请求头)。不是未认证 RCE。不是元数据 RCE,除非你另行证明 git 存储了响应体。

同一标签下的遗留问题:keys IDOR、hostmatcher 0.0.0.0/8。

我是如何发现的

v1.27.3 关闭了 2026 GHSA 浪潮:CVE-2026-60004(diffpatch 钩子 RCE,CISA KEV)、CVE-2026-59774(未认证 Org-mode #+INCLUDE)、fork-PR Actions 门控、反向代理 X-WEBAUTH-USER 默认值。针对这些问题请停留在 1.27.3+。我仍然盯着那个标签。

CVE-2026-59765 修复了 Go uri.Open。CVE-2026-22874 修复了 Go reservedIPNets。Git 的重定向器仍然是一个 FIXME。变更日志中的“在拉取镜像同步时禁用 HTTP 重定向”并不是这个函数。

实验环境将 Gitea 放在 8.8.4.2 上,这样位于 8.8.4.10 的诱饵主机对 hostmatcher 来说看起来是外部的。内部 git HTTP 仅绑定在 Gitea netns 的回环上(network_mode: service:gitea,端口 9418)。直接迁移到 127.0.0.1 必须失败。跟随重定向的克隆必须成功。redir.py 将 /bait.git 302 跳转到 http://127.0.0.1:9418/internal.git。见证文件 WITNESS 包含 GHSA-GITEA-GIT-REDIR-SSRF。

已记录的弯路:ALLOW_LOCALNETWORKS true(那样允许列表就没了);file://;X-Gitea-Internal-Auth;反向 shell。都是做戏。直接回环迁移被拒绝才是对照。

客户端 bug 看起来像产品 bug。一个遮蔽 http.client 的辅助程序从不发送数据包。对 HTTPResponse 调用 .recv() 不是 .read()。我提一次是因为它耗费了时间,并且有一瞬间看起来像是 1.27.3 已经完成了任务。

实验环境

cd lab
./run.sh

目标仅为 http://127.0.0.1:18103。ALLOW_LOCALNETWORKS=false。

negative-loopback status=422 You can not import from disallowed hosts
migrate-bait status=201 clone_addr=http://8.8.4.10/bait.git
fetch raw/WITNESS status=200 GHSA-GITEA-GIT-REDIR-SSRF
SUCCESS Gitea #2 git HTTP redirect SSRF

修复方案

不要把提交时的 DNS 当作边界。强制设置 http.followRedirects=false(并将克隆 URL 规范化为 .git,这样 GitLab 仍然可用),或者通过一个在每一跳都重新运行 hostmatcher 的拨号器来代理 git HTTP。

参考资料

  • github.com/go-gitea/gitea 标签 v1.27.3
  • HandleGitCmdHTTPRedirection · IsMigrateURLAllowed
  • 附近已修补:CVE-2026-59765 · CVE-2026-22874
  • CWE-918

许可证

GNU Affero GPL v3.0。参见 LICENSE。仅限回环实验环境。无担保。

下载工具