NetScaler ADC 和 NetScaler Gateway远程代码执行漏洞分析与复现

2024-11-26 92 0

CVE-2023-3519漏洞分析

影响范围

NetScaler ADC 和 NetScaler Gateway 13.1 < 13.1-49.13。
NetScaler ADC 和 NetScaler Gateway 13.0  < 13.0-91.13。
NetScaler ADC 13.1-FIPS < 13.1-37.159。
NetScaler ADC 12.1-FIPS < 12.1-55.297。
NetScaler ADC 12.1-NDcPP < 12.1-55.297。

二 分析背景

Citrix宣布Citrix ADC 和 Citrix Gateway 中存在未经身份验证的远程代码执行漏洞。(CVE-2023-3519)。
当前分析版本ADC 13.0-47.24。
nsppe这个可执行文件没有现代内存损坏缓解措施,例如 ASLR 或 DEP,这些措施目前已有 20 多年的历史。这意味着内存地址不会改变,并且我们可以直接从堆栈运行有效负载。

我们在使用网上公开的poc会发现,不是所有的Citrix ADC都可以使用,以msf为列。也只记录了四个版本,分别是13.1-48.47,13.0-91.12,12.1-65.25,12.1-64.17。那遇见存在漏洞,又没有对应poc的其他版本我们又该怎么处理呢?接下来就给大家讲一讲该漏洞利用的具体细节以及poc

三 需要工具

Ghidra,IDA,Citrix ADC13.0-47.24,python,X-Ways Forensics。
⦁ CVE-2023-3519漏洞分析
使用 Ghidra 对nsppe文件进行反编译。由于二进制文件太大,需要调整一些 Ghidra 反编译设置。我们将“编辑”->“工具选项”->“反编译器”下的反编译器资源增加到以下内容。
⦁ 缓存大小(功能):2048
⦁ 反编译器最大有效负载(MB):512
⦁ 反编译器超时(秒):900
⦁ 每个功能的最大指令数:3000000
反编译每个二进制文件后,为每个二进制文件生成一个BinExport Ghidra 扩展名的 BinDiff 文件。然后在 BinDiff 中对它们进行比较,我们开始查看更改的每个函数。对于大多数函数,我们没有直接在 BinDiff 中比较它们,而是从 Ghidra 中,获取函数的反编译代码,并进行文本比较。
找到ns_aaa_gwtest_get_event_and_target_names函数,在代码的修补版本中,看到了附加长度检查的内容。
跟踪ns_aaa_gwtest_get_event_and_target_names的调用过程,找到触发函数调用的url路径。

四 漏洞复现

1 获取nsppe

从服务器虚拟机中提取nsppe,通过“X-Ways Forensics”工具打开NSVPX-ESX-13.0-47.24_nc_64-disk1.vmdk,

2 提取nsppe

从虚拟机中看nsppe的路径是/netscaler/nsppe,但是实际在虚拟机磁盘vmdk文件中未找到这个文件。
新建一个磁盘test,查找磁盘,如下所示。
root@ns# ls /dev/ | grep da
da0   //第一块磁盘
da0p1
da0p2
da0p3
da1   //第二块磁盘
创建格式化分区,挂载分区。如下所示。
gpart create -s gpt da1 //创建GPT分区
gpart add -t freebsd-ufs -s 1G da1  //t代表type,s代表size
newfs -j /dev/da1 //格式化分区
mount /dev/da1 /mnt/test //挂载分区
使用cp /netscaler/nsppe /mnt/test/nsppe命令,拷贝nsppe到新建的磁盘分区。通过“X-Ways Forensics”工具打开NSVPX-ESX-13.0-47.24_nc_64_test.vmdk,提取nsppe。

3 IDA分析nsppe

使用IDA分析nsppe,ns_aaa_saml_url_decode。ns_aaa_gwtest_get_event_and_target_names(url > ?event=start&target=)(该函数对target查询参数进行 URL 解码,不进行长度检查)(未补丁版本存在栈溢出攻击, 补丁版本添加了长度检查)。ns_aaa_gwtest_get_valid_fsso_server(未补丁版本,栈溢出覆盖了ns_aaa_gwtest_get_valid_fsso_server的返回地址)。如图所示。
NetScaler ADC 和 NetScaler Gateway远程代码执行漏洞分析与复现插图
获取函数对应的url,ns_aaa_gwtest_handler(url -> /formssso),
ns_vpn_process_unauthenticated_request(url -> /gwtest/)。
编写溢出攻击对应的url。
https://192.168.1.225/gwtest/formssso?event=start&target=AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

4 调试 Citrix NetScaler

禁用pitboss(“看门狗定时器”)。
root@ns# /netscaler/nspf nsppe-00 pbmonitor 0
nspf NSPPE-00 pbmonitor 0
Removing pitboss monitor on process NSPPE-00 pid 11623
获取nsppe的进程id。
root@ns# ps aux | grep nspe
root     11623   99.0 43.0 691272  


4A评测 - 免责申明

本站提供的一切软件、教程和内容信息仅限用于学习和研究目的。

不得将上述内容用于商业或者非法用途,否则一切后果请用户自负。

本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。

如果您喜欢该程序,请支持正版,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。敬请谅解!

程序来源网络,不确保不包含木马病毒等危险内容,请在确保安全的情况下或使用虚拟机使用。

侵权违规投诉邮箱:4ablog168#gmail.com(#换成@)

相关文章

如何使用SkyScalpel在云环境中对JSON策略执行安全分析与处理
禅道命令注入(CVE-2024-24216)复现
WordPress-Umbrella插件本地文件包含漏洞复现(CVE-2024-12209)
浅谈src挖掘中——文件上传和XSS漏洞的组合拳
MACOBOX:一款针对硬件安全的多合一渗透测试工具箱
Matildapp:针对Web 3.0环境的网络安全与渗透测试框架

发布评论