NetGear系列路由器漏洞分析

记录一些NetGear系列路由器漏洞利用及分析,更新ing~

Netgear R7000 - Command Injection

  • 时间:2016.12.06

  • 影响产品:R7000,R7000V1

  • 影响固件版本:R7000-V1.0.7.2_1.1.93.chk

  • 漏洞链接:https://www.exploit-db.com/exploits/40889

  • 漏洞利用:

    1
    2
    3
    4
    5
    6
    -Vulnerability
    An unauthenticated user can inject commands threw
    http://RouterIP/cgi-bin/;COMMAND.

    -Proof Of Concept
    http://RouterIP/;telnetd$IFS-p$IFS'45' will open telnet on port 45.
  • 漏洞分析:

    使用burp进行漏洞复现,发现执行ps命令时,路由器进程信息为:

    image-20210118160046864

提取固件,发现httpd与漏洞利用点有关

image-20210118151625341

image-20210118145823088

使用IDA x32分析httpd

搜索字母串”cgi-bin”,找到相关代码,对应sub_36C34()函数,F5反编译可以看到伪代码

1
int __fastcall sub_36C34(const char *a1, int a2, const char *a3, int a4)

image-20210118165511660

触发命令执行的点在197行,system(v36),v36是由v41拼接的,“/www/cgi-bin/%s > /tmp/cgi_result”

根据post_data.txt 判断a1是post数据包body部分

image-20210118171249349

由77行,得出v41最大长度为64字节,也就是说执行的payload长度最大为64字节

a3是请求的url,a4是请求类型(例:post)

这个函数分析后,接着向上回溯,xref查看相关函数调用情况,如下图所示:

image-20210119150413636注:这里WinGraph32生成的图片有问题,少了sub_19600()函数

向上由三个函数调用了sub_36C34(),分别是sub_1A100,sub_19600,sub19B3C,这三个函数都由sub_100A0进行调用。

分析可知,