我们分析了Citrix ADC中的一个漏洞,该漏洞使您可以在一分钟内穿透公司的内部网络。

去年年底,Positive Technologies的专家在Citrix ADC软件中发现了 CVE-2019-19781漏洞,该漏洞使任何未经授权的用户都可以执行任意操作系统命令。全球约有8万家公司



受到威胁更糟的是,Citrix ADC安装在组织的外部和内部网络之间的接口上。因此,利用此漏洞之后,攻击者即可立即访问公司的内部网络,并且能够对专用网络部分进行攻击。 在今天的文章中,研究的作者将更详细地分析该漏洞,并详细分析其检测和利用。走!







什么是Citrix ADC



Citrix ADC是一个基于软件的应用程序交付和负载平衡解决方案,专门设计用于加速传统,云和Web应用程序的性能,无论它们在何处托管。此类控制器在IT和电信行业中得到最广泛的使用。根据预测,到2023年,金融和保险公司对ADC的需求将增加。



有多严重



在监视当前威胁(威胁情报)的过程中,发现来自158个国家的至少80,000家公司可能存在漏洞。在发现漏洞时,此类组织的数量排名前五位,其中包括美国(绝对领导者-超过38%的易受攻击组织位于美国),德国,英国,荷兰,澳大利亚。



俄罗斯在各个业务领域的潜在脆弱企业总数中排名第26位-总计超过300个组织。哈萨克斯坦和白俄罗斯分别按脆弱公司的数量排名第44和第45。



截至2020年2月,就潜在脆弱组织的数量而言,排名最高的国家包括巴西(最初发现该漏洞的公司数量的43%),中国(39%),俄罗斯(35%),法国(34%),意大利(33%)和西班牙(25%)。美国,英国和澳大利亚展示了消除漏洞的最佳动力:在这些国家/地区,记录到有21%的公司继续使用易受攻击的设备并且未采取任何保护措施。







发现与运作



在研究的开始,我发现使用路径遍历,未经授权的用户可以访问未经授权无法访问的静态文件(/vpn/../vpns/style.css)。这是在对Citrix ADC进行黑盒分析时发现的。







上面描述的行为使我感兴趣,因此我决定找到Citrix ADC映像并在本地运行(感谢我的同事Yuri Aleinov的帮助)。



首先,我们分析了Apache Web服务器配置(/etc/httpd.conf),该配置负责此应用程序的Web界面。如下图所示,模式“ /vpns/portal/scripts/.*\.pl$下的路径由ModPerl :: Registry函数处理。事实证明,可以从该文件夹执行perl脚本/ netscaler /门户/脚本/未经授权。







之后,我开始通过转到/vpn/../vpns/portal/scripts/ [scriptName] .pl来分析可以调用的脚本







几乎每个脚本都调用NetScaler :: Portal :: UserPrefs模块(/netscaler/portal/modules/NetScaler/Portal/UserPrefs.pm的csd函数。该函数与HTTP标头NSC_USER和NSC_NONCE一起使用。第二个标头没有采取任何有趣的操作,但是NSC_USER标头的值用作文件名。如果该文件(其名称作为NSC_USER标头的值传递)不存在,则使用特定结构创建该文件,如果该文件已经存在,则将基于$ doc变量进行解析 事实证明,如果在文件名中使用路径遍历,则可以在具有写许可权的文件系统的任何目录中创建扩展名为“ .xml”的文件。要检查这一点,请将“ ../../../../tmp/myTestFile”行作为“ NSC_USER”标头的值发送,并检查文件是否在“ / tmp /”目录中。 在此阶段,我们可以创建扩展名为“ .xml”的文件,但是无法控制文件的内容。 让我们注意脚本“ newbm.pl”,该脚本也位于我们感兴趣的目录中。该脚本采用POST参数并将参数的值写入文件(其名称在NSC_USER标头中指定),例如``url'',``title''和``desc''。



























现在,不仅可以在任意位置创建xml文件,而且还可以部分控制它们的内容。



要继续到RCE的路径,让我们回到Web服务器配置并注意,另外一个路径(/ vpns / portal /)由perl函数NetScaler :: Portal :: Handler(/ netscaler / portal / modules / NetScaler / Portal / Handler.pm







处理程序函数获取路径中最后一个“ /”字符之后的部分作为文件名,在“ / netscaler / portal / templates /”文件夹中查找它,并尝试使用“ Template Toolkit”库呈现此文件。 因此,如果我们可以使用模板将文件加载到文件夹中,则也可以调用其渲染器。











由于模板工具包库以无法使用标准方法执行perl代码的方式工作,因此进一步的开发变得很复杂。例如,不能使用“ [%PERL%]指令







基于这些限制,我决定在标准库插件中寻找漏洞。考虑一个类似于“ Datafile”的插件(/usr/local/lib/perl5/site_perl/5.14.2/mach/Template/Plugin/Datafile.pm)。该文件很小,因此我们立即注意对带有两个参数的标准函数“ open”的调用。这种使用是不安全的,并可能导致RCE。







我们正在尝试在本地利用此漏洞,并进行检查,以在文件夹“ / tmp /”中创建文件“ testRCE”。







目前,我们可以在系统上的任意位置创建文件,以部分地控制模板工具包库中文件的内容和漏洞。我们使用所有这些命令来获得未经授权的用户执行任意命令。



在带有模板的文件夹中创建一个文件,对其进行呈现将导致代码的执行和Web命令行解释器的创建。







然后我们渲染该文件。







我们转向之前创建的脚本(Web Shell)并执行任意OS命令。







如何保护自己



思杰发布了指导,以解决此漏洞。此外,制造商建议用户立即将所有易受攻击的软件版本更新为推荐的版本。



公司可以使用应用程序级防火墙来阻止潜在的攻击。例如,PT应用防火墙开箱即用地检测到此攻击:应将系统阻止危险请求以进行实时保护。考虑到已识别漏洞的总生存期(自软件的第一个漏洞版本发布以来,即自2014年以来就一直很重要),回顾此漏洞的可能利用程度(并因此危害基础架构)也很重要



从2019年12月18 开始PT Network Attack Discovery的用户可以利用特殊规则来检测在线尝试利用此漏洞的尝试。



作者积极技术Mikhail Klyuchnikov(@ __mn1__



时间线



  • 2019年12月5日报告给Citrix
  • 2019年12月19日,发布了Citrix缓解措施



All Articles