漏洞概要 关注数(7) 关注此漏洞
缺陷编号: WooYun-2015-105310
漏洞标题: ORICO NAS网络存储服务器远程任意命令执行等多个漏洞
相关厂商: ORICO
漏洞作者: 路人甲
提交时间: 2015-04-04 11:59
公开时间: 2015-07-06 11:18
漏洞类型: 设计不当
危害等级: 高
自评Rank: 20
漏洞状态: 已交由第三方合作机构(cncert国家互联网应急中心)处理
漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 help@wooyun.org
Tags标签: 设计不当
漏洞详情
披露状态:
2015-04-04: 细节已通知厂商并且等待厂商处理中
2015-04-07: 厂商已经确认,细节仅向厂商公开
2015-04-10: 细节向第三方安全合作伙伴开放(绿盟科技、唐朝安全巡航、无声信息)
2015-06-01: 细节向核心白帽子及相关领域专家公开
2015-06-11: 细节向普通白帽子公开
2015-06-21: 细节向实习白帽子公开
2015-07-06: 细节向公众公开
简要描述:
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),参见此处http://**.**.**.**/DriverDownload.html。
漏洞起因在于一处代码没有进行必要的身份认证,导致任意访问者均可利用其设计错误进行远程任意命令执行。
ORICO NAS的WEB管理界面下的绝大多数php页面都在头部进行了必要的身份认证,代码如下:
check.login.php的代码如下:
未经合法身份认证的访问者在访问受保护页面时因为session中的login变量没有值,所以会被直接重定向到login.php页面,无法继续访问敏感内容。
然而百密一疏,在/webman/php/html/login.base.php文件中却缺少该项必要的检查,从而导致堡垒被攻破。login.base.php的代码如下:
从代码中可以看出,页面无身份检查步骤,用户输入的username和password及clienttime变量没有进行必要的过滤,导致任意访问者均可通过上述三个变量进行命令注入,带入下面的exec函数,引发远程命令执行。
普通的命令执行在很多案例中均有探讨,在此不做过多解释,可以自由发挥,进行文件上传下载、内网扫描等都不是问题,这里仅做一个比较有意思的测试,在上面的代码中我们注意到这样一个比较语句:
很显然,该代码的本意是$execcmd变量中的内容被系统执行后如果返回的结果是"pass"则代表身份验证通过,可以执行后面的代码,但此处因为有了命令注入和exec函数的特殊之处,导致我们不需要口令就可轻松取得合法身份进行访问,我们知道,exec函数的返回值为系统执行后的最后一行,因此我们只要在注入的命令中让最后的输出行内容为"pass"即可取得一个被系统承认的session,具体方法请看下面的测试代码部分,如果这时的username为admin,则获取的seesion就有了管理员权限,有了系统承认的管理员session,我们就可以正常访问/webman/index.php页面,对NAS进行任意操作了,想看文件就看文件,想改配置就改配置,想关机就关机,想升级固件就升级固级。
对文档路径下的所有页面进行代码审核发现,还有多处存在命令注入漏洞,但是这些页面因为有身份检查,所以危害性没有上面的漏洞强,必须要有合法的管理员身份做为前提,举个例子,如/webman/php/html/03.base.php,代码见下:
类似这样调用exec函数的地方还有不少,用户的输入没有任何检查过滤就拼接进$execcmd变量,这里就不一一列举了。
普通用户虽然不能进行命令注入执行,但有一处任意文件下载漏洞,在/webman/php/html/downloadFile.php中,没有对输入的文件路径进行过滤检查,用户可以利用../的组合绕过设定的路径检测来获取任意敏感文件,页面代码如下:
上面的路径检测很简单,只判断strncmp($file,$absolutepath,strlen($absolutepath))!= 0,用户只要让$_GET["src"]的前面部分为【/mnt/sda1/home/用户名/】即可符合条件,后面部分可以添加任意../的组合进行路径回溯,最后配合想要的文件路径取得感兴趣的文件。这个应该是很普通的绕过方法,此处不做详细解释了。
漏洞证明:
在浏览器地址栏中输入下面测试代码中的URL,如果获取到的页面显示success则证明攻击成功。可以在地址栏中输入http://hostname/webman/index.php进行管理操作。
样例:(都是网上搜的,不保证时刻存活)
**.**.**.**
**.**.**.**
**.**.**.**
**.**.**.**
**.**.**.**
修复方案:
身份检查,用户输入过滤。
版权声明:转载请注明来源 路人甲@乌云
漏洞回应
厂商回应:
危害等级:高
漏洞Rank:20
确认时间:2015-04-07 11:16
厂商回复:
CNVD确认并复现所述情况(确认通用性还需进一步实例证明),由CNVD通过公开联系渠道尝试向设备生产厂商通报。
最新状态:
暂无
漏洞评价:
对本漏洞信息进行评价,以更好的反馈信息的价值,包括信息客观性,内容是否完整以及是否具备学习价值