漏洞概要 关注数(13) 关注此漏洞
缺陷编号: WooYun-2015-101511
漏洞标题: TerraMaster NAS网络存储服务器多处任意命命执行漏洞
相关厂商: www.terra-master.com/
漏洞作者: 路人甲
提交时间: 2015-03-17 17:13
公开时间: 2015-04-29 17:14
漏洞类型: 设计缺陷/逻辑错误
危害等级: 高
自评Rank: 15
漏洞状态: 已交由第三方合作机构(cncert国家互联网应急中心)处理
漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 help@wooyun.org
Tags标签: 设计错误
漏洞详情
披露状态:
2015-03-17: 细节已通知厂商并且等待厂商处理中
2015-03-18: 厂商已经确认,细节仅向厂商公开
2015-03-28: 细节向核心白帽子及相关领域专家公开
2015-04-07: 细节向普通白帽子公开
2015-04-17: 细节向实习白帽子公开
2015-04-29: 细节向公众公开
简要描述:
TerraMaster NAS网络存储服务器存在多处任意命令执行漏洞。
详细说明:
受YY-2012 WooYun-2015-95059的启发,对TerraMaster的NAS进行了一番研究,发现存在不少问题,在此一并列出,纯属学习研究性质,不妥之处敬请指正。
首先到TerraMaster的官方网站上下载一个大小为50M左右的固件升级文件update-2.374.bz2,对应型号是F4-NAS。
解压后发现网页部分位于/usr/www目录,但是php源码被加密,文件头部显示一个特殊的字符串\tspartacus\t,后面为随机乱码。
经查看发现该设备的php主程序位于/usr/sbin/php-cgi,对该程序进行反汇编后发现存在上述字符串,
根据周边的字符串信息,我们基本可以确认该设备采用php-screw对源码进行加密,到SourceForge上下载php-screw源代码,然后手动修改一下源代码即可将加密部分变成解密程序,编译后可用于php加密代码的解密。
有了明文源代码,就可以进行正常的代码审计工作了,在/usr/www/include/ajax/ajaxdata.php文件中,发现存在多处任意命令执行的隐患。
程序先将$_POST全局变量赋给局部变量$data,再逐一判断执行各个功能分支,流程部分如下
在scanwlan分支中
else if(isset($data['scanwlan']))
{
if($data['scanwlan'] == 0){
……
}else if($data['scanwlan'] == 1){
if($data['linkstat'] == 0){
……
}else if($data['linkstat'] == 1){
$cmd = "$_func_common && noontec_wirelssapdisconnect ".$data['wlanName']."";
$return = $root[wifi][linking]." ".$data['ssid']." ".$root[wifi][wifiSign];
shell_exec($cmd);
}
echo $return;
}
}
在scanwlan=1且linkstat=1时,$cmd变量在装配时带入了$data['wlanName'],此处变量由$_POST而来,用户可控且无过滤,可轻易引发下面shell_exec执行时的命令注入。
再如在SNMP分支中
else if(isset($data['SNMP']))//--------snmp stop---------
{
if($data['SNMP'] == 0){
……
}else if($data['SNMP'] == 1){
shell_exec("$_A00snmpd stop");
$command = "snmpdset 1 \"".$data['SNMPdata']."\"";
shell_exec($command);
和上面一样的原理,$data['SNMPdata']因用户可控且无过滤,轻易引发命令注入。
如上情况在整个ajaxdata.php中多处存在,这里就不一一列举,道理都是一样。
漏洞证明:
POST时带入恶意数据即可。如scanwlan=1;linkstat=1;wlanNmae=xxx%3byyy
yyy为要执行的具体命令。
修复方案:
不要直接将用户输入带入命令中执行。
版权声明:转载请注明来源 路人甲@乌云
漏洞回应
厂商回应:
危害等级:高
漏洞Rank:10
确认时间:2015-03-18 13:36
厂商回复:
CNVD确认并复现所述情况,已经由CNVD通过网站公开联系方式(或以往建立的处置渠道)向网站管理单位(软件生产厂商)通报。
最新状态:
暂无
漏洞评价:
对本漏洞信息进行评价,以更好的反馈信息的价值,包括信息客观性,内容是否完整以及是否具备学习价值