『P2P僵尸网络漏洞研究——mozi』 netgear路由器漏洞复现

来源:银弹实验室 2021-07-23 02:15:31

0x0 前言

“IBM的研究人员指出,Mozi的代码与Mirai及其变体重叠,并重用Gafgyt代码,在过去的一年里迅速“登上王座”,在2019年1月至2020年6月期间观察到的物联网网络攻击流量中占90%。新的僵尸物联网攻击流量之王:Mozi”——作者:安全牛 http://m.sohu.com/a/420055251_490113

Mozi的传播利用了许多设备的漏洞,其中就包括了CVE-2016-6277,如下图1、图2所示。


1.png

图1

3.png

图2

0x1 简介

NETGEAR R6250在1.0.4.6.Beta之前,R6400在1.0.1.18.Beta之前,R6700在1.0.1.14.Beta,R6900,R7000在1.0.7.6.Beta之前,R7100LG在1.0.0.28.Beta之前,R7300DST在1.0.0.46.Beta之前,1.0.1.8.Beta之前的R7900、1.0.3.26.Beta,D6220,D6400,D7000之前的R8000,以及可能的其他路由器,允许远程攻击者通过shell在 cgi-bin/ 的路径中执行任意命令。

以Netgear R7000,版本V1.0.7.02_1.1.93为例,复现 CVE-2016-6277

0x2 准备

版本 V1.0.7.02_1.1.93:http://support.netgear.cn/doucument/More.asp?id=2251

调试的程序:httpd

3.1.png

图3

0x3 工具

1. 静态分析:IDA

2. 获取文件系统:binwalk

0x4 测试环境

Netgear R7000路由器真机测试,可以在某宝上或者某鱼上购买(价格不贵)。

0x5 漏洞分析

1. 使用 binwalk -Me R7000-V1.0.7.2_1.1.93.chk 即可解包成功(固件没有加密,可直接分析)。


4.png

图4

2. 将要分析的httpd,拖到IDA中分析,并通过CVE给出的部分信息,大概可以知道,漏洞点出现在下图中。在Mozi程序中,也可以分析出,该漏洞是一个命令执行漏洞,那么只需要找system等命令执行函数即可。

5.png


图5

3. sprintf(cmd, "/www/cgi-bin/%s > /tmp/cgi_result", v41);  通过该命令可以看出,如果将 %s 换成 ;ls 的话,/www/cgi-bin/;ls > /tmp/cgi_result 那么就会将ls的结果存放到 /tmp/cgi_result,假设 /tmp/cgi_result 可以看到ls的结果,那么证明漏洞就存在此处。如下 图6 是通过开放telnet端口进入之后,查看 /tmp/cgi_result,最终发现和预想的一样。如上 图5 所示,如果需要cmd参数执行成功,那么v41参数就必须可以控制。


6.png

图6

4. 往上溯源,发现v41的值来自v14的值,而v14的值来自v10。继续溯源。

7.png

图7

5. 如下 图8 可以看到v10的值来自a3,根据多年经验得出a3是路径。

8.png

图8

6. 从此处可以看出a3是个url,那么不就是Mozi程序中的,/cgi-bin 了吗?从 图9 中可以看出 cgi-bin 后面也可以加 ? ,因为v41参数也可以再次出获取到。

9.png

图9

0x6 小结

这个漏洞相对来说比较简单,适合入门的大白。

如果有兴趣调试的话,可以参考 https://www.freebuf.com/vuls/263705.html