QEMU堆溢出漏洞----CVE-2015-7504

CVE-2015-7504是QEMU在仿真pcnet网卡中出现的一个堆溢出漏洞,可以溢出四个字节,可以劫持程序的执行流,结合前面的CVE-2015-5165可以实现任意代码执行。但有一个很致命的问题,宿主机内核需要使用CONFIG_ARCH_BINFMT_ELF_RANDOMIZE_PIE 标志进行编译,否则在溢出的四个字节没法成功修改地址(总体八个字节的地址,因此需要高四字节与目标地址一致)。这个编译标志在目前最新的Ubuntu16.04中似乎已经没有了,所以就不进行完整的复现了,仅复现至PoC部分。 PCNET网卡 AMD 的PCNET系列网卡被许多虚拟机或仿真器支持,如QEMU、VMware和VirtualBox。虽然没有RTL8139简易,但它的支持更加广泛,RTL8139只在QEMU中有支持。 网卡有16位和32位两种模式,这取决于DWIO 的值(储存在卡中变量),16位模式是网卡重置之后的默认模式。网卡有两类内部寄存器:CSR(控制和状态寄存器)和BCR(Bus Control Register)。 1 2 3 4 5 6 7 8 9 10 11 12 0 16 +----------------------------------+ | EPROM | +----------------------------------+ | RDP - Data reg for CSR | +----------------------------------+ | RAP - Index reg for CSR and BCR | +----------------------------------+ | Reset reg | +----------------------------------+ | BDP - Data reg for BCR | +----------------------------------+ ...

December 12, 2020 · hhdx

QEMU信息泄露漏洞分析与利用----CVE-2015-5165

参考大佬们的文章复现CVE-2015-5165。 环境搭建 宿主机环境 Ubuntu 20.10 QEMU编译 QEMU commit-bd80b59源码下载。 1 2 3 4 5 6 $ unzip qemu.zip $ mkdir -p bin/debug/native $ cd bin/debug/native $ sudo apt-get install zlib1g-dev libglib2.0-dev libpixman-1-dev $ ../../../configure --target-list=x86_64-softmmu --enable-debug --disable-werror $ make 如果出现以下错误,给文件 commands-posix.c 增加头文件 <sys/sysmacros.h> 即可解决。 1 2 3 /usr/bin/ld: qga/commands-posix.o: in function `dev_major_minor': /repo/qemu/qga/commands-posix.c:640: undefined reference to `major' /usr/bin/ld: /repo/qemu/qga/commands-posix.c:641: undefined reference to `minor' 制作QEMU虚拟机 这里我使用的Ubuntu 16.04 Server i386作为QEMU客户机系统。点击下载。 还需要下载安装VNC-Viewer,稍后会用到。链接。 1 2 3 4 5 6 $ ./qemu-img create -f qcow2 ~/tmp/vm/ubuntu.img 10G $ sudo dpkg -i VNC-Viewer-6.20.529-Linux-x64.deb $ x86_64-softmmu/qemu-system-x86_64 -boot d -cdrom \ # 能用嵌套虚拟就用(添加--enable-kvm) ~/tmp/iso/ubuntu-16.04.6-server-i386.iso \ -hda ~/tmp/vm/ubuntu.img -m 1024 $ vncviewer host:port # 连接上,安装就好 (尽量使用–enable-kvm,否则卡的受不了,安装系统安了四五个小时。。。) ...

December 5, 2020 · hhdx