首页 > 其他 > 详细

ms06-055漏洞-HeapSpray实战

时间:2015-03-24 22:57:47      阅读:430      评论:0      收藏:0      [点我收藏+]

ms06-055漏洞

漏洞介绍

微软的 IE5.0 以上的版本会支持一种向量标记语言(VML)来绘制图形。IE在解析畸形的VML 的时候会产生堆栈溢出的错误。如果利用者精心构造一个含有这样畸形的 VML 语句的网页,并骗取用户点击这样的网页,就可以利用 IE 在用户的机器上执行任意代码。

引起栈溢出的是 IE 的核心组件 vgx.dll。这个文件在 C:\Program Files\CommonFiles\Microsoft Shared\VGX 和 C:\WINDOWS\system32\dllcache 两个目录下。

实战环境

windows 2000 sp4 + IE5.0

第一步 验证栈溢出漏洞

首先将ollydbg注册为及时调试器。
根据已有的漏洞信息,构造恶意HTML文件


技术分享


双击html文件,由IE打开后,ollydbg被呼叫出来,说明IE已经崩溃


技术分享
崩溃地址:0x659d7bc6
IDA中观察,位于函数


技术分享


崩溃地址处的指令为(mov [eax],edi),eax对应的地址为EBP-4(var_4)


技术分享


ollydbg中可以看到崩溃时,eax = 0x0C0C0C0C,并且返回地址也被覆盖为0x0C0C0C0C。
到这里,便完成了栈溢出漏洞的验证,下一步使用HeapSpray技术利用漏洞。


技术分享

第二步 使用Heapspray技术利用漏洞

Heapspray技术的思想是在堆中填充大量的数据块,数据块由大量的"nop指令"和shellcode组成,利用其它漏洞将EIP指向预计被填充了特殊数据块的地址,只要EIP落到了任意数据块的"nop指令"序列中,便会成功执行shellcode。
在IE浏览器中,一般使用JavaScript向堆中填充数据块。
JavaScript代码片段如下:


技术分享


为了适应JavaScript的字符串存储方式,代码中的shellcode由一般的(\xAA\xBB\xCC\xDD...)格式转换为(%uBBAA%uDDCC...)
用于转换shellcode的python代码如下:


  1. def shellcode2js_string(shellcode):
  2. """"""
  3. new_shellcode = ""
  4. code_list = shellcode.split("\\x")
  5. for i in xrange(1,len(code_list),2):
  6. new_shellcode += "%u" + code_list[i+1] + code_list[i]
  7. return new_shellcode

将构造好的JavaScript代码片段嵌入到之前的html文件中


技术分享


双击html文件用IE打开,成功弹出消息框(shellcode出自《0day安全》一书)


技术分享





ms06-055漏洞-HeapSpray实战

原文:http://www.cnblogs.com/Wrong-Side/p/4364150.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!