CVE编号:CVE-2010-2883

 

受影响软件:Adobe Reader 8.2.49.3.4

 

描述:

该漏洞存在于Adobe Reader的字体解析模块CoolType.dll中,当Adobe Reader在处理CoolType字体文件的sing表时存在栈溢出漏洞,允许远程执行任意代码,并且可以绕过DEP等多种windows保护机制

利用:

metasploit中使用该漏洞进行******之前,请安装Metasploit Framework 3.4.1,该安装程序可在http://www.metasploit.com/framework/download/上下载,分别有windowslinuxunix三种版本,可选一种下载安装(本例使用windows平台进行测试)。安装后在桌面会生成Metasploit ConsoleMetasploit Update快捷方式,首先双击运行Metasploit Update更新漏洞库,更新完后即可双击Metasploit Console运行metasploit进行***测试。

1.打开metasploit并输入命令show exploits会显示出目前可以使用的exploits

   

 

2.输入use windows/fileformat/adobe_cooltype_sing即选择使用该漏洞,然后输入show options查看使用详细信息;

   

 

3.查看该漏洞默认的配置信息C:\Program Files\Metasploit\Framework3\msf3\data\exploits路径为样本生成的路径,生成的样本名称为msf.pdf,然后配置配置下载执行的payloadshellcode,并配置好自己的url,注意此处url为可用的下载地址;

   

 

4.配置信息完毕,即可生成漏洞利用样本文件,输入exploit即可生成,输入完毕后在先前配置的C:\Program Files\Metasploit\Framework3\msf3\data\exploits路径下找到msf.pdf即可进行******测试;

   

 

当目标用户运行该pdf文件的同时,会从指定的url上下载并执行该应用程序。

 

分析:
    典型的直接调用strcat这类不安全的字符串操作函数而造成的缓冲区溢出漏洞,以上exploit通过覆盖栈上的函数指针来达到漏洞利用的目的。

.text:0803DC6D                 push    offset aSing    ; "SING"
.text:0803DC72                 push    edi             ; int
.text:0803DC73                 lea     ecx, [ebp+var_24]
.text:0803DC76                 call    sub_8021AC6
.text:0803DC7B                 mov     eax, [ebp+var_24] ; eax指向SING表
.text:0803DC7E                 cmp     eax, esi
.text:0803DC80                 mov     byte ptr [ebp+var_4], 2
.text:0803DC84                 jz      short loc_803DCBD
.text:0803DC86                 mov     ecx, [eax]
.text:0803DC88                 and     ecx, 0FFFFh
.text:0803DC8E                 jz      short loc_803DC98 ; 
.text:0803DC90                 cmp     ecx, 100h
.text:0803DC96                 jnz     short loc_803DCB9
.text:0803DC98
.text:0803DC98 loc_803DC98:                            ; 
.text:0803DC98                 add     eax, 10h        ; eax = offset of SING + 0x10, 即指向了SING表的uniqueName字段
.text:0803DC9B                 push    eax             ; 
.text:0803DC9C                 lea     eax, [ebp+0]    ; eax指向栈内存的指针, 用于存储数据
.text:0803DC9F                 push    eax             ; Dest
.text:0803DCA0                 mov     byte ptr [ebp+0], 0
.text:0803DCA4                 call    strcat          ; 直接拷贝uniqueName到栈空间,没有对数据长度进行任何的校验
.text:0803DCA9                 pop     ecx

检测:
    在Adobe的文档中实际规定uniqueName的长度最多为28字节,通过解析CoolType字体文件,找到uniqueName字段即可进行检测。

 
为了您的安全,请只打开来源可靠的网址

打开网站    取消

来自: http://hi.baidu.com/justear/blog/item/fb7613f92e76db186d22ebde.html