CVE-2021-20090 多款设备身份验证绕过漏洞分析
字数 1130 2025-08-03 16:46:31
CVE-2021-20090 多款设备身份验证绕过漏洞分析与利用
漏洞概述
CVE-2021-20090 是一个影响多款网络设备的身份验证绕过漏洞,主要影响 Buffalo WSR-2533DHP3 和 ASUS DSL-AC68VG 等设备。该漏洞允许攻击者绕过身份验证机制,获取设备管理权限并执行敏感操作。
受影响设备
- Buffalo WSR-2533DHP3
- ASUS DSL-AC68VG (固件版本 5.00.08 build272)
漏洞分析
1. 认证绕过机制
漏洞核心在于 evaluate_access() 函数中的认证检查逻辑:
if (bypass_flag || check_auth(r)) {
// 处理请求
process_get(r) 或 process_post(r);
}
其中 bypass_flag 由 bypass_check() 函数设置,检查请求的 URL 是否在 bypass_list 中:
char *bypass_list[] = {
"/images/",
"/lang/",
"/js/",
"/css/",
"/setup_top_login.htm",
"/login.htm",
"/loginpserr.htm",
"/login.cgi",
"/3g_conn.xml",
"/top_conn.xml",
"/wireless_calibration.htm",
"/cgi/cgi_login.js",
"/cgi/cgi_autologout.js",
"/internet_paused.htm",
NULL
};
攻击者可以通过路径遍历技术绕过认证:
/images/..%2finfo.html
2. httoken 机制分析
虽然可以绕过认证,但访问敏感页面还需要正确的 httoken 值:
- 服务器端生成
httoken并嵌入到页面底部的 img 标签中 - 客户端 JavaScript 解码
httoken并用于后续请求
服务器端生成 httoken 的代码 (ssi_image_token 函数):
token = httoken_get(r->url?r->url:"/");
sprintf(output_buf, "%lu", token);
b64_encode((unsigned char *)output_buf, len, (unsigned char *)p, OUT_BASE64_SZ-len);
so_printf(r, "", p);
客户端解码 httoken 的 JavaScript:
function getToken(){
var objs = document.getElementsByTagName("img");
for(var i=0, sz=objs.length; i<sz; i++){
x = objs[i].src;
if(x.indexOf("data:") == 0){
return ArcBase.decode(x.substring(78));
}
}
return "";
}
漏洞利用步骤
1. 获取初始访问权限
- 访问无需认证的页面 (如
/login.html) - 从页面中的 img 标签提取
httoken: - 解码 base64 部分获取
httoken
2. 绕过认证访问敏感页面
使用路径遍历技术结合获取的 httoken 访问敏感页面:
/images/..%2finfo.html?_tn=<httoken>&t=<timestamp>
3. 注入配置选项
- 找到可以注入配置的接口 (如 ping 功能)
- 在配置值后添加换行符和新配置:
ARC_ping_ipaddress=192.168.1.1\nARC_SYS_TelnetdEnable=1 - 发送重启请求使配置生效
4. 获取 root shell
设备重启后,telnet 服务将启用:
telnet <device_ip>
ASUS DSL-AC68VG 设备分析
- 固件获取:可从官网下载受影响版本固件
https://dlcdnets.asus.com/pub/ASUS/wireless/DSL-AC68VG/DSL-AC68VG_v5.00.08_build272.w.zip - 使用 binwalk 解压固件:
binwalk -Me DSL-AC68VG_v5.00.08_build272.w.zip - 查找 httpd 程序:
find -name httpd ./usr/sbin/httpd - 分析流程与 Buffalo 设备类似,存在相同的认证绕过和
httoken机制
防御措施
- 更新到最新固件版本
- 禁用不必要的管理接口
- 实施网络访问控制,限制管理界面访问
- 监控设备日志中的异常认证尝试
总结
CVE-2021-20090 漏洞展示了 IoT 设备中常见的认证设计缺陷:
- 路径遍历导致的认证绕过
- 关键令牌 (httoken) 的客户端处理方式不安全
- 配置注入漏洞
该漏洞的利用链完整,从初始访问到最终获取 root shell 的每一步都清晰明确,是研究 IoT 设备安全性的典型案例。