qemu毒液漏洞分析(2015.9)
0x00背景
安全娱乐圈媒体Freebuf对该漏洞的有关报道:

提供的POC没有触发崩溃,在MJ0011的博客给出了修改后可以使qemu崩溃的poc。详见:
0x01漏洞重现
注:qemu的用户交互性体验相对于vmware来说,极差
a.Linux 的qemu虚拟机
环境:
Win 10 物理机 + qemu-system-i386.exe (2.0.50) + CentOS 6.3虚拟机
Linux 因为在用户层就可以直接操作端口,所以在linux虚拟机中将MJ给的POC保存成一个C文件,用gcc编译后运行,就可以看到qemu崩溃了:


b.Windows的qemu虚拟机
环境:
Win 10 物理机 + Qemu Manager 7.0 + WinXP虚拟机
Windows因为不可以在用户层直接和端口操作,需要借助驱动,所以就存在了和物理机的交互:驱动加载工具和编译好的驱动程序。
测试的过程中,使用了Qemu Manager 7.0来建立共享文件夹。在物理机设置一个共享文件夹,然后就可在windows虚拟机的网上邻居访问了:

编写的驱动关键代码,换成对应对端口操作的函数就好了:

物理机中用windbg附加到qemu进程后,在xp虚拟机中加载驱动后,就可以观察到windbg捕获到异常了:

注:如果不用windbg附加到qemu.exe进程的话,那么看到的是qemu mannager把虚拟机给关了。
0x02分析
MJ的文章对漏洞成因进行了较为详细的分析了,具体的情况可以查看其blog。下面进行简要的说明:
qemu接受到FIFO命令后,会先调用fdctrl_write_data 函数,该函数会确保fdctrl的状态是可写入的,才会进行下一步操作。
outb(0x8e,0x3f5)对应的函数为fdctrl_handle_drive_specification_command:

