关于三菱smartRTU操作系统命令注入漏洞(CVE-2019-14931)的PoC

概要

产品: 三菱电机 smartRTU 和 INEA ME-RTU

固件版本: 三菱电机 2.02及之前版本/INEA 3.0及之前版本

制造商: 三菱电机/INEA

CVE编号: CVE-2019-14931

关于三菱RTU更多介绍:

https://eu3a.mitsubishielectric.com/fa/en/products/cnt/plcccl/items/smartRTU/local;

关于INEA RTU更多介绍:

http://www.inea.si/en/telemetrija-in-m2m-produkti/mertu-en/。

后果:如果该漏洞被利用,黑客可以远程的方式在RTU上执行任意操作系统命令。

1. 漏洞详情

该漏洞允许黑客在相关RTU上远程执行任意操作系统命令,因为RTU基于web的远程配置应用对用户输入数据不做任何过滤。在“mobile.php”页面提供的“Mobile Connection Test”功能中,允许用户ping任意网址或者IP地址;黑客可以在输入IP地址或者网址的尾部添加shell命令分隔符(;),之后接着输入所需要执行的操作系统指令。

当“Mobile Connection Test”功能被执行的时候,RTU会调用“action.php”,该脚本的内容如下:

由于缺乏对用户输入数据的过滤,黑客可以在$command变量后面加挂需要执行的操作系统命令。例如,host变量可以是字符串:“www.inea.si;ping 127.0.0.1”,那么系统首先会执行合法的ping命令来测试www.inea.si的连通性,然后再执行非法ping命令来测试本地主机的连通性。

通过配置文件可以发现,用户“www-data”可以通过sudoers执行若干具有root权限的指令,该配置文件的存储的文件路径为/etc/sudoers.d/viswww。下表所示为用户“www-data”的所有权限。

虽然允许以root权限执行的命令非常有限,但是仍然可以利用/usr/sbin/service命令来绕过授权限制。通过利用“service”命令,可以在RTU上启动netcat服务并创建一个具有root权限的shell。具体操作如下:

下面代码所示为成功在RTU上成功以root权限运行shell:

下面代码段所示为从远程攻击主机上看到的shell成功执行:

由于session检查的缺失,使得黑客可以直接把payload发送给“action.php”从而实现上述攻击。下图所示为在攻击主机上远程执行curl命令。

2. PoC

下图所示代码段为PoC在RTU上成功运行时的输出结果:

下图所示是PoC的代码详情:

来源:https://www.mogozobo.com/?p=3593

整理:孙中豪,何跃鹰

声明:本文来自工业互联网安全应急响应中心,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。