Tenda路由器漏洞分析

固件安全
2023-01-07 18:15
44952

1.Tenda路由器漏洞分析 CVE-2020-13393

(1)漏洞原理

Tenda路由器的Web服务器httpd中存在一个缓冲区溢出漏洞,在处理POST请求的参数时,数值会直接在strcpy中用于放置在堆栈上的局部变量,造成缓冲区溢出。

(2)影响版本

image.png

(3)环境模拟

1.对固件进行提取

image.png

2.使用ARM架构的qemu模拟httpd运行

image.png

当进行模拟的时候会报如下错误:

image.png

3.根据模拟报错的结果进行搜索和Patch二进制文件

image.png

成功启动调试,并监听9999端口

4.IDA远程调试httpd根据报错提示的字符串进行字符串搜索,根据调用,追踪到如下的位置,这里主要是模拟失败的地方

image.png

这里造成启动失败的原因主要是由于check_network和ConnectCfm造成启动失败,这两个函数主要检测网路用的,但是由于模拟缺失,所以只要绕过这两个函数就能成功将设备启动,这里把MOV R3, R0汇编代码Patch成MOV R3, #1及可完成指定的跳转。这里使用rasm2将汇编指令转换成opcode,使用二进制编辑器更改指定代码即可,这里也可以使用IDA自带的Patch插件。

image.png

使用010Editor将0030a0e1替换成0130a0e3,完成Patch

image.png

这里先配置br0虚拟网卡是得httpd应用完整启动

image.png

这是使用qemu模拟可以成功的启动应用

image.png

这里可以看到已经成功启动httpd服务

(4)漏洞分析

1.造成漏洞的原因是对传输过来的字段没有进行长度校验直接使用strcpy函数进行拷贝造成缓冲区溢出漏洞

image.png

通过ida分析可以看出httpd在处理传递的参数时没有进行校验且使用危险函数进行拷贝。

(5)POC验证

1.编写POC

image.png

POC对time字段进行了溢出测试

2.IDA调试httpd

image.png

配置IDA进行调试并设置相应断点

image.png

attach上对应的调试进程进行调试,F9直接启动运行

image.png

执行poc脚本进行测试

image.png

这里可以看出成功停到下断点的位置,单步进行调试,可以看到发生溢出

image.png

这里成功验证POC

2.Tenda路由器漏洞分析CVE-2020-13392

(1)漏洞原理

Tenda路由器的Web服务器httpd中存在一个缓冲区溢出漏洞,在处理post请求的funcpara1的参数时,sprintf将该值直接使用到堆栈上,造成缓冲区溢出

(2)影响版本

image.png

(3)漏洞分析

获取对应的参数,传递给sub_4E9CC函数

image.png

将第一个参数传递给v6

image.png

使用sprintf完成格式化输出,但没做边界检验

image.png

image.png

POC

image.png

3.Tenda路由器漏洞分析CVE-2020-13394

(1)漏洞原理

路由器的Web服务器httpd中存在一个缓冲区溢出漏洞。在处理POST请求的/ goform/SetNetControlList列表参数时,将在strcpy中直接使用该值访问放置在堆栈上,造成缓冲区溢出

(2)影响版本

image.png

(3)漏洞分析

获取传递的结果

image.png

使用strcpy函数直接将数据进行拷贝,未进行任何校验

image.png

POC

image.png

4.Tenda路由器漏洞分析CVE-2020-13391

(1)漏洞原理

路由器的Web服务器httpd中存在一个缓冲区溢出漏洞。在处理POST请求的/ goform/SetSpeedduizspeed_dir参数时,在sprintf中直接将值用于放置在堆栈上,造成缓冲区溢出。

(2)影响版本

image.png

(3)漏洞分析

获取指定参数

image.png

POC

image.png

-end

分享到

参与评论

0 / 200

全部评论 2

zebra的头像
学习大佬思路
2023-03-19 12:15
Hacking_Hui的头像
学习了
2023-02-01 14:20
投稿
签到
联系我们
关于我们