因为 fdctrl->fifo[fdctrl->data_pos - 1] 是我们可控的,加上fdctrl ->data_len =6,不可能大于7,所以可以绕过这两个对fdctrl写入状态的改写,其状态还是可以被写入的。
而接受写入数据buffer fdctrl->fifo的大小为0x1000 bytes,poc中对其进行不断的写入,也就发生了越界写了。
by:会飞的猫
转载请注明:http://www.cnblogs.com/flycat-2016
qemu毒液漏洞分析(2015.9)的更多相关文章
- CVE-2014-1767 漏洞分析(2015.1)
CVE-2014-1767 漏洞分析 1. 简介 该漏洞是由于Windows的afd.sys驱动在对系统内存的管理操作中,存在着悬垂指针的问题.在特定情况下攻击者可以通过该悬垂指针造成内存的doubl ...
- PHPCMS \phpcms\modules\member\index.php 用户登陆SQL注入漏洞分析
catalog . 漏洞描述 . 漏洞触发条件 . 漏洞影响范围 . 漏洞代码分析 . 防御方法 . 攻防思考 1. 漏洞描述2. 漏洞触发条件 0x1: POC http://localhost/p ...
- Java反序列化漏洞分析
相关学习资料 http://www.freebuf.com/vuls/90840.html https://security.tencent.com/index.php/blog/msg/97 htt ...
- CVE-2016-10190 FFmpeg Http协议 heap buffer overflow漏洞分析及利用
作者:栈长@蚂蚁金服巴斯光年安全实验室 -------- 1. 背景 FFmpeg是一个著名的处理音视频的开源项目,非常多的播放器.转码器以及视频网站都用到了FFmpeg作为内核或者是处理流媒体的工具 ...
- Intel CPU 漏洞分析
Intel CPU漏洞分析报告 预备知识 存储分级 由于计算机存储分级的特性(第一级:寄存器,第二级:高速缓存,第三级:内存,第四级:磁盘),每一级之间的访问速度差距高达数量级.所以处理器会将用到的数 ...
- ref:Java安全之反序列化漏洞分析(简单-朴实)
ref:https://mp.weixin.qq.com/s?__biz=MzIzMzgxOTQ5NA==&mid=2247484200&idx=1&sn=8f3201f44e ...
- 学习笔记 | java反序列化漏洞分析
java反序列化漏洞是与java相关的漏洞中最常见的一种,也是网络安全工作者关注的重点.在cve中搜索关键字serialized共有174条记录,其中83条与java有关:搜索deserialized ...
- 【我的第一个现实漏洞分析】 CVE-2017-17215 华为智能路由器HG532 漏洞分析笔记
0x00 基本信息 2017.11.27 Check Point团队报告华为 HG532 产品的远程命令执行漏洞(CVE-2017-17215),Mirai的升级版变种中已经使用该漏洞. 华为HG53 ...
- Vivotek 摄像头远程栈溢出漏洞分析及利用
Vivotek 摄像头远程栈溢出漏洞分析及利用 近日,Vivotek 旗下多款摄像头被曝出远程未授权栈溢出漏洞,攻击者发送特定数据可导致摄像头进程崩溃. 漏洞作者@bashis 放出了可造成摄像头 C ...
随机推荐
- Linux操作系统学习_用户态与内核态之切换过程
因为操作系统的很多操作会消耗系统的物理资源,例如创建一个新进程时,要做很多底层的细致工作,如分配物理内存,从父进程拷贝相关信息,拷贝设置页目录.页表等,这些操作显然不能随便让任何程序都可以做,于是就产 ...
- c++课程设计之通讯录电话簿管理设计
功能 本程序是利用c++实现一个简单的电话簿管理.我是在Linux下利用g++直接编译的,完全可以将文件在VC中编译执行.源程序如有需要自行下载,点此下载,下载程序编译执行 程序执行效果如下; 1.新 ...
- 横瓜先生关于如何利用MYSQL数据库设计CMS系统处理100亿级TB规模的数据量
遥执乾坤(44758121) 18:21:23 mysql据说只能使用一个索引,我这里几乎所有字段都有索引. 但每个字段就算用索引,也需要扫描至少100w以上记录. 横瓜(601069289) 1 ...
- ASP.Net MVC C#画图 页面调用
/////C# 后台代码 public FileContentResult PieChart() { TransactionStatisticsBLL bll = ...
- (二)Python是一门什么样的语言?
在学习python是一门什么样的语言之前首先需要知道什么是编译和解释? 编译器是把源程序的每一条语句都编译成机器语言,并保存成二进制文件,这样运行时计算机可以直接以机器语言来运行此程序,速度很快; 而 ...
- Flood it 游戏
致敬HDU4127做的一个小游戏(数据结构大作业没东西写就搞这个了QAQ). 游戏截图(当然上交版本就没这么暴力拉): GUI界面选用的是Qt,由于之前没有接触过相关的东西,入门Qt花了不少时间. 大 ...
- iOS软件架构——架构模式(Architectural Pattern)
一个架构模式描述软件系统里的基本的结构组织或纲要.架构模式提供一些事先定义好的子系统,指定它们的责任,并给出把它们组织在一起的法则和指南.有些作者把这种架构模式叫做系统模式[STELTING02]. ...
- HMM 前向后向算法(转)
最近研究NLP颇感兴趣,但由于比较懒,所以只好找来网上别人的比较好的博客,备份一下,也方便自己以后方便查找(其实,一般是不会再回过头来看的,嘿嘿 -_-!!) 代码自己重新写了一遍,所以就不把原文代码 ...
- SSH通过超链接传递中文参数出现乱码问题
通过超链接传递中文参数出现乱码问题 tomcat中的server.xml文件中修改如下配置: <Connector port="8080" protocol="HT ...
- cookie解决 未登录加入购物车 第一次访问弹出新手引导页面
浏览器携带cookie到服务器, 点击加入购物车-->后台检查-->是否登录(有没有sessionid) 没有登录--->secookie()返回给浏览器,把传递过来的商品id, 属 ...