CVE-2012-1889 暴雷漏洞分析与利用小记

VSole2022-03-20 15:58:08

本文为看雪论坛优秀‍‍‍文章

看雪论坛作者ID:JokerMss

漏洞信息

“雷暴”是CVE-2012-1889漏洞,在2012年曝光的一种微软的XML核心组件漏洞,该漏洞源于未初始化内存的位置。远程攻击者可以借此漏洞执行任意代码或者导致拒绝服务。很重要的是该漏洞的影响非常广,存在此漏洞的系统版本很多,所以在当时危害级别特别高。刚开始接触漏洞利用知识的我今天来记录一下它的分析和利用过程。

环境和工具

系统环境:winXP IE6

工具:WinDbg、OllyDbg、EditPlus3

漏洞分析

3.1 Step One 成因

我们可以先观察一下漏洞触发的现象: 

 

可以认定是msxml3.dll模块内部出现了问题,那我们再看看代码,探查一下是哪里出发了异常:

3.2 注1 clsid

这个clsid属性是一个类标识符,因为我们这里是利用了xml对象来执行代码,所以值是xml3的标识(UUID):

3.3 注2 definition()

这个对象的成员definition()便是该漏洞的触发条件,如果将其视为一个方法(函数),括号中有参数那么它就会触发漏洞:

首先触发异常的地方在EIP=0x5DD8D772,原因是call了一个没有数据的地址[ecx+18h],然后顺着往上看,找到了ecx来源于eax,而eax来源于ebp,也就是栈空间。

如果将其视为一个属性,那么就不会触发漏洞,该代码执行完成后就会无事发生:

3.4 Step Two 猜想

如果我们将栈空间替换成我们想要的地址,那么最后call的地方就会是我们想要的代码。

漏洞利用

我们先来验证一下上一个环节的猜想,先填充一下栈空间,让eax也就是ebp-14h的地址上存一个我们想要的地址然后让它访问。

那么问题来了,怎么才能让目的地址是我们构造的数据呢,我想到了两种方法

  • 无脑填充栈:将栈空间全部填充为我们想要的数据,重复填充就行,反正地址也就4个字节,把栈填满就行
  • 精准填充栈:通过获取当前ebp的值,然后使用__asm将汇编代码内联进c代码,然后mov就行

这里为了方便就使用了无脑填充法:

注:这里只是填充了栈,也就是让eax获取到了值,并不代表最后的call是正确的,后面会讲到call的值怎么改,别急别急~~

我们使用WinDbg再来观察一下堆栈和寄存器的情况:

可以看到确实栈已经被我们填充成了0C0C0C0C,然后在读取这个地址的内容的时候触发了异常,为啥呢?因为这个地址并没有访问权限。

好的,第一步已经迈出去了,接下来就是要让0C0C0C0C这个地址有数据,要能正常访问到且不触发异常。如何能在这个地址构造填充数据呢?这里就要用到堆喷射(Heap Spray)技术了。

简单来说就是将堆空间覆盖成我们想要的内容,从而达到执行shellcode的目的。接下来我用该漏洞的逻辑图来说明一下堆喷的原理和能利用的方向。

首先我们访问栈,访问0C0C0C0C这个地址,然后经过我们的代码可以让它去堆空间找,IE进程有很多模块,但是不影响,通过js的字符串拼接我们可以申请很多堆空间占据js执行模块的堆空间,然后为了确保shellcode能够执行,我们在每一个堆空间填充的数据块都经过了一定的调整,前面放一堆滑板指令,比如9090=>nop或者0C0C=>OR AL,0C,他们会执行但是不影响任何环境,然后就会顺利执行到我们的shellcode完成目的。

上面是一段shellcode,也就是弹个MessageBox而已,目的是验证漏洞能否就此被利用。

最后也是最重要的一步来了,成功call到我们精心构造的数据块中:

直接运行,成功弹窗!

知道了利用方法后能不能加点功能进去呢?比如说bindshell?说干就干。首先还是先编译一份能在XP系统上跑起来的程序。

起始也就是一个bindshell的小demo,然后把它的opcode扒下来,转换成js能识别的unicode编码,再构造出自己的字符串也就是前面说的数据块就行了。

 

上图!

以上,就完成了CVE-2012-1889漏洞的分析和利用。

漏洞
本作品采用《CC 协议》,转载必须注明作者和本文链接
该公司吸引的总投资金额已超过5600万美元,新一轮融资将主要用于加速公司在全球范围内的扩张,并支持其从北美到欧洲不断增长的全球客户群,同时也将支持推进AI路线和产品技术创新。
漏洞概述  漏洞名称Google Chrome WebRTC 堆缓冲区溢出漏洞漏洞编号QVD-2023-48180,CVE-2023-7024公开时间2023-12-20影响量级千万级奇安信评级高危CVSS 3.1分数8.8威胁类型代码执行、拒绝服务利用可能性高POC状态未公开在野利用状态已发现EXP状态未公开技术细节状态未公开利用条件:需要用户交互。01 漏洞详情影
漏洞分析 CVE-2010-0249
2023-11-25 17:50:17
漏洞分析 CVE-2010-0249
漏洞信息共享合作单位证书近日,Coremail获得由国家信息安全漏洞库(CNNVD)颁发的“CNNVD漏洞信息共享合作单位”证书。 此证书是国家权威机构对Coremail安全研究技术和漏洞挖掘技术实力的充分肯定,也是双方合作的里程碑。 国家信息安全漏洞库(CNNVD), 为负责建设运维的国家级信息安全漏洞数据管理平台, 旨在为我国信息安全保障提供服务。  “
漏洞预警 CraftCMS远程代码执行漏洞
漏洞排查与处置,是安全管理员在安全运营中都会碰到的问题,常见却很难做好。
美国联邦调查局于近日警告称,梭子鱼电子邮件安全网关(ESG)的一个重要远程命令注入漏洞的补丁 "无效",已打补丁的设备仍在不断受到攻击。
点击上方蓝字 关注安全知识引言Fiora:漏洞PoC框架Nuclei的图形版。快捷搜索PoC、一键运行Nu
Mikrotik RouterOS操作系统不支持暴力保护,默认的“admin”用户密码在2021年10月之前是空字符串。更让人震惊的是,检测CVE-2023-30799的利用“几乎不可能”,因为RouterOS web和Winbox接口实现了自定义加密,而威胁检测系统Snort和Suricata无法解密和检查这些加密。
VSole
网络安全专家