CVE-2023-20073复现
CVE-2023-20073
前言
开始学习iot的漏洞挖掘,第一次复现cve漏洞
[原创]从零开始复现 CVE-2023-20073-智能设备-看雪-安全社区|安全招聘|kanxue.com
固件获取
Software Download - Cisco Systems
从官网获取RV340 的固件

binwalk 解压
binwalk -Me xxx.img

解压成功

但是和文章一样出现了warnning

配置起来有点麻烦,因为binwalk 现在很难搞,~~所以我决定直接手动修改这个链接
1 | ln -sf /tmp var |
事实证明这样做是不行的,后续仿真时会失败。可能是因为还有其他的软连接被破坏了,所以只能去修改binwalk 的文件内容。因为我是用apt-get install 安装的binwalk ,所以我只能通过找到已经安装的binwalk 的文件位置来修改。
我这里是1008行,把这里修改为if 0 and not

问题解决

qume 与 主机连接
先下载后面的 东西,在运行这个脚本
1 | !/bin/bash |
busybox
在解压出来的文件系统下,查看busybox的信息

下载需要的文件
1 | wget https://people.debian.org/~aurel32/qemu/armhf/debian_wheezy_armhf_standard.qcow2 |
启动qemu
先执行
qemu-img resize debian_wheezy_armhf_standard.qcow2 32G
boot.sh
1 | sudo qemu-system-arm -M vexpress-a9 -kernel vmlinuz-3.2.0-4-vexpress \ |
然后sudo ./boot.sh

用户密码都是root
往虚拟机中传刚才的文件,先打包在传送
tar -czvf rootfs.tar.gz rootfs
sudo scp -r rootfs.tar.gz root@192.168.225.134:/root/rootfs.tar.gz
tar -xzvf rootfs.tar.gz
仿真隔离
1 | chmod -R 777 rootfs |
启动Nginx
1 | /etc/init.d/boot boot |
访问

漏洞分析
rest.url.conf

upload_pass ,后台会用/form-file-upload 继续处理upload_store,文件会上传到/tmp/uploadupload_store_access,设置了文件的权限upload_set_form_field xxx 设置了文件的相关字段,文件名、文件类型、文件路径、md5值、文件大小
web.upload.conf

这里通过uwsgi_pass,将请求转发,最后会执行 upload.cgi
upload.cgi
sub_115EC

这里最终会执行system函数,而sprintf中的三个参数都是可以控制的,只要我们把s_1设置为刚才上传的文件路径,_tmp_firmware控制为/tmp/www(要把s1控制为Portal) , s_2控制位login.html就可以篡改登录界面
main

根据上面的分析,也就是v17要控制为Portal,V16要控制为刚上传的文件路径,v18要是login.html

v17对应v30,v16对应v29,v18对应v31


