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

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

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

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

工具目录

分类

查看所有分类
Loading categories
CVE-2026-19478 — 通过非破坏性 Nuclei 模板检测 GitLab CE/EE 中的 CVE-2026-19478,该模板通过 touch 触发 GraphQL 回退字段方法调用,并在不进行破坏性调用的情况下确认存在漏洞的实例。 | Kitploit
工具/GitHubGitHub/renzi25031469/cve-2026-19478
Web漏洞扫描器漏洞分析Web应用程序漏洞利用API安全测试信息收集Web安全渗透测试
GitHubrenzi25031469/cve-2026-19478

CVE-2026-19478

通过非破坏性 Nuclei 模板检测 GitLab CE/EE 中的 CVE-2026-19478,该模板通过 touch 触发 GraphQL 回退字段方法调用,并在不进行破坏性调用的情况下确认存在漏洞的实例。

查看仓库
1241个月前尚未审核

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

CVE-2026-19478 — GitLab GraphQL 回退字段任意方法调用 — Nuclei 检测模板

CVE Severity Nuclei Target License

CVE-2026-19478 — Nuclei 模板

针对 CVE-2026-19478 的非破坏性 Nuclei 检测模板。该漏洞是 GitLab GraphQL API 中的一个严重(CVSS 9.4)未认证任意方法调用缺陷,GitLab 已于 2026 年 8 月 17 日 修复。

TL;DR

GitLab 的 GraphQL schema 支持一个 @gl_introduced(version: "X.Y.Z") 指令,该指令将某个字段限制为仅在最低 GitLab 版本上可用。当该指令引用的版本高于当前运行实例时,GitLab 会为这个(原本未知的)字段名生成一个回退字段。该回退解析器会直接对底层 Ruby 对象(Project、User 等)调用 object.public_send(method_name)——而不会重新检查授权。

结果是:任何能访问 /api/graphql 且知道任一公开项目 fullPath(或任一公开资料的用户名)的未认证攻击者,都可以对该对象调用任何公开的无参方法。其中既包括 touch 这类只读方法,也包括 destroy / delete 这类破坏性方法,以及 deactivate / block / ban 这类会改变状态的方法。

本仓库中的模板只会调用 touch(更新 updated_at 并返回 true)——详见下文 安全性。

受影响版本

版本系列受影响版本修复版本
18.2.x – 18.11.x>= 18.2, < 18.11.1118.11.11
19.0.x< 19.0.819.0.8
19.1.x< 19.1.619.1.6
19.2.x< 19.2.419.2.4

仅影响自托管的 GitLab CE/EE——GitLab.com 和 GitLab Dedicated 不受影响。

安全性

该模板特意做过去危险化处理,适用于扫描你已获授权测试的服务器集群:

  • 它只会通过回退字段调用 touch(这是一个 ActiveRecord 方法,仅更新 updated_at 并返回 true)。
  • 它从不调用 destroy、delete、deactivate、block 或 ban——这些方法同样可通过该漏洞调用,且具有真正的破坏性。
  • 检测是机会式的:它通过 REST API 枚举一个公开项目;如果没有找到,则回退到探测默认的 root 用户资料。如果两者都不可达,它只会报告“未检测到”,而不会进行猜测。

请勿将此模板中的 GraphQL 查询改用于对你不拥有或未经明确书面授权测试的系统调用变更新方法。

检测原理

步骤请求目的
1GET /api/v4/projects?visibility=public查找一个公开项目作为无害目标
2POST /api/graphql — 对该项目执行 touch @gl_introduced(version: "999.0.0")触发回退字段解析器;存在漏洞的实例返回 "touch": true
3(回退)POST /api/graphql — 对 user(username: "root") 执行相同查询仅在第 1 步未找到公开项目时使用

已修补的实例会直接拒绝未知字段("... doesn't exist on type ..."),因此模板的匹配器要求同时满足:出现正向的 touch 信号且没有该拒绝消息。

用法

# single target
nuclei -t CVE-2026-19478.yaml -u https://gitlab.example.com

# validate the template itself
nuclei -t CVE-2026-19478.yaml -validate

# a list of targets, JSON output
nuclei -t CVE-2026-19478.yaml -l targets.txt -j -o results.json

需要 nuclei v3(该模板使用了 v3 模板引擎中引入的 http: 协议块和类 jq 的 json 提取器,无法在 nuclei v2.x 上加载)。

示例输出

[CVE-2026-19478] [http] [critical] https://gitlab.example.com/api/graphql

修复建议

请升级到 18.11.11、19.0.8、19.1.6 或 19.2.4(或更高版本)。完整公告请参阅 GitLab 的 19.2.4 补丁版本发布说明。

参考链接

  • GitLab 19.2.4 补丁版本发布说明
  • The Hacker News — 严重的 GitLab GraphQL 漏洞可让未认证攻击者删除公开项目
  • Rescana — CVE-2026-19478 技术分析
  • PoC(davkharrr/CVE-2026-19478-PoC)

免责声明

该模板仅用于防御性安全目的——扫描你拥有或已明确获授权测试的基础设施。在未经授权的情况下对系统运行此模板(或所链接的 PoC)在大多数司法管辖区均属违法行为。作者对滥用行为不承担任何责任。

许可证

MIT

下载工具