首页
社区
课程
招聘
[原创]CVE-2014-1776漏洞分析
发表于: 2015-1-22 16:40 5244

[原创]CVE-2014-1776漏洞分析

2015-1-22 16:40
5244

/**************************************
/* 作者:kiwiHacker
/* 博客:http://www.tyrande000.com/
/* 日期:2015-01-25 16:10
/**************************************

0x00 实验环境
操作系统:VMWARE Windows 7 sp1
IE版本:8.0.7601.17514
漏洞DLL:mshtml.dll
调试器:windbg

0x01 简述
CVE-2014-1776属于use-after-free漏洞,影响范围不但涉及6/7/8/9,还影响IE10/11浏览器,这几个版本的浏览器被披露出可以远程执行代码的漏洞。漏洞出现在mshtml!CMarkup:IsConnectedToPrimaryMarkup函数。



0x02 说明
为了避免黑产,共同维护互联网安全,漏洞中的关键代码段被打上了马赛克,本篇文章只是分析漏洞的起因及对突破WINDOWS保护机制的研究,希望码农们引以为戒,提高软件代码安全性!

0x03 漏洞原因
以下是能够触发漏洞并利用的三个文件:



1.html为入口文件,如图:



微软自从Windows XP SP2以后添加了很多安全保护机制,其中DEP/ASLR是我们在这个漏洞中需要突破的2项保护机制,SWF文件就是用来帮助我们突破保护的。

当swf加载时,会先进行Heap Spray,将绕过DEP/ASLR的代码和SHELLCODE放置在我们稍后可控的堆内:



首先对Vector.<uint>((0x1000 – 8) / 4)做个说明,为了使每个s[i]的大小以0x1000字节对齐,我们需要分配(0x1000 – 每个vector的头结构大小8字节) / sizeof(uint)=0x3FE个uint变量,如下图:



在准备工作结束后,会调用ExternalInterface.call(“trigger”);来执行JS中的引发漏洞的代码:



现在让我们开启IE的页堆调试:



找到崩溃点如下:



对应汇编:



可以看到EAX的值来自ESI,推断ESI是一个CMarkup对象指针,现在我们深入剖析一下ESI的由来,我在mshtml!CMarkup::IsConnectedToPrimaryMarkup下断点:bu mshtml!CMarkup::IsConnectedToPrimaryMarkup “!heap -p -a eax;g”

重新运行程序:




!heap -p -a 只是截断了最近几条函数调用堆栈,我们需要更深层次的函数调用信息。

对mshtml!CMarkup::~CMarkup下断点,观察函数堆栈,如下图:




结合下面崩溃时的堆栈信息,可以断定函数在CStylement::OnPropertyChange函数尚未返回前,又重新进入CMarkup::IsConnectedToPrimaryMarkup函数重复使用,造成了漏洞的产生,如下:



0x04 突破WINDOWS安全保护
为了能够控制UAF对象,我们需要使用和UAF对象同样大小的内存对该段内存占位,以对齐内存,如下图:



再次运行IE:



这时候已经可以成功控制EAX,继续往下步进,看看后面有没有可以进一步与EAX或其他寄存器相关的利用代码,如下:



果不其然,居然找到了可以直接控制EIP的指令,而EDX同时还是我们可控的!

还记得我们最初在SWF中HEAP SPRAY了一大片内存吗,其中包含SHELLCODE,而因为DEP的存在,则需要通过ROP技术绕过这个限制。此刻EAX是指向可控堆的,因此我们如果能在内存空间中(需要利用SWF突破ASLR)找到类似xchg eax, esp;ret;这样的指令就可以控制堆栈,从而调用zwProtectVirtualMemory来修改指定的内存属性来绕过DEP,翻转堆栈后,堆栈布局如下:




Shellcode部分我只用了0x90909090举个例子,来说明DEP/ASLR已经被击败了。



0x05 总结
外国论坛中有些大牛通过在漏洞中修改VECTOR对象的LENGTH属性,获得对进程内任意地址的读写,通过覆盖一个SOUND对象的虚函数表,来触发DEP绕过,本文采用了另一种方法来叙述。


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
收藏
免费 3
支持
分享
打赏 + 200.00雪花
打赏次数 1 雪花 + 200.00
 
赞赏  音货得福   +200.00 2020/03/27 多谢大佬吃瓜, 还请留着吧 ;)
最新回复 (5)
雪    币: 19
活跃值: (130)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
2
楼主不给poc吗?
2015-1-22 16:44
0
雪    币: 196
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
求个poc地址~
2015-1-22 18:28
0
雪    币: 2
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
求个poc地址~
2015-3-18 14:00
0
雪    币: 1149
活跃值: (888)
能力值: ( LV13,RANK:260 )
在线值:
发帖
回帖
粉丝
5
表示 不清晰.......漏洞触发的机制
2015-3-19 15:40
0
雪    币: 799
活跃值: (457)
能力值: ( LV12,RANK:280 )
在线值:
发帖
回帖
粉丝
6
分析过程不是很清晰啊。。。
2016-8-14 12:45
0
游客
登录 | 注册 方可回帖
返回
//