CVE-2024-21893 Ivanti Connect Secure SSRF to RCE
CVE-2024-21893 Ivanti Connect Secure SSRF to RCE
0x01 简介
Ivanti Connect Secure 为远程和移动用户提供了一个无缝的、具有成本效益的SSL VPN 解决方案,使他们能随时随地从任何可上网的设备访问企业资源。
0x02 漏洞概述
CVE-2024-21893 是存在 Ivanti Connect Secure SAML 组件中的 SSRF 漏洞,该漏洞主要是由于使用存在漏洞第三方库,并且第三方库没有及时的更新导致的,可以绕过 CVE-2024-21887 命令注入漏洞的补丁,达到未授权 RCE 的目的。
CVE-2024-21887 具体分析可以查看 dnslaoge 师傅的分析,总结一下就是 /api/v1/license/keys-status/
存在命令注入。
0x03 影响版本
Ivanti Connect Secure(9.x、22.x)
Ivanti Policy Secure(9.x、22.x)
Ivanti Neurons for ZTA SAML组件(这个只能SSRF)
0x04 环境搭建
本次复现使用 Ivanti Connect Secure 22.6R2.1 (build 2487)版本并导入缓解措施 mitigation.release.20240107.1.xml。
下载虚拟机版本的 Ivanti Connect Secure,导入虚拟机中
这里需要等带一下,等待系统解压安装完成,完成安装之后按照如下配置进行初始化:
随后新建管理员
创建管理员完成
进入系统自带的 shell 界面
访问 https://ip/admin 进入后台导入 mitigation.release.20240107.1.xml
缓解措施
mitigation.release.20240107.1.xml
缓解措施主要是对 CVE-2023-46805 和 CVE-2024-21887 的缓解,该措施禁止访问存在漏洞的接口。
0x05 漏洞分析
获取 shell 可以参考这篇博客 里面提到的方法。
获取 shell 之后进入 /home/bin
目录,执行 python -m SimpleHTTPServer 8899
启动 http 服务,下载 web 和 saml-server 二进制文件,
下载之后将 web
放入 IDA 中进行分析,找到路由 /dana-ws/saml20.ws
,是没有鉴权的,还有一些没有鉴权的路由如下:
接着来看对 /dana-ws/saml20.ws
路由请求的处理,
这里会匹配 /dana-ws/saml20.ws
,/dana-ws/saml.ws
, /dana-ws/samlecp.ws
再接收到请求后由 doDispatchRequest
转发到 saml-server
中处理
在 saml-server
中由 createXMLObjectFromSoapMessage
函数将 soap 数据换成 xml 数据,最后由 xmltooling 库进行处理,而 xmltools 在 3.2.4 以下的版本是存在一个 SSRF 漏洞,该漏洞可以通过构造 KeyInfo
来实现 SSRF。 在本次复现的环境中使用的 xmltooling 版本为 3.2.0。
因此完整的利用链如下:
- 构造一个带
KeyInfo
的 SOAP 信封发送到/dana-ws/saml20.ws
- 在内部由
web
服务器将请求转发到saml-server
上,saml-server
会调用 xmltooling 库解析 xml 数据 - 由于 xmltooling 存在 SSRF 漏洞,伪造请求访问
http://127.0.0.1:8090/api/v1/license/keys-status/
,绕过了缓解措施mitigation.release.20240107.1.xml
/api/v1/license/keys-status/
存在命令注入,可以执行系统任意命令
0x06 漏洞利用
1 | POST /dana-ws/saml20.ws HTTP/1.1 |
利用结果如下:
0x07 修复方式
Ivanti 已发布补丁,请及时升级版本或缓解措施