竹笋

注册

 

发新话题 回复该主题

MS12043是个啥走,咱来波漏洞分析 [复制链接]

1#
福建白癜风医院 https://m-mip.39.net/nk/mipso_4429412.html

MS12-漏洞分析+手写ROP全流程

这是个练习写ROP的好例子

漏洞介绍

软件简介

MicrosoftXMLCoreServices(MSXML)是一组服务,可用JScript、VBScript、Microsoft开发工具编写的应用构建基于XML的Windows-native应用。

漏洞成因

MicrosoftXMLCoreServices3.0、4.0、5.0和6.0版本中存在漏洞,该漏洞源于访问未初始化内存位置。远程攻击者可利用该漏洞借助特制的web站点,执行任意代码或导致拒绝服务(内存破坏)。

该漏洞产生于msxml3.dll模块中,msxml3.dll是微软的一个SAX2帮助程序类。主要用途包括:XSL转换(XSLT)和XML路径语言(XPath)的完全实现、对XML(SAX2)实现的简单API的修改,包括与万维网联合会(W3C)标准和OASIS测试套件保持更高一致性。

实验环境

虚拟机:WindowsXPSP3

虚拟机:KaliLinux

漏洞程序:IE6+IE8

IDA+x86dbg+immdbgmona插件

漏洞复现

kali的msf里查找MS12-,看有没有现成的利用:

刚好有一个,设置payload:setpayloadwindows/exec,setCMDcalc.exe,run

启动了一个本地HTTPServer,这个服务器应该就是提供poc页面了:

使用WindowsXPSP3自带的IE6打开,直接弹出计算器:

复现成功,该环境的IE6存在该漏洞,接下来对漏洞样本进行分析

前置基础知识简介

ROP

面向返回编程ROP(Return-orientedprogramming):这是一种内存攻击技术可以用来绕过现代操作系统的各种通用防御(比如内存不可执行等)。ROP的核心思想就是利用以ret结尾的指令序列把栈中的应该返回EIP的地址更改成我们需要的值,从而控制程序的执行流程。

DEP

数据执行保护DEP(DataExecutionProtection):用来弥补计算机对数据和代码混淆这一缺陷,主要作用是阻止数据页(堆页,各种堆栈页,内存池页)执行代码,从WindowsXPSP2开始支持

DEP的基本原理是将数据所在内存页表示为不可执行页,当程序溢出转入shellcode时,CPU在数据页上执行指令抛出异常,转入异常处理而不进入shellcode执行,当跳转到不可执行区域时,会触发异常0xC(内存页就类似于这种权限PAGE_READWRITE)

HeapSpray

HeapSpray是一种辅助技术,在shellcode前面加上大量滑板指令,组成一个注入代码段。然后向系统申请大量内存,并且反复用注入代码段来填充。这样就使得进程的地址空间被大量的注入代码所占据。然后结合其他的漏洞攻击技术控制程序流,使得程序执行到堆上,最终将导致shellcode的执行。

漏洞分析

漏洞触发POC:

//"clsid6D90f11-9c73-11d3-b32e-00C04fbb4"是MSXML3.dll中使用到的ID

通过看POC代码可知,这里漏洞的触发是因为解析img标签src属性处理src的值的时候处理不当导致溢出从而产生漏洞

反汇编里往上追溯溢出值的来源,没太明白是怎么回事

具体参考[原创]CVE--暴雷漏洞详细分析(偏向成因)-二进制漏洞-看雪论坛-安全社区

安全招聘

bbs.pediy.

分享 转发
TOP
发新话题 回复该主题