Vivotek CC8160 固件栈溢出漏洞复现分析

Vivotek CC8160 固件栈溢出漏洞复现分析

原创 林昀 山石网科安全技术研究院 2024-06-24 11:33

一、固件提取

http://download.vivotek.com/downloadfile/downloads/firmware/cc8160firmware.zip

路径_CC8160-VVTK-0113b.flash.pkg.extracted/_31.extracted/_rootfs.img.extracted/squashfs-root


确定架构为ARM、小端、32位

二、官方揭露阅读

conkielength过长导致的栈溢出
在ida搜索一下Content-Length


没有检查length的长度,全部赋值到dest这个栈上变量

三、环境搭建

分析一下httpd文件吧
搜一下字符串



发现缺少条件,但是测试的我直接给他patch掉,就不用去搞这些配置文件了


没有文件配置文件也可以跑,但是后面会用到文件中的内容,导致ddos

在文件系统里面搜索该配置文件,在./_31.extracted/defconf/_CC8160.tar.bz2.extracted/_0.extracted/etc/conf.d/boa/boa.conf,把该/etc目录拷到../mnt/flash/目录下面,即可修复该问题。

跑起来了,跟着反馈继续跟进

gethostbyname():用域名或主机名获取IP地址。

需要把他们俩改为一致就可以跑了
笔者的用户名是ubuntu

qemu宿主机环境搭建

设置tap0网卡net.sh  笔者的理解是

qemu宿主机启动脚本start.sh

给qemu机器设置网卡ip

将文件传到宿主机

启动服务

启动之后我宿主机连不上去,很奇怪

发现是httpd文件被笔者patch错了
还需要对机器进行挂载和赋权操作

四、验证poc

进行调试发现

溢出量为0x33,开了nx保护
得到基地址

五、漏洞利用

rop链构造

tips1 :为什么不用,

完整poc

把shell反弹到6666端口,nc上就是一个shell了