• ms06-055漏洞-HeapSpray实战


    ms06-055漏洞

    漏洞介绍

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

    引起栈溢出的是 IE 的核心组件 vgx.dll。这个文件在 C:Program FilesCommonFilesMicrosoft SharedVGX 和 C:WINDOWSsystem32dllcache 两个目录下。

    实战环境

    windows 2000 sp4 + IE5.0

    第一步 验证栈溢出漏洞

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



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



    崩溃地址:0x659d7bc6
    IDA中查看地址,位于函数_IE5_SHADETYPE_TEXT::Text



    简单分析一下_IE5_SHADETYPE_TEXT::Text函数,下图为函数栈的内存分布。
    进入_IE5_SHADETYPE_TEXT::Text函数后,首先将arg:buffer、arg:buff_len复制到新对象的this和this+4处,this+8(copyed_len)初始化为0,之后调用函数_IE5_SHADETYPE_TEXT::TOKENS::Ptok。
    在_IE5_SHADETYPE_TEXT::TOKENS::Ptok函数中,将this(src_buff)指向的缓冲区内容复制到以this+c(dst_buff)为起始地址的栈缓冲区中,且没有对src_buff的长度src_len做任何限制,当src_buff长度达到208h时,_IE5_SHADETYPE_TEXT::Text的返回地址便会被覆盖。
    复制的缓冲区内容就是上面构造的恶意HTML文件中<v:fill >method属性中的字符串。



    崩溃地址处的指令为(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由一般的(xAAxBBxCCxDD...)格式转换为(%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安全》一书)


    扩展知识

    html编码问题,文中的&#x0c0c0c0c,参考 http://blog.csdn.net/wangqi0079/article/details/9983439
    JavaScript的unescape方法,参考 http://www.w3school.com.cn/jsref/jsref_unescape.asp





  • 相关阅读:
    ArrayBlockingQueue
    mysql数据库引擎
    数据库主从复制,分库分表
    Java并发工具类-Semaphore,Exchanger
    分片策略
    kafka
    关于数据库设计
    生产者消费者模式

    Callable、Future和FutureTask
  • 原文地址:https://www.cnblogs.com/Wrong-Side/p/4364150.html
Copyright © 2020-2023  润新知