Contents
  1. 1. CVE-2019-17137
    1. 1.1. 0x01
    2. 1.2. 0x02 bindiff比较
    3. 1.3. 0x03 测试
  2. 2. CVE-2019-17373
  3. 3. PSV-2021-0133
  4. 4. CVE-2020-8864
  5. 5. CVE-2020-8863
  6. 6. CVE-2020-15633
  7. 7. CVE-2021-35973
  8. 8. CVE-2021-32030
  9. 9. CVE-2021-20090

之前只针对了CVE-2019-17137进行了分析,后文新增其他绕过漏洞

CVE-2019-17137

此漏洞允许网络邻近攻击者绕过受影响的NETGEAR AC1200 R6220固件版本1.1.0.86(及之前)智能WiFi路由器安装的认证。利用此漏洞不需要身份验证。特定的缺陷存在于路径字符串的处理过程中。通过在路径中插入一个null字节,用户可以跳过大多数身份验证检查。攻击者可以利用这个漏洞绕过系统上的身份验证。

0x01

0x02 bindiff比较

1
2
3
4
Call Graph-----------------------两个文件的函数调用图
Matched Functions----------------两个文件的函数匹配度
Primary Unmatched Functions------主要不匹配函数
Secondary Unmatched Functions----次要不匹配函数

主要查看这几个没有函数名的函数

有的函数比较庞大,根据函数漏洞,是因为路径字符串处理问题,所以可以在ida字符串列表里搜索一下htm之类的后缀,然后查看引用,在版本100中找到在函数sub_00409774中,所以直接查看这里的函数比较

0x0040B4A0 vs 0x0040B758找到了可疑变量a00

解读一下新的补丁

而在漏洞版本中,并没有对00进行检测,如果遇到00就会产生截断

比如发送/index.htm%00currentsetting.htm,函数就会检测uri,在.data中存放着无需认证就可以访问的页面,检测到uri中存在这样的页面,就开始进行URL解码,存在%00产生截断,即访问的是index.htm,由于程序已经认为不需要认证,所以可以直接访问。

(netgear还存在直接拼接currentsetting.htm进行绕过的问题,如通过/aaa.cgi?todo=debug&x=currentsetting.htm进行绕过)

0x03 测试

固件模拟有点麻烦…使用fofa搜索关键字"R6200"

访问该网站,index.htm需要账号密码才能访问。

然后查看currentsetting.htm 版本信息页面,可以直接访问,发现该路由器版本为34,属于漏洞版本。

通过burp抓包,修改uri,达到直接访问index.htm的认证绕过。

CVE-2019-17373

netgear

可以使用

1
2
3
http://target/*.htm?x=1.jpg
or
http://target/*.cgi?A=a&B=b&...&x=1.jpg

进行绕过,主要是因为程序逻辑匹配.jpg等字符串

PSV-2021-0133

NETGEAR 认证绕过:https://ssd-disclosure.com/ssd-advisory-netgear-d7000-authentication-bypass/

mini_httpd

1
2
3
4
5
6
7
8
9
10
LAB_000104f8:
DAT_0001d4ec_needs_auth = 0;
DAT_0001f24c = 0;
}
pcVar4 = (char *)FUN_0000b8f0(1);
iVar3 = strcasecmp(pcVar5,pcVar4);
if ((iVar3 == 0) &&
(pcVar6 = strstr(DAT_0001f330,"todo=PNPX_GetShareFolderList"), pcVar6 != (char *)0x0)) {
DAT_0001d4ec_needs_auth = 0;
}

它检查请求行是否包含todo=PNPX_GetShareFolderList,如果包含,则将变量设置DAT_0001d4ec为 0。似乎该变量(我已将其重命名为_needs_auth)用于检查访问请求的资源是否需要身份验证。如果设置为 0,则无需用户名和密码即可提供资源。

由于它使用strstr来检查,所以字符串需要出现在原始请求行中,但没有检查请求行是否包含其他内容。

这意味着我们可以在 Web 服务器上请求任何无需身份验证的文件,包括配置文件和披露管理用户密码的网页。

CVE-2020-8864

D-Link DIR-882、DIR-878 和 DIR-867路由器

image-20211130165129657

login_result_424090

image-20210903104142396

CVE-2020-8863

D-Link DIR-882、DIR-878 和 DIR-867路由器:认证绕过、后门

image-20210903110342507

CVE-2020-15633

image-20210903112743060

Getcaptchasett

image-20210903112857644

main函数中可以看出,56位是REQUEST_URI,因此,请求url中包含Getcaptchasett列表中的uri即可实现绕过

image-20211130165814696

CVE-2021-35973

WAC104 version<v1.0.4.15中,%00问题

目标文件:/usr/sbin/mini_httpd

image-20211130171757281

image-20211130171816418

image-20211130171837116

对/ . ..和特殊字符进行了检验,但没有检验%00

CVE-2021-32030

ASUS RT-AX56U路由器身份验证绕过

目标文件:/usr/sbin/httpd

image-20210819000010058

在设备的默认配置下,IFTTT 功能没有开启, ifttt_token 默认为空

如果用户传入的 asus_token 也是空值,则 strcmp 会返回 0 表示比较成功,这样就能绕过后续的检查,实现身份验证绕过。

CVE-2021-20090

ASUS DCS-AC88U

目标文件:/usr/sbin/httpd

image-20210820094933867

image-20210820095318853

image-20210820101158404

process_post -> … ->sub_167A8

image-20210820100601882

把 ../ 后的url放到开头,因此如果请求/images/../aaa.cgi ==> /aaa.cgi即可绕过

reference

https://www.anquanke.com/post/id/227623