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了