当前位置: 首页 > news >正文

Tenda AC20路由器缓冲区溢出漏洞分析

1.前言

七月底,在对 Tenda AC20 路由器 进行安全分析时,发现其固件在处理特定输入时存在 缓冲区溢出漏洞。

该漏洞源于程序在拷贝用户输入时缺乏有效的边界检查,攻击者可以通过构造恶意请求触发溢出,从而导致系统崩溃,甚至在某些场景下获得更高权限,进而完全控制设备。

经过多次验证与测试,确认该漏洞风险较高,对设备的安全性影响严重。

我整理了一份详细的技术报告,内容包括漏洞成因、复现方法及修复建议,并通过正规渠道提交给厂商及 CVE 分配机构。

近日,该漏洞已被正式收录,编号为 CVE-2025-8939 。

2.漏洞概述

Tenda AC20 路由器被发现存在缓冲区溢出漏洞。攻击者可以通过向某些路径发送特制的 HTTP POST 请求来触发此漏洞,从而可能导致拒绝服务 (DoS) 攻击,甚至远程代码执行 (RCE)。

3.漏洞细节

AC20 路由器的最新固件可从腾达官网下载:AC20 升级软件 - 腾达官网

固件可以使用以下在线工具解压:https://zhiwanyuzhou.com/multiple_analyse/firmware/

或者直接使用binwalk解包也是可以的,获得以下文件:

我们要找到/squashfs-root/bin/httpd 二进制文件。

因为httpd就是Tenda 路由器的 Web 管理后台进程,大部分家用路由器,包括 Tenda都提供一个 Web 管理界面,这个界面其实就是由路由器内部的一个小型 Web 服务器httpd提供的。

当用户在浏览器里访问路由器后台时,请求会被发送到路由器本地运行的 httpd 服务,这个二进制文件负责接收、解析 HTTP 请求,比如说登录、修改 Wi-Fi 密码、固件升级等,然后调用底层的系统函数或配置接口。

由于 httpd 要解析用户提交的数据,如果代码没有做好边界检查,就可能导致缓冲区溢出、命令注入等问题,这也是为什么路由器的很多漏洞,很常见的溢出、注入、未授权访问都集中在 httpd 这个二进制文件里。

解包文件里面还有dhttpd二进制文件,它与httpd最大的不同就在于httpd是Tenda 的主后台 Web 管理进程,就是能够对用户可见的路由器后台,而dhttpd则会用来跑一些非核心但需要 Web 接口的功能,像什么诊断、子模块或者是其他特定功能。

在Tenda AC 系列里,Web 管理界面并没有用第三方服务器,比如lighttpd,或者是boa之类的,而是厂商自己写的 httpd 二进制文件。

那么,所有 HTTP 请求直接由这个 httpd 处理,路由器后台的逻辑,像什么 Wi-Fi 配置、系统管理之类的也都在里面实现,所以漏洞就会出现在 httpd 本身。

换句话说,Tenda 的 httpd 本身就是 Web 服务 + 业务逻辑的二合一。

回到正题,我们在httpd文件中发现函数fromSetWifiGusetBasic有缓冲区溢出的风险。

可以看到这里的函数fromSetWifiGusetBasic,该函数会获取shareSpeed的值,然后将其复制到Var数组中,且没有进行长度检查,从而导致缓冲区溢出漏洞。

交叉引用后再往上翻就会发现它其实是有个前提条件的,那就是请求路径必须是WifiGuestSet。

这行代码的作用,是把 WifiGuestSet 这个字符串与具体的处理函数 fromSetWifiGuestBasic 绑定在一起。换句话说,只要有请求命中 WifiGuestSet,设备就会调用对应的函数去执行。

所以我们Poc的请求路径就应该是POST /goform/WifiGusetSet HTTP/1.1 。

路径前加 /goform/ 是 Tenda 固件的惯用套路,结合代码逻辑,基本可以确认。

帮助网安学习,全套资料S信领取:
① 网安学习成长路径思维导图
② 60+网安经典常用工具包
③ 100+SRC分析报告
④ 150+网安攻防实战技术电子书
⑤ 最权威CISSP 认证考试指南+题库
⑥ 超1800页CTF实战技巧手册
⑦ 最新网安大厂面试题合集(含答案)
⑧ APP客户端安全检测指南(安卓+IOS)

