0
点赞
收藏
分享

微信扫一扫

漏洞丨CVE20102883

二、环境准备 虚拟机

调试工具

目标软件

16进制编辑器

Win7X86SP1、Kali

Ida、x32dbg

Adobe Acrobat_Reader 9.0

010Editor

三、漏洞复现 使用MSF生成EXP: 1.png

然后在Win7中安装Adobe Acrobat_Reader 9.0: 2.png

把Kali中的Exp拖到本机,再拷贝到Win7中,拖到Adobe中: 3.png

弹出计算器,证明漏洞存在,Exp也没有问题。

四、漏洞分析 首先我们需要做几个准备工作,1、改掉随机基址,省的麻烦,把用010Editor打开Adobe,修改如下地方:

4.png

2、在把软件拖调试器中,忽略程序自身异常(因为我这边调试器接管异常,导致程序运行不下去,所以需要忽略)

5.png

接下来就是正儿八经分析了,因为已知漏洞问题是在CoolType.dll,直接在安装文件夹下找到这个dll,拖到Ida中: 6.png

然后Alt+T,搜索sing: 7.png

双击到标记的一条:

8.png

下面这一坨就是漏洞溢出的地方,如果有需要可以自行分析一下,或者使用其他手段找到溢出点:

9.png

我们直接看strcat函数,地址是0x0803DCA4,这里基址是0x08000000,所以函数偏移是3DCA4,接下来我们就是动态追踪一下计算器弹出的具体过程,用x32dbg附加软件,F9运行,等软件加载完所需要的dll,然后 查看各个模块基址,找到CoolType.dll,基址是0x60690000,那么加上偏移就是0x3DCA4=0x606C DCA4: 10.png

跳转到0x606CDCA4,下断点: 11.png

接下来把我们生成的Exp拖到软件中,稍微等会,就断在了我们断点处,然后在堆栈窗口中转到EBP,观察溢出情况: 12.png

我们先看看strcat函数的俩个参数,堆栈中转到ESP,可以看到,源数据和要拷贝的地址,而要拷贝的地址就是EBP: 13.png

然后走过strcat函数,观察EBP的位置,发现已经被淹没覆盖: 14.png

然后继续往下走,走到如下函数单步步入: 15.png

然后步入下面这个call: 16.png

然后步入第一个call: 17.png

然后走到如下位置: 18.png

这里的call是exp特意构造的,如果追寻eax的来源,就会发现他指向我们拷贝的数据中的一个地址,这里是把栈抬高到我们淹没EBP那里,进入这个函数就会发现,函数流程已经被我们劫持了,从这里开始就进入我们的流程:

19.png

接下来会进入一系列ROP链(这里使用了堆喷技术,目的为了绕过DEP): 20.png

走到这里,调用了一个CreateFile创建了一个iso88591文件,其参数都是Exp构造好的: 21.png 22.png!

文件在这: 23.png

在这里可以看到EAX指向一个CreateFileMapping函数,创建文件映射:

24.png

随后跳转到此函数: 25.png

之后根据同样手法,进入MapViewOfFile函数,将一个文件映射对象映射到当前应用程序的地址空间: 16.png

跑了半天,又用之前的手法走到memcpy函数,如果留意的话,就会发现,这里是把shellcode写到MapViewOfFile返回的地址,因为这里是可写可读可执行,绕了半个地球,就是为了绕过DEP:

27.png

然后这里就是正儿八经shellcode地方: 28.png

经过一段解密,可以看到字符串calc.exe: 29.png

从这里可以看到是通过CreateProcessA创建了计算器:

30.png31.png

以上就是Exp的运行过程,最后弹出计算器的结果。

五、总结 这个Exp的编写用了很多技术,包括利用了PDF文件可执行js代码的特性,然后使用栈溢出劫持运行流程到icucnv36.dll,这个模块没有ASLR保护,然后再通过ROP链,各种寄存器布置,然后新建文件,又将文件映射到内存,再把shellcode拷贝到这块区域。 参考链接:http://static.anquanke.com/download/b/security-geek-2019-q2/article-12.html

举报

相关推荐

0 条评论