0x01漏洞描述

三菱电机的 smartRTU 和INEA ME-RTU中存在未经身份验证的远程操作系统命令注入漏洞。

0x02漏洞复现

该漏洞允许攻击者在相关 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:

由于 session 检查的缺失,使得黑客可以直接把 payload 发送给“action.php”从而实 现上述攻击。

下图所示为在攻击主机上远程执行 curl 命令。

0x03漏洞POC

POC:https://cxsecurity.com/issue/WLB-2019080056

0x04修复建议

请关注官网:https://www.mitsubishielectric.com/

最后修改:2021 年 03 月 09 日
如果觉得我的文章对你有用,请随意赞赏