RSS Feed
更好更安全的互联网

烽火(Fiberhome)HG-110 设备目录穿越漏洞考察

2015-04-03

烽火(Fiberhome)HG-110设备目录穿越漏洞考_微信封面图_黄色波形

知道创宇安全研究团队 2015 . 03 . 31          本文 PDF 下载:烽火HG-110设备录穿越漏洞考察


1.更新情况

版本:第一版

时间:2015 / 3 / 31

描述:第一版完成

2.漏洞概要

近期,国外安全研究员发布了针对全球 ADSL 设备存在目录穿越漏洞的研究<网页链接1>,这个漏洞早在 2011 年就被提出了,影响烽火(Fiberhome)HG-110 型号设备<网页链接2>,本着学习的态度,笔者对该漏洞进行了一番考证,写在这里。

a)漏洞描述

烽火(Fiberhome)HG-110 型号设备目录穿越漏洞<网页链接3>,是由于 webproc 文件在处理参数 getpage 传递过来的文件访问时没有合适过滤,导致用户可以利用 ../../ 跳转访问 web 目录之外的系统文件。

b)漏洞分析

烽火(Fiberhome)HG-110 型号设备目录穿越漏洞在 exploit-db 上被提交了两次<网页链接4>,其中 poc 35597 需要登录授权才能触发漏洞,poc 28450 的 poc 可以绕过权限认证;笔者在 ZoomEye 上检索 HG-110,可惜找不到任何实例,但是检索到了另外一款存在漏洞的设备,由于无法得知其设备名称,简称为 PLC 设备吧(管理页面内有 PLC 字样),本文漏洞分析就以它为例。

在跟踪烽火(Fiberhome)HG-110 设备时,发现其实 netgear 竟然也存在这个漏洞,该漏洞被提交在 exploit-db 上<网页链接5>,影响 NETGEAR WNR500 设备(固件1.0.7.2),WNR500 设备固件是开源的,可以从这里下载:<网页链接6>

在 WNR500 最新固件 1.0.8.1 的源码中,我们发现,代码的版权属于 T&W 公司,经过检索,T&W 属于一家国内的 IT 公司<网页链接7>,代码截图:

image002

由此可以推测,烽火公司和 NETGEAR 公司均使用了 T&W 公司的固件,才导致出现相同的漏洞。同时,难道仅此两家吗?不,PLC 也存在同样问题,或许有更多使用该固件的设备,只是未发掘出来。

PLC 在登录后存在同样问题,可以读取系统配置文件 config.xml:<网页链接8>

结果如图:

image003_1

可以读取内存信息:<网页链接9>

结果如图:

image004_1

可以读取系统帐号信息:<网页链接10>

结果如图:

image005_1

PLC 的问题是有趣的。PLC 从 80 端口访问是需要登录的,然而 80 端口是不可以从外网访问的,而 8080 端口可以从外网访问,并且提供同样的 Web 服务,更重要的是,他可以直接登录设备 Web 管理后台,不需要验证!不知道 PLC 设备的开发者是怎么想的,笔者想知道的是为什么 8080 端口就可以直接登录了,下载 Web 服务进程 mini_http 文件,载入 IDA 分析。

mini_http 进程启动后会监听 4 个端口,分别是 80,808,1050,8080:

image006

mini_http 通过 getsockname() 函数区分哪个端口来的访问做什么响应:

image007

如果是 8080 端口来的访问,那就直接重定向到一个 URL:<网页链接11>

如图:

image008

注意到这个 Location 的重定向跳转中带有一个 retag=1 的参数,经过测试,如果有这个参数就可以不需要口令认证直接登录 PLC 设备 Web 管理后台,看来问题在 retag 这个参数。

跳转到/cgi-bin/webproc 就交给 CGI 文件 webproc 处理了,把 webproc 下载并放入 IDA 分析,我们发现,webproc 文件会判断提交的参数中是否有 retag 参数:

image009

如果有的话,把 sessionid 内容写入/var/redsessiond 文件:

image010

在这里,把外部传递过来的 session 提交给 system() 函数,是可以造成命令注入漏洞的,重点不在此,不表。

那么为什么 retag=1 就可以登录了呢,笔者分析了 webproc 的上下文,始终没有找到原因(也可能是能力问题),纠结几天后,笔者决定把 PLC 设备中所有的进程都分析一遍,终于发现了问题所在,问题在于 logic 进程文件,下载 logic 文件,载入 IDA 分析。

logic 接收消息,如果收到消息中是“check”则读取/var/redsession 文件中的数据:

image011

接下来把 session 增加到授权 session 列表内,并删除/var/redsession 文件:

image012

那 logic 进程是谁发给他的 check 消息呢,代码在 webproc 文件中。

在对 sessionid 的验证中会调用 CheckAuth() 函数:

image013

CheckAuth() 函数就会发送 check 消息:

image014

到此,PLC 设备的登录绕过漏洞分析完毕。

笔者在研究中发现,PLC 设备的 webproc 文件和 NETGEAR 的 webproc 文件是不完全一样的,NETGEAR 没有针对 retag 参数的判断,由此可以推断 PLC 设备固件是对 T&W 固件的二次开发。

c)漏洞修复

PLC 设备笔者无法查找其生产商,所以在漏洞修复升级固件更是无从谈起,如果你恰好用的这款设备,那么建议你从内网 telnet 登录该设备,用户名和密码都是 root,然后在/var/目录下创建 redsession 文件夹:mkdir /var/redsession

这样就可以修复 8080 端口的登录绕过漏洞了。

至于目录穿越漏洞,笔者无能为力,不过至少利用该漏洞需要授权登录,危害较小。

3.ZoomEye 检测报告

在 ZoomEye 中搜索 webproc 字样:

ze_3178

我们找到 3178 条记录,这仅仅是暴漏在外网的 PLC 设备漏洞,其他使用 T&W 公司固件的设备恐怕更多!

4.相关资源链接

1.来源于 CSOONLINE

2.来源于 FreeBuf

3.来源于 Exploit-db

4.来源于 Seclists

 


注:封面图元素来源于网络

作者:明冉 刘 | Categories:安全研究技术分享 | Tags:

发表评论