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

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

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

订阅源联系隐私© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
forgejo-openid-discovery-ssrf — Forgejo 16.0.5 - 高危 - 远程 - SSRF - OpenID 发现机制会获取攻击者控制的 URL | Kitploit
工具/GitHubGitHub/abraxas/forgejo-openid-discovery-ssrf
侦察漏洞分析漏洞利用Web应用程序漏洞利用信息收集Web安全渗透测试
GitHubabraxas/forgejo-openid-discovery-ssrf

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

forgejo-openid-discovery-ssrf

Forgejo 16.0.5 - 高危 - 远程 - SSRF - OpenID 发现机制会获取攻击者控制的 URL

查看仓库
14天前尚未审核

Abraxas Labs - forgejo-openid-discovery-ssrf

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  forgejo-openid-discovery-ssrf

forgejo-openid-discovery-ssrf

类别: SSRF 可达性: 远程

Forgejo 16.0.5 (8d24b7d) - Forgejo

当 [openid] ENABLE_OPENID_SIGNIN 开启时,未认证的 POST /user/login/openid 会将攻击者提供的 URL 交给 yohcop openid-go v1.0.1。该库的包级辅助函数使用 http.DefaultClient。此路径上没有 hostmatcher。Webhook 和迁移会过滤出站 HTTP。OpenID 不会。

任何能访问登录表单的人都可以从 Forgejo 主机向 loopback、RFC1918、CGNAT 和 IMDS 发起 Yadis GET 请求。

ID暂无 CVE
类别SSRF
可达性远程(未认证,当 OpenID 登录启用时)
CWECWE-918
CVSS高危:8.6 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:N/A:N
产品Forgejo
受影响版本至 v16.0.5(8d24b7d)且启用 ENABLE_OPENID_SIGNIN;Gitea CVE-2026-58314 的遗留问题
认证未认证
许可证GNU Affero GPL v3.0
实验环境仅 127.0.0.1

攻击者能做什么

无需账户。POST 一个 OpenID URL。Forgejo 主机会获取它。

权限方法 / 汇聚点侦察 / 完整性 / 可用性实验验证或推断
向 loopback 发起 Yadis GET未认证 POST /user/login/openid,携带 openid=http://127.0.0.1:18080/侦察(从 Forgejo 主机发出的出站 HTTP)实验验证。Oracle 观察到来自 127.0.0.1 的 GET /,带有 Accept: application/xrds+xml
探测 RFC1918、CGNAT、链路本地、IMDS同一 http.DefaultClient Discover,无 IP 过滤侦察从客户端推断。实验仅使用 loopback
从已登录的添加 OpenID 重复POST /user/settings/security/openid 也调用 RedirectURL 并跳过 allowedOpenIDURI侦察从处理器推断。实验使用未认证登录 POST
在登录错误中读取响应体CVE-2021-45325 之后,错误不再转储获取内容侦察实验验证已关闭。此遗留问题是请求,而非 HTML 泄露

在此版本上已关闭:OpenID 关联 CSRF(openIDState 会话 nonce)、webhook/migrate hostmatcher(仍在那里使用)、git followRedirects=false、migrate LookupIP CVE-2026-82556。实验不完成 OpenID 登录,也不返回 shell。

Web 安装程序复选框默认开启(未锁定时 EnableOpenIDSignIn = MustBool(!InstallLock),然后写入 app.ini)。锁定后,省略的键为 false。Docker app.ini 模板没有 [openid] 部分,因此没有向导的预锁定镜像默认关闭,除非操作员设置该键。空的 WHITELISTED_URIS 允许所有 URI。

我是如何发现的

v16.0.5 关闭了 OpenID 关联 CSRF。我仍然关注那个攻击面。Gitea PR 38406 / CVE-2026-58314 将 hostmatcher 过滤的客户端放入专用的 openid-go 实例。此版本仍然调用包级辅助函数。

已记录的弯路:重新提交关联 CSRF(该 nonce 已在代码树中);将 Docker 预锁定镜像视为默认(向导会写入复选框);期望旧的 OpenID 错误字符串泄露;反向 shell。都是表演。

实验环境

python3 forgejo-openid-discovery-ssrf-Abraxas-Labs.py

或:

cd lab
./run.sh

目标仅为 http://127.0.0.1:19330。镜像 codeberg.org/forgejo/forgejo:16.0.5。Oracle 共享 Forgejo netns 并绑定 127.0.0.1:18080。

IOC post-openid status=200
IOC xrds-hits count=1
SUCCESS forgejo-openid-discovery-ssrf how=live post=/user/login/openid openid=http://127.0.0.1:18080/ path=/ accept=application/xrds+xml peer=127.0.0.1 post-status=200 FORGEJO-OPENID-DISCOVERY-WITNESS

修复方案

与 Gitea PR 38406 相同:将 hostmatcher 过滤的 http.Client 放入专用的 openid-go 实例。保留 WHITELISTED_URIS 作为第二道门。阻止 loopback、RFC1918、CGNAT、链路本地和元数据。

参考资料

  • codeberg.org/forgejo/forgejo 标签 v16.0.5
  • modules/auth/openid/openid.go
  • 附近已修补(非此获取):v16.0.5 OpenID 关联 CSRF
  • Gitea 类别:CVE-2026-58314 / PR 38406
  • CWE-918

许可证

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

下载工具