首页
社区
课程
招聘
[原创]CVE-2010-2883学习笔记
发表于: 2018-8-13 21:24 9867

[原创]CVE-2010-2883学习笔记

2018-8-13 21:24
9867

CVE-2010-2883是PDF阅读器Adobe Reader的一个栈溢出漏洞。以下是我的学习笔记。

该漏洞学习主要是参照泉哥的《漏洞战争》的相关内容。

漏洞存在于Adobe Reader 8.2.4到9.3.4之间的版本,在CoolType.dll库中处理字体文件SING( Smart INdependent Glyplets)表中uniqueName项时存在栈溢出漏洞。

strcat进行字符串拼接时没有进行长度判断,产生栈溢出。

使用PdfStreamDumper打开样本文件,在第10个Stream中找到SING字段,将这个Stream另存为TTF文件。

使用010edit打开另存的TTF文件,加载TTF文件模板,TTF的TableEntry结构如下:


在offset 11ch位置找到具体内容:

其中0x10偏移开始为uniqueName字段,大小为28字节且以\x00结尾。但是在CoolType.dll中,使用strcat操作此处时并没有判断长度,所以构造超长的uniqueName可导致栈溢出。

使用OllyDbg调试

在strcat处下断点

.text:0803DDAB call strcat

常见栈溢出漏洞,溢出后会覆盖当前函数的返回地址。我在该开始调试该漏洞时也是直接在当前函数ret处下断点,但是发现还没执行到ret时,已经跳入shellcode了。

不知道什么原因,只能单步调试,多次调试后发现,如下图所示

其中,[eax]的值来自ds:[edi:0x3c] ==> 0x12e754 ==> 0x12e6d0 ==>0x4a80cb38(位于icucnv36.dll)

分析可知,该漏洞利用没有使用覆盖返回地址的方法,而是覆盖了一个虚函数表指针,从而控制程序执行流程

通过两次跳转,将栈空间切换到0x0c0c0c0c

堆喷射代码

手动去掉混淆

继续ROP

此处ROP,依次调用CreateFileA、CreateFileMappingA、MapViewOfFile,在内存中开辟一块可读可写可执行的地址。

再调用memcpy,将shellcode拷贝到新的内存空间中去。

这是一个典型的栈溢出漏洞

漏洞利用没覆盖返回地址,而是覆盖了虚函数表。

《漏洞战争》书中调试时,使用了内存访问断点,可以更加直接地断在溢出后利用的地方

 
 
 
 
 

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 2
支持
分享
最新回复 (5)
雪    币: 1
活跃值: (213)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
不知道为什么,我用od调试时,设好断点, 用adobe reader打开msf.pdf,就会进入这个异常处理这里。之后再f8或f9都不能到设定的断点处。我把断点直接设在了call strcat 处。怎么办?

2018-9-15 21:47
0
雪    币: 1
活跃值: (213)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
奇怪了,我用看雪的od,调试另一个文件(shellcode 是调用计算器),不加任何断点,程序不会正常执行下去,总会进入上面的 Rtlraiseexception异常里面(f9也不行)。而我用吾爱破解的od就可以正常调用计算器。然后吾爱的od也可以正常中断到 call strcat 。感觉是od设置的问题,或者是软件反调试的问题。导致用看雪od调试时会接受到异常信号。
2018-9-15 23:12
0
雪    币: 1
活跃值: (213)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
找到问题了,我对比了一下两个od的调试设置,需要再调试设置里面里的 "同时忽略以下指定的异常或范围" 里添加范围 00000000-ffffffff。然后就行了,果然是od没有忽略掉一些异常导致的。
2018-9-15 23:39
0
雪    币: 1
活跃值: (213)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
"而是覆盖了一个虚函数表指针", 我觉得更准确的说是 虚函数表里的函数指针被修改了。 “虚函数表指针”给人一种VPTR(虚表指针)的感觉.
2018-9-17 23:35
0
雪    币: 1657
活跃值: (924)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
6
我根据找到的strcpy复制到的目标地址下内存访问断点,断到的位置和书上完全不一样,心态都炸了。
2020-7-7 19:22
0
游客
登录 | 注册 方可回帖
返回
//