记录黑客技术中优秀的内容, 传播黑客文化,分享黑客技术精华

ORICO NAS网络存储服务器远程任意命令执行等多个漏洞

2015-07-08 03:35

ORICO Technologies Co.,Ltd. (深圳市元创时代科技有限公司)是电脑/数码周边产品的全球领先厂商,旗下品牌ORICO(奥睿科)透过基于"EASY YOU PC"原创设计理念,让您轻松享受科技数码时代的乐趣,为您的笔记本电脑、PC台式机、平板电脑以及智能手机等终端设备添加更多乐趣!您可以尽享ORICO给您带来的各种电脑,数码配件产品!ORICO致力于为电脑、数码和智能终端产品用户提供创新与易于使用的用户体验。ORICO公司旗下拥有完整的产品研发,模具制造,注塑,五金冲压、生产组装、市场推广服务专业产品研发生产产业链,我们能实时、有效、快速地提供符合用户需求的创新型产品,ORICO拥有最全面的 电脑/数码周边外设配件产品,包括存储、网络、WIFI、蓝牙、USB周边、电脑、智能手机等产品,同时,我们还为业界知名企业提供OEM/ODM服务。
ORICO的NAS网络存储服务器存在远程任意命令执行漏洞

该漏洞通杀ORICO所有系列的NAS设备,包括3529NAS、3529U3RF、3549NAS、3549U3RF、3559NAS、3559U3RF、NTG-LU、 7618NAS、7618U3RF等等,固件版本为官网最新(2014-8-5)

漏洞起因在于一处代码没有进行必要的身份认证,导致任意访问者均可利用其设计错误进行远程任意命令执行。

ORICO NAS的WEB管理界面下的绝大多数php页面都在头部进行了必要的身份认证,代码如下:
 


/* Check Login */
include_once('php/html/check.login.php');


check.login.php的代码如下:
 


if (empty($_COOKIE['PHPSESSID'])){
session_set_cookie_params(14400);
session_start();
}else{
session_start();
setcookie("PHPSESSID", session_id(), time() + 14400);
}
if(session_is_registered('login') && $_SESSION['login'] != '') {

} else {
header("location:/webman/login.php");
exit();
}
?>



未经合法身份认证的访问者在访问受保护页面时因为session中的login变量没有值,所以会被直接重定向到login.php页面,无法继续访问敏感内容。

然而百密一疏,在/webman/php/html/login.base.php文件中却缺少该项必要的检查,从而导致堡垒被攻破。login.base.php的代码如下:
 


$action = $_GET['action'];
if ($action == 'login') {
$username = $_GET['username'];
$password = $_GET['password'];
$clienttime = $_GET['clienttime'];
$execcmd = '/etc/rc.d/CheckUser.sh -u ' . $username . ' -p ' . $password;
$result = exec($execcmd);
if($result == 'pass') {
$execcmd = '/bin/date -u -s '.$clienttime;
exec($execcmd);
session_start();
setcookie("PHPSESSID", session_id(), time() + 30);
$_SESSION['login'] = $username;
……
echo 'success';
} else {
echo 'failure';
}
}
?>



从代码中可以看出,页面无身份检查步骤,用户输入的username和password及clienttime变量没有进行必要的过滤,导致任意访问者均可通过上述三个变量进行命令注入,带入下面的exec函数,引发远程命令执行。

普通的命令执行在很多案例中均有探讨,在此不做过多解释,可以自由发挥,进行文件上传下载、内网扫描等都不是问题,这里仅做一个比较有意思的测试,在上面的代码中我们注意到这样一个比较语句:
 


$result = exec($execcmd);
if($result == 'pass') {



很显然,该代码的本意是$execcmd变量中的内容被系统执行后如果返回的结果是"pass"则代表身份验证通过,可以执行后面的代码,但此处因为有了命令注入和exec函数的特殊之处,导致我们不需要口令就可轻松取得合法身份进行访问,我们知道,exec函数的返回值为系统执行后的最后一行,因此我们只要在注入的命令中让最后的输出行内容为"pass"即可取得一个被系统承认的session,具体方法请看下面的测试代码部分,如果这时的username为admin,则获取的seesion就有了管理员权限,有了系统承认的管理员session,我们就可以正常访问/webman/index.php页面,对NAS进行任意操作了,想看文件就看文件,想改配置就改配置,想关机就关机,想升级固件就升级固级。



对文档路径下的所有页面进行代码审核发现,还有多处存在命令注入漏洞,但是这些页面因为有身份检查,所以危害性没有上面的漏洞强,必须要有合法的管理员身份做为前提,举个例子,如/webman/php/html/03.base.php,代码见下:
 


include_once ('check.login.php');
if( $_SESSION['login'] != 'admin'){
header("location:/webman/login.php");
exit();
}
$action = $_GET['action'];
if($action == 'saveUser'){
$userRowData = $_GET['rowData'];
if($userRowData[1] != null && $userRowData[1] != ''){
$execcmd = '/etc/rc.d/SetUserAccount.sh -u ' . $userRowData[0] . ' -p ' . $userRowData[1];
$result = exec($execcmd);
}



类似这样调用exec函数的地方还有不少,用户的输入没有任何检查过滤就拼接进$execcmd变量,这里就不一一列举了。



普通用户虽然不能进行命令注入执行,但有一处任意文件下载漏洞,在/webman/php/html/downloadFile.php中,没有对输入的文件路径进行过滤检查,用户可以利用../的组合绕过设定的路径检测来获取任意敏感文件,页面代码如下:
 


include_once ('check.login.php');
$filename=stripslashes($_GET["fileName"]);
$file=$_GET["src"];
$absolutepath="/mnt/sda1/home/" . $_SESSION['login'];
if(strncmp($file,$absolutepath,strlen($absolutepath))!= 0){
header("location:/webman/login.php");
exit();
}
$newString = str_replace("*","/",$file);
$createPath = $newString;
$createPath = stripslashes($newString);
header("Content-type: application/octet-stream");
$sendfile_file = str_replace( ',' , '%2c' , rawurlencode($createPath));
header('Content-Disposition: attachment; filename="'.$filename.'"');
header("X-Sendfile2: $sendfile_file 0-");
?>



上面的路径检测很简单,只判断strncmp($file,$absolutepath,strlen($absolutepath))!= 0,用户只要让$_GET["src"]的前面部分为【/mnt/sda1/home/用户名/】即可符合条件,后面部分可以添加任意../的组合进行路径回溯,最后配合想要的文件路径取得感兴趣的文件。这个应该是很普通的绕过方法,此处不做详细解释了。

漏洞证明:

浏览器地址栏中输入下面测试代码中的URL,如果获取到的页面显示success则证明攻击成功。可以在地址栏中输入http://hostname/webman/index.php进行管理操作。

样例:(都是网上搜的,不保证时刻存活)

223.18.195.185

220.246.142.155

189.113.89.18

123.203.173.34

78.97.68.150
 

解决方案:

身份检查,用户输入过滤。

知识来源: www.2cto.com/Article/201507/415301.html

阅读:125456 | 评论:0 | 标签:漏洞

想收藏或者和大家分享这篇好文章→复制链接地址

“ORICO NAS网络存储服务器远程任意命令执行等多个漏洞”共有0条留言

发表评论

姓名:

邮箱:

网址:

验证码:

公告

关注公众号hackdig,学习最新黑客技术

推广

工具

标签云

本页关键词