GPON Home Gateway 远程命令执行漏洞分析

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

日期:2018/05/04

0x00 前言

2018/04/30,vpnMentor公布了 GPON 路由器的高危漏洞:验证绕过漏洞(CVE-2018-10561)和命令注入漏洞(CVE-2018-10562)。将这两个漏洞结合,只需要发送一个请求,就可以在 GPON路由器 上执行任意命令。本文在复现该漏洞的基础上,分析了相关漏洞形成的原因。

0x01 漏洞文件定位

在有回显的远程命令执行漏洞中,使用 ps 命令往往能够很好地定位到漏洞点。

可以很明显地看到,进程14650执行了我们的命令,找到上一个进程14649 root /bin/WebMgr -p 20 -s 0。因为 pid 是递增的,所以很可能是 /bin/WebMgr 这个文件存在漏洞。

0x02 漏洞分析

在获取到某设备的 /bin/WebMgr/lib/ 文件后,我们开始分析。

2.1 分析前

分析前研究了这个漏洞的利用,发现了该web服务器是 GoAhead-webs

根据 Server字段判断,该web服务器的版本 <= GoAhead 2.5.0GoAhead 3.x 版本的 Server 默认为 GoAhead-http

在尝试 https://www.seebug.org/search/?keywords=goahead&page=2已有的 GoAhead 2.x 系列的漏洞无果,推测该web服务器可能基于 GoAhead2.5.0版本进行了二次开发。

2.2 验证绕过漏洞

ida 打开 WebMgr 后发现函数流程并不完整,所以使用了简单粗暴的方式,直接搜索 images/,定位到函数 webLoginCheck

但是该函数在 WebMgr 中并没有被调用,故这里我们结合漏洞作出合理猜测:

当该函数 return 0时表示不需要验证

结合函数逻辑,我们可以知道:当 url 中含有 style/,script/时也可以绕过验证。

2.3 命令执行漏洞

由于之前读过 GoAhead 2.1.8的源码,所以知道 WebMgr 中定义 cgi 的逻辑为:

先通过 websFormDefine 定义不同的cgi接口要调用的函数,然后再通过 websUrlHandlerDefine 加载 websFormHandler

举个例子:

websFormDefine((int)"FLoidForm", (int)sub_1C918);
websUrlHandlerDefine("/GponForm", 0, 0, &websFormHandler, 0);

这意味着当 url 中的 path/GponForm 开头时,会使用 websFormHandler 去处理,然后 websFormHandler 会寻找通过 websFormDefine() 定义的各种路径,然后调用对应的函数。 在这里,就是访问 /GponForm/FloidForm 时会调用 sub_1C918 完成相关操作。

exp 中,通过对 /GponForm/diag_Form 发送请求最终实现了命令执行。根据上文,可以找到 /GponForm/diag_Form 调用了函数 sub_1A390,结合 system() 的调用流程,我们可以知道 sub_1A390 调用了 sub_1A684,最终通过 system() 执行命令。

按照流程分析入下图:

sub_1A684中, 主要还是判断传入的 dest_host 是否合法。如果不合法或者无法解析,将会进行如下处理:

这也可以从我们第一张图:执行 ps 命令的结果中得到验证。

0x03 影响范围

根据 ZoomEye网络空间搜索引擎 的探测结果,一共有 2141183 台路由器可能受该漏洞影响。

相关国家分布如图所示:

0x04 结语

在分析漏洞后,我们尝试寻找该类路由器所属的厂商。在 /web/images/下,我们找到了多个国内外厂商的 logo,但是未有其它证据证明这些路由器属于这些厂商。

在查阅其它资料后,我们更倾向于这些路由器是 OEM 或者 ODM 出来的产品。因为很难找到生产厂商,所以修复工作将会更加困难。由于该漏洞影响范围广,利用简单,危害巨大,各大僵尸网络家族很可能会将该漏洞列入其利用库,需要警惕。

0x05 参考链接

  1. vpnMentor公布的 GPON 路由器的漏洞undefinedhttps://www.vpnmentor.com/blog/critical-vulnerability-gpon-router/
  2. Seebug漏洞平台 收录该漏洞undefinedhttps://www.seebug.org/vuldb/ssvid-97258
  3. ZoomEye网络空间搜索引擎 搜索结果undefinedhttps://www.zoomeye.org/searchResult?q=%22GPON%20Home%20Gateway%22

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏数据之美

根据ip查找ISP运营商和归属地的几种方法

一般来说都是根据网上流传的各种IP库来解析获取对应的ISP和归属地的, 除非有实力的公司自己从运营商获取数据,然后做数据分析得到。 下面介绍前者,如何...

1.9K10
来自专栏快乐八哥

Ubuntu12.04安装QQ for Linux

最近把自己的笔记本安装了一个Ubuntu,现在的笔记本有2个系统。一个是Window XP,一个是Ubuntu 12.04。其实就是安装的双系统,因为自己工作是...

3685
来自专栏杨建荣的学习笔记

使用Linux命令发送邮件(r2笔记94天)

在平时的工作中,可能很多环境都有自己的内网环境,如果发生一些问题的时候,可以通过内网环境发送邮件到指定的邮箱中。这种略显智能的方式可能在很多工作场景中使用,一般...

3765
来自专栏tkokof 的技术,小趣及杂念

疑难杂症又一记

下了 OGRE 的 1.10.11 版本,使用 CMake 生成了相应的工程文件,遂而编译源码和示例,一切都挺顺利,但是当尝试 Debug 模式下执行 Samp...

621
来自专栏FreeBuf

挖洞经验|看我如何挖到了一个价值5K刀的谷歌“404页面”

大家别慌,这是一篇很短的文章…文章虽短,但希望能给大家日常挖洞带来灵感或启发! 在今年一月份的某一天,作为一个非常喜欢搞事情的人,当时的我正在尝试寻找Googl...

2609
来自专栏林德熙的博客

文件传输

最好用的还是 Utorrent ,这个软件可以用来做种也可以用来下载。可以把自己的文件通过做种分享给小伙伴,一般在局域网分享使用 utorrent 是很好的。

3202
来自专栏idealclover的填坑日常

如何使用github给大佬递茶

最近也是闲到没事干(误),开始给开源项目打小黑工贡献代码,当个dalao手底下的端茶党。但是看来端茶党也不是那么容易做的或许只是傻翠他智商太低跟不上,在打小黑工...

1732
来自专栏MySQL

10款常见MySQL高可用方案选型解读

关于对高可用的分级我们暂不做详细的讨论,这里只讨论常用高可用方案的优缺点以及选型。

8129
来自专栏向治洪

android个推平台

最近有个朋友想要推送一些消息到自己的APP上,自己用了HTTP轮询的方式比较耗电,也比较占用流量,一旦用户关闭了进程,消息则很难触达,于是,咨询我有没有什么好的...

2146
来自专栏云计算认知升级

【腾讯云的1001种玩法】十分钟轻松搞定云架构:CDN的命中率是什么

十分钟轻松搞定云架构,这节课中我们来深入了解什么是CDN 的命中率,CDN为什么能帮你省下钱?又如何省下更多的钱?

8490

扫码关注云+社区

领取腾讯云代金券