-
-
[原创]Ivanti Connect Secure栈溢出漏洞(CVE-2025-0282)分析与复现
-
发表于: 2025-2-11 13:50 3068
-
漏洞概述
Ivanti Connect Secure、Ivanti Policy Secure和Ivanti Neurons for ZTA gateways 是Ivanti 公司提供的远程访问和安全连接解决方案,主要功能包含VPN、访问控制、流量加密等。其IF-T/TLS协议在认证前,存在栈缓冲区溢出漏洞,攻击者可以利用该漏洞实现未授权远程代码执行。该漏洞已被APT组织利用。
影响范围
Ivanti Connect Secure 22.7R2 - 22.7R2.4
Ivanti Policy Secure 22.7R1 - 22.7R1.2
Ivanti Neurons for ZTA gateways 22.7R2 - 22.7R2.3
复现环境
版本:Ivanti Connect Secure 22.7R2.3
环境搭建
Ivanti Connect Secure 22.7R2.3导入虚拟机后开机,按照界面提示设置IP地址,管理员账号和密码等。
配置成功后,进入命令行界面,可以根据编号进行系统管理,但是无法执行底层Shell命令。
同时在浏览器中使用HTTPS协议打开配置的IP地址,可以正常显示Web登录界面。
查看虚拟机磁盘文件,尝试挂载到其他系统,解包出系统中的文件。但是文件系统被加密,无法通过常规挂载方式获取系统文件。这种情况下,常见方案可以逆向分析系统启动流程,分析解密算法,解密出系统文件。但是时间成本比较高。
笔者则是选择使用另一种方法,将虚拟机暂停后,修改其内存文件中的/home/bin/dsconfig.pl字符串为///////////////bin/sh。/home/bin/dsconfig.pl是控制台界面执行时需要调用的脚本文件,替换后等待控制台界面超时后按“回车”,即可获取底层Shell。
获取到底层Shell后,可以执行任意系统命令。然后使用自带的python程序,开启web服务,下载系统文件进行逆向分析。
漏洞分析
根据公开的POC,漏洞使用HTTPS触发。定位到HTTPS服务的进程为/home/bin/web。
逆向分析该web程序后发现,IF-T/TLS协议在认证时,获取客户端属性字段“clientIP”、“clientHostName”、“clientCapabilities”等进行处理。
在处理过程中,使用strncpy复制clientCapabilities属性值时,最后一个参数v23是要复制的最大字节数。但是这里错误的使用了从客户端获取的clientCapabilities属性值的长度加1,用户可控制。
而目的缓冲区(dest)是一个栈缓冲区,最大长度为256。客户端可传入超过256字节长度的clientCapabilities属性值,从而导致该栈缓冲区溢出。
溢出后可覆盖栈中保存的返回地址,待执行到函数返回时,将跳转到覆盖的指定内存地址执行任意代码。
漏洞利用
根据以上分析,溢出后只需要覆盖栈中保存的返回地址即可执行任意代码。但事实并非这么简单。目前遇到的问题:
程序自身安全措施
虚函数调用
释放对象内存
首先分析下web程序自身的安全保护措施。
该程序有NX和PIE保护,溢出后,栈中的数据默认没有执行权限,不能作为shellcode直接执行,可使用ROP技术绕过。
PIE和系统地址随机化安全措施,导致内存地址不再是固定值,无法提前预测,可使用信息泄露或者暴力破解等方法解决。分析后没找到可泄露内存地址的方法,由于该程序是32位程序,理论上最多尝试16的4次方,共65536次,可暴力破解libc.so.6的内存基地址。
在执行到覆盖的返回地址前,还执行了许多其他代码,其中一个虚函数调用地址可能被覆盖,导致程序异常退出,无法执行到栈中被覆盖的返回地址。解决方法是在libc.so.6的内存中搜索满足该条件的虚函数调用,保证能正常执行到后续代码。
此外,还有一处代码释放DSUtilMemPool对象内存,但是该内存被溢出覆盖了,导致程序异常退出。可将该对象内存地址设置为-1(0xFFFFFFFF),保证能正常执行到后续代码。
经过上述分析,最终的栈布局如下图所示:
经过布局,溢出后的clientCapabilities属性值数据,最终覆盖栈中返回地址,函数返回时,配合ROP技术,可执行任意代码。
参考链接
ddpoc链接:
43aK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6n7K9i4y4Z5L8%4m8r3L8%4S2Q4x3V1k6o6g2V1g2Q4x3X3b7J5x3o6t1#2i4K6u0V1x3o6t1^5x3W2)9J5k6r3y4Z5k6h3y4C8
6daK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6U0L8r3!0#2k6q4)9J5k6h3N6G2L8$3N6D9k6g2)9J5k6h3y4G2L8g2)9J5c8X3u0D9L8$3N6Q4x3V1k6@1L8%4m8A6j5%4y4Q4x3V1k6@1K9s2u0W2j5i4c8Q4x3X3c8A6L8Y4c8W2L8r3I4A6k6$3g2F1j5$3g2Q4x3V1k6A6N6X3q4F1N6r3W2Q4x3X3c8U0L8$3&6F1k6h3y4@1i4K6u0V1M7$3g2U0N6i4u0W2i4K6u0V1N6Y4m8F1i4K6u0V1P5X3g2J5L8#2)9J5k6r3c8S2P5b7`.`.
1deK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6D9j5h3u0K6i4K6u0W2N6$3q4@1j5$3S2@1L8%4N6J5i4K6u0W2j5$3!0E0i4K6u0r3k6r3!0Q4x3X3c8K6k6h3y4#2M7X3g2Q4x3X3c8T1P5g2)9J5k6r3c8W2M7$3W2Y4L8W2)9J5k6s2m8D9k6h3c8Y4k6i4y4Q4x3X3c8U0L8$3#2W2i4K6u0V1N6$3W2@1K9q4)9J5k6s2y4@1K9h3y4C8k6i4u0K6i4K6u0V1K9i4k6S2L8Y4c8A6i4K6u0V1j5$3!0F1L8X3g2U0N6q4)9J5k6s2y4W2j5%4g2J5k6g2)9J5k6s2u0U0k6g2)9J5k6r3y4$3k6g2)9J5k6o6t1H3x3U0g2Q4x3X3b7H3x3U0R3J5i4K6u0r3
6f9K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6D9j5h3u0K6i4K6u0W2N6$3q4@1j5$3S2@1L8%4N6J5i4K6u0W2j5$3!0E0i4K6u0r3k6i4S2H3L8r3!0A6N6r3q4@1K9h3!0F1i4K6u0V1N6$3q4D9K9%4c8Z5M7X3!0#2k6$3S2Q4x3X3c8S2L8X3c8Q4x3X3c8@1k6h3y4Z5L8X3W2I4N6h3g2K6i4K6u0V1K9i4k6S2L8Y4c8A6i4K6u0V1j5$3!0F1L8X3g2U0N6q4)9J5k6s2y4W2j5%4g2J5k6g2)9J5k6s2u0U0k6g2)9J5k6r3y4$3k6g2)9J5k6o6t1H3x3U0g2Q4x3X3b7H3x3U0R3J5
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课