大土豆安全笔记

通过拼命看文章从什么都没听过的菜鸟逐渐进化成了一只什么都略有耳闻的菜鸟

从和别人聊一分钟就被发现是个弱鸡到现在可以扛五分钟都还可以继续接着忽悠,真不容易:(

这两天狂补QEMU的知识点,感觉整个世界又清净了

没弄完的微信先不说了

把弄完的讲讲,主要是搭建QEMU环境这部分

源码编译按照步骤一步步来,没有太多需要注意的,缺少的库apt-cache search搜一下

创建文件系统和内核镜像也问题不大,就是比较花时间,我这就4k的网速

因为我是MacOS上面运行VBox,VBox运行Ubuntu,Ubuntu运行QEMU,QEMU里面运行Debian,层层套娃,结果KVM开不起来,然后我就把QEMU启动命令里的-enable-kvm删了,调试的话好像并没有明显的影响

wnagzihxa1n@Qemu:~/CVE-2019-6788$ ./launch.sh
Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: failed to initialize KVM: No such file or directory

至于传文件,我用的是Python自带的HTTP服务,直接QEMU里wget获取可执行文件即可

python -m SimpleHTTPServer

虚拟机使用的是10.0.2.15,宿主机是10.0.2.2

运行Poc崩溃,不过这只是崩溃,并不是真正的问题所在

root@ubuntu:~# ./crash_poc 

Thread 4 "qemu-system-x86" received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7fffd5480700 (LWP 2860)]
0x000055555580a496 in tb_tc_cmp (ap=0x7fffeeb80660 <code_gen_buffer+418375219>, bp=0x4141414141414141)
    at /home/wnagzihxa1n/CVE-2019-6788/qemu/tcg/tcg.c:341
341	    if (likely(a->size && b->size)) {
(gdb) bt
#0  0x000055555580a496 in tb_tc_cmp (ap=0x7fffeeb80660 <code_gen_buffer+418375219>, bp=0x4141414141414141)
    at /home/wnagzihxa1n/CVE-2019-6788/qemu/tcg/tcg.c:341
#1  0x00007ffff7477347 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#2  0x000055555580a70c in tcg_tb_insert (tb=0x7fffeeb80640 <code_gen_buffer+418375187>)
    at /home/wnagzihxa1n/CVE-2019-6788/qemu/tcg/tcg.c:399
#3  0x00005555558a563d in tb_gen_code (cpu=0x555556844420, pc=18446744071917395455, cs_base=0, flags=4244144, cflags=524288)
    at /home/wnagzihxa1n/CVE-2019-6788/qemu/accel/tcg/translate-all.c:1840
#4  0x00005555558a1bf8 in tb_find (cpu=0x555556844420, last_tb=0x7fffeeb000c0 <code_gen_buffer+417849491>, tb_exit=0, 
    cf_mask=524288) at /home/wnagzihxa1n/CVE-2019-6788/qemu/accel/tcg/cpu-exec.c:404
#5  0x00005555558a259e in cpu_exec (cpu=0x555556844420) at /home/wnagzihxa1n/CVE-2019-6788/qemu/accel/tcg/cpu-exec.c:724
#6  0x0000555555845fd2 in tcg_cpu_exec (cpu=0x555556844420) at /home/wnagzihxa1n/CVE-2019-6788/qemu/cpus.c:1429
#7  0x00005555558467ea in qemu_tcg_cpu_thread_fn (arg=0x555556844420) at /home/wnagzihxa1n/CVE-2019-6788/qemu/cpus.c:1733
#8  0x0000555555d7a1a2 in qemu_thread_start (args=0x555556866840)
    at /home/wnagzihxa1n/CVE-2019-6788/qemu/util/qemu-thread-posix.c:498
#9  0x00007ffff6ac46ba in start_thread (arg=0x7fffd5480700) at pthread_create.c:333
#10 0x00007ffff67fa41d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:109

具体漏洞其实就是其中一种情况导致没有加上写入的长度,这样一来数据写进去了,但是长度没加上,就可以一直写一直写,就溢出了,明天再把详细代码贴一下,再仔细的记录一下利用过程