漏洞概要 关注数(24) 关注此漏洞
缺陷编号:wooyun-2015-0140449
漏洞标题:智能硬件安全之九阳豆浆机设备认证与控制设计缺陷(控制任意女神豆浆机)
相关厂商:joyoung.com
漏洞作者: 只抽红梅
提交时间:2015-09-11 14:04
修复时间:2015-12-10 16:12
公开时间:2015-12-10 16:12
漏洞类型:权限控制绕过
危害等级:高
自评Rank:20
漏洞状态:厂商已经确认
漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 [email protected]
Tags标签: 无
漏洞详情
披露状态:
2015-09-11: 细节已通知厂商并且等待厂商处理中
2015-09-11: 厂商已经确认,细节仅向厂商公开
2015-09-14: 细节向第三方安全合作伙伴开放
2015-11-05: 细节向核心白帽子及相关领域专家公开
2015-11-15: 细节向普通白帽子公开
2015-11-25: 细节向实习白帽子公开
2015-12-10: 细节向公众公开
简要描述:
女神竟然喜欢喝豆浆,喝豆浆,喝豆浆。我要悄悄帮她做。
详细说明:
按照以往的路数,我把九阳豆浆机组成下图所示的网络环境,用来分析九阳豆浆机的安全性。
分析思路是:
1. 通过 burp suite 抓取 app 和九阳云端通讯的数据,用于检测接口是否存在漏洞;
2. 通过 openwrt 上 tcpdump 抓取豆浆机和云端通讯数据,用于检测豆浆机和云端是否存在漏洞;
经过枯燥而又漫长的过程之后,我们有了些许收获。
第一部分先让我们来说说豆浆机的事情,下面是部分抓包截图:
通过分析数据包我们能够知道九阳云端一共有两个对外的 IP
其中 42.121.254.96 开放 8089 端口,在 http 上搭建了WebLogic
而 121.41.20.214 开放 9000 端口和设备通信,9001 端口与手机 app 通信。后端为运行在 Play!framework 的 java程序。
用户通过app绑定设备以及之后开启app时,会通过api.joyoung.com:8089提供的接口依次获取以下信息。
mobile_id –> session_key -> dev_id
在得到设备dev_id号后,app 会发送指令到九阳控制服务器 9001 端口,其中包含要控制设备的dev_id 号。同时九阳控制服务器会通过9000端口和各个智能设备之间保持长连接,智能设备会每分钟发送心跳包保持在线状态。当服务器从9001端口收到控制命令后,会转发命令到对应控制设备所保持的长连接中,这样实现了跨网络的控制。
在观察 9001 端口的通讯数据后,经过简单的测试,其中和设备相关的数据为一个16字节长度的did。查看设备是否在线的包结构大致如下:
在测试中发现,只要获取到 dev_id 值,无需用户正常的认证过程,仍然可以通过 9001 端口直接控制智能设备。8089 端口的认证只是 dev_id 信息获取过程,而没有将验证体现后续的控制过程中。在已知 dev_id 的情况,不管用户是否更改 app 上的用户密码,只要设备在线,都可以直接通过和九阳控制服务器9001端口通讯来控制设备。
那么问题来了,我们怎么获取设备的 dev_id,方法有多种,弱水三千我只取一瓢饮 -- 云端。
这就到了第二部分,说说云端,经过前期工作后,我们收集到云端信息如下:
对其分析后能够得到云端的控制权限,过程略,只给结果
42.120.19.38(apitest.joyoung.com) 存在如下漏洞,可以获取这台服务器的控制权限
1. https://apitest.joyoung.com/jypms/www/user-login-L2p5cG1zL3d3dy8=.html 运行禅道项目管理软件,存在高危漏洞可以直接获取服务器权限,漏洞详情请参考: WooYun: 禅道项目管理软件多个漏洞
2. https://apitest.joyoung.com/phpmyadmin/ 弱口令,能够获取数据库数据,并且可以读取服务器文件等;
经过观察,这台服务器是测试服务器,但是服务器上代码和 42.121.254.96(api.joyoung.com) 大致相同,分析了下 api 接口相关代码,发现上传地方存在漏洞,通过下面数据包可以上传任意文件到 web 目录下
ps:这里走了不少弯路,但是只提一句就是,上传参数中原本有 u_msg 是校验字段,如果这个字段为空就会跳过整个校验过程
所以通过构造上面的数据包可以获取 42.121.254.96(api.joyoung.com) 服务器的权限(webshell)
进而我们可以获取数据库中所有设备的 dev_id,如果设备在线后,就可以发送控制命令了。写python脚本来验证一下:
然后呢?
然后我去给女神做爱心豆浆去。
漏洞证明:
修复方案:
先总结下问题:
1. 九阳豆浆机在设计控制的地方存在缺陷,只要知道 dev_id 就能够对其进行控制;
2. 云端的安全问题会造成能够控制所有设备
再说修复建议:
1. 在对设备进行控制时,除了 dev_id 外,还需要验证用户身份;
2. 云端的问题很多,需要全部修复;
版权声明:转载请注明来源 只抽红梅@乌云
漏洞回应
厂商回应:
危害等级:高
漏洞Rank:15
确认时间:2015-09-11 16:10
厂商回复:
感谢白帽子发现我们系统设计的不足,将尽快安排整改。
最新状态:
暂无