4.漏洞验证

确定漏洞点之后,我们先把固件跑起来,模拟一个真实运行环境,更好让我们观察是否因为栈溢出而产生崩溃页面

找到 /bin/httpd 文件。要模拟环境,使用以下命令:

sudo chroot ./ ./qemu-mipsel-static ./bin/httpd

等一会之后,直接上浏览器输入对应IP地址 192.168.102.145,就可以进入到AC20路由器页面。

跑起来之后,我们使用burpsuite进行一个发包测试,发送一堆垃圾数据到sharedSpeed。

可以发现192.168.102.145/main.html出现了崩溃信息。

而从终端也观察到分段错误,确认发生了栈溢出,也就是shareSpeed这里存在一个缓冲区错误。


文章转载自:

http://p5GDFxe5.kpypy.cn
http://y11uT5pq.kpypy.cn
http://xt7tTOVP.kpypy.cn
http://cYoORwTt.kpypy.cn
http://Isn7AMVk.kpypy.cn
http://LfUz4MyA.kpypy.cn
http://QBF7DMsP.kpypy.cn
http://aOiDX3y6.kpypy.cn
http://6JELVC99.kpypy.cn
http://rndrDmEW.kpypy.cn
http://aztC4VeY.kpypy.cn
http://xFFG860T.kpypy.cn
http://jKYnZvhW.kpypy.cn
http://pTnj1Zmd.kpypy.cn
http://Nas6jzUB.kpypy.cn
http://dtgn4v9K.kpypy.cn
http://ovQ4DSoz.kpypy.cn
http://bosnvwwc.kpypy.cn
http://tHOsEDPK.kpypy.cn
http://5CiJmWF2.kpypy.cn
http://YyZUfRiX.kpypy.cn
http://zjsIvEkX.kpypy.cn
http://C945bXTo.kpypy.cn
http://E1pURg3T.kpypy.cn
http://QcBIjyJb.kpypy.cn
http://lMLtD6yf.kpypy.cn
http://YDxW9l6Q.kpypy.cn
http://dRhVGDlT.kpypy.cn
http://8dMQsMBA.kpypy.cn
http://m96ymuFU.kpypy.cn
http://www.dtcms.com/a/368249.html

相关文章:

  • 52核心52线程,Intel下一代CPU憋了个大的
  • 50kNm风能传动轴扭转疲劳检测试验台指标
  • 蓓韵安禧DHA温和配方:安全营养的智慧守护
  • Kafka面试精讲 Day 8:日志清理与数据保留策略
  • 轨迹文件缺少时间
  • 国产数据库之YashanDB:新花怒放
  • 医疗AI中GPU集群设计与交付实践
  • 基于Compute shader的草渲染
  • go webrtc - 1 go基本概念
  • OSI七层模型与tcp/ip四层模型
  • WebRTC进阶--WebRTC错误Failed to unprotect SRTP packet, err=9
  • 自由学习记录(95)
  • 商业融雪系统解决方案:智能技术驱动下的冬季安全与效率革命
  • 用 epoll 实现的 Reactor 模式详解(含代码逐块讲解)
  • Linux ARM64 内核/用户虚拟空间地址映射
  • linux inotify 功能详解
  • C++中虚函数与构造/析构函数的深度解析
  • 工业客户最关心的,天硕工业级SSD固态硬盘能解答哪些疑问?
  • 在宝塔面板中修改MongoDB配置以允许远程连接
  • 84 数组地址的几种计算方式
  • GCC编译器深度解剖:从源码到可执行文件的全面探索
  • OpenSCA开源社区每日安全漏洞及投毒情报资讯| 4th Sep. , 2025
  • Java 操作 Excel 全方位指南:从入门到避坑,基于 Apache POI
  • 多云战略的悖论:为何全局数据“看得见”却“算不起”?
  • 深入剖析Spring动态代理:揭秘JDK动态代理如何精确路由接口方法调用
  • More Effective C++ 条款29:引用计数
  • 人形机器人控制系统核心芯片从SoC到ASIC的进化路径
  • Docker学习笔记(三):镜像与容器管理进阶操作
  • excel里面店铺这一列的数据结构是2C【uniteasone17】这种,我想只保留前面的2C部分,后面的【uniteasone17】不要
  • Qt图片资源导入