漏洞关键信息 漏洞名称: Unauthenticated Firmware Disclosure via /cgi-bin/DownloadFlash in Tenda AC21 V16.03.08.16 受影响版本: Tenda AC21 V16.03.08.16 提交者: UTSC_BUG_Hunter 漏洞描述 Tenda AC21 V16.03.08.16 存在一个未经身份验证的固件下载漏洞。此漏洞源于Web管理界面的设计缺陷。/cgi-bin/DownloadFlash路径在处理HTTP请求时没有执行任何身份验证或授权检查。 远程攻击者可以绕过登录过程(无需用户名或密码),直接通过访问该路径使设备导出物理Flash内存的完整二进制镜像。此镜像通常包含完整的操作系统文件系统、内核、引导加载程序和敏感配置数据(如账户哈希、硬编码凭证、私钥等)。 漏洞细节 1. 缺乏身份验证(源端) - 在后端C实现中,DownloadFlash函数直接映射到此URL路径,而敏感接口应首先调用权限检查(如websGetAuth),此函数在入口处立即执行功能逻辑。 2. 敏感操作触发 - 在数据传输之前,程序调用系统命令停止某些配置管理服务(如cfmd),这可能导致下载过程中出现服务不稳定或不可用。 3. 完整的Flash导出(接收端) - 程序利用upload_all_flash函数将底层Flash芯片的内容直接传输到HTTP响应套接字。由于Content-type设置为config/conf且未应用加密,攻击者可以接收原始二进制数据。 PoC(概念验证) 包含一个Python脚本,用于验证漏洞并下载固件。详细代码请查看截图中的PoC部分。 建议修复 加强身份验证:在DownloadFlash函数的入口点实现会话验证逻辑。 移除调试/测试接口:如果此接口仅用于生产线测试,应移除CGI。 固件加密和签名:在Flash内存中加密关键分区,以防止直接提取敏感信息。 限制访问源:实现防火墙规则,限制对/cgi-bin/路径的访问,仅允许受信任的主机。