CVE-2019-19781 PoC

概述

近日,研究人员发现Citrix Application Delivery Controller (ADC)和Citrix Gateway中存在一个目录遍历漏洞,远程攻击者利用该漏洞可以发送目录遍历请求,从系统配置文件中读取敏感信息而无需用户认证,并可以远程执行任意代码。该漏洞影响所有支持的产品版本和所有支持的平台:

• Citrix ADC和Citrix Gateway version 13.0 all supported builds

• Citrix ADC和NetScaler Gateway version 12.1 all supported builds

• Citrix ADC和NetScaler Gateway version 12.0 all supported builds

• Citrix ADC和NetScaler Gateway version 11.1 all supported builds

• Citrix NetScaler ADC和NetScaler Gateway version 10.5 all supported builds

该漏洞CVE编号为CVE-2019-19781,CVSS V3.1评分为9.8。该漏洞是1月10日才公开的,但是Unit 42研究人员已经发现了利用该漏洞的在野扫描活动。

本文分析对该漏洞的根源进行分析,并提供PoC和在野攻击活动。

漏洞根源分析

该目录遍历漏洞是由于对路径名处理不当引发的。系统并没有进行数据处理检查,而是直接使用了请求中的路径。存在漏洞的系统会接收到一个含有/vpn/../vpns/services.html这样路径的请求,运行Citrix产品的apache服务器会将路径从/vpn/../vpns/简单地转为/vpns/。Apache系统中的该漏洞使得远程攻击者可以可以在无需用户认证的情况下利用目录遍历请求和访问敏感文件。

在其他情况中,可能会更加严重。该目录遍历漏洞可以应用于没有认证和处理的用户输入。因此,攻击者可以通过POST请求在有漏洞的服务器上构造一个XML文件。之后,当攻击者用另一个HTTP请求来访问该文件时,XML文件中的恶意代码就会执行。

PoC

研究人员在测试环境中构造了以下PoC,并观察了关于这些目录遍历请求的响应。这些PoC表明目录遍历请求会被有漏洞的系统成功处理。其中一些请求甚至可以提供敏感文件访问,导致信息泄露甚至远程代码执行。

GET /vpn/../vpns/services.html HTTP/1.1

Figure-1.-Successful-response-with-PoC-request-1024x344

图1. PoC请求的成功响应

GET /vpn/../vpns/cfg/smb.conf HTTP/1.1

Figure-2.-Successfully-access-smb.conf-file-with-PoC-request-1024x448

图2. PoC请求成功访问smb.conf文件

GET /vpn/../vpns/portal/scripts/newbm.pl HTTP/1.1

GET /vpn/../vpns/portal/scripts/rmbm.pl HTTP/1.1

在野漏洞利用

研究人员发现互联网上暴露着大量有漏洞的系统。在Shodan上搜索Citrix ADC,就有超过700条有漏洞的Citrix产品。

Figure-3.-Vulnerable-Citrix-hosts-list-from-Shodan-1 图3. 有漏洞的Citrix主机列表

研究人员发现了该漏洞的多个在野利用。如图5所示,目录遍历请求可以在无需用户认证的情况下暴露和提取smb.conf。如图6所示,NSC_USER是在HTTP header中利用目录遍历的关键,可以引发远程代码执行。

Figure-4.-Attack-activity-found-in-the-wild-1024x274 图4. 在野攻击活动

Figure-5.-Directory-traversal-request-found-in-the-wild-1-1024x541

图5. 在野目录遍历请求

Figure-6.-Directory-traversal-request-found-in-the-wild-1-1024x429

图6. 在野目录遍历请求2

建议

Citrix建议用户应用特定的响应策略来过滤漏洞利用请求。

add responder action respondwith403 respondwith "\"HTTP/1.1 403
Forbidden\r\n\r\n\""
 
add responder policy ctx267027
"HTTP.REQ.URL.DECODE_USING_TEXT_MODE.CONTAINS(\"/vpns/\") &&
(!CLIENT.SSLVPN.IS_SSLVPN ||
HTTP.REQ.URL.DECODE_USING_TEXT_MODE.CONTAINS(\"/../\"))"
respondwith403

IoCs

111[.]206[.]59[.]134

111[.]206[.]52[.]101

111[.]206[.]52[.]81

111[.]206[.]59[.]142

104[.]244[.]74[.]47

104[.]168[.]166[.]234

23[.]129[.]64[.]157

27[.]115[.]124[.]70

27[.]115[.]124[.]9

27[.]115[.]124[.]74

45[.]32[.]45[.]46

45[.]83[.]67[.]200

47[.]52[.]196[.]15

47[.]52[.]196[.]152

167[.]88[.]7[.]134

185[.]212[.]170[.]163

5[.]101[.]0[.]209

185[.]220[.]101[.]69

85[.]248[.]227[.]164

192[.]236[.]192[.]119

192[.]236[.]192[.]3

94[.]140[.]114[.]194

CVE-2019-19781 PoC:等您发表观点!

发表评论


快捷键:Ctrl+Enter