Adobe阅读器漏洞(adobe_cooltype_sing)学习研究

实验环境:Kali 2.0+Windows XP sp3+Adobe Reader 9.0.0

类别:缓冲区溢出

描述:这个漏洞针对Adobe阅读器9.3.4之前的版本,一个名为SING表对象中一个名为uniqueName的参数造成缓冲区溢出。

参考资料:《Metasploit魔鬼训练营》p286-p298

 

Adobe漏洞渗透过程:

kali上使用windows/fileformat/adobe_cooltype_sing,载荷为windows/meterpreter/reverse_http,生成恶意构造的pdf文件,并打开exploit/multi/handler进行监听。

在windows xp sp3靶机上打开该pdf,成功执行shellcode,回连到kali!

 

Adobe漏洞机理分析:

先通过源代码了解下此漏洞的大概机理。

100     # uniqueName
101     # "The uniqueName string must be a string of at most 27 7-bit ASCII characters"                                                              
102     #sing << "A" * (0x254 - sing.length)
103     sing << rand_text(0x254 - sing.length) 
104
105 # 0xffffffff gets written here @ 0x7001400 (in BIB.dll) 106 sing[0x140, 4] = [0x4a8a08e2 - 0x1c].pack('V') 107 108 # This becomes our new EIP (puts esp to stack buffer) 109 ret = 0x4a80cb38 # add ebp, 0x794 / leave / ret 110 sing[0x208, 4] = [ret].pack('V')

构造了一个长度为0x254的字符串,其中偏移为0x208处的4字节将成为溢出之后的新eip。

 

接下来要寻找程序的溢出点。为了方便,修改下代码。

去除字符串随机性,将

sing << rand_text(0x254 - sing.length)

改为

sing << "A" * (0x254 - sing.length)

然后将ret=0x4a80cb38改为ret=0x42424242(字符串“BBBB”)。

重新生成样本文件debug.pdf,并在靶机windows xp中打开。

然而我并没有得到书上的结果,跳出了两个OllyIce,后一个关于AcroRd32.exe的已经终止

前一个最后也没有因为访问地址0x42424242而异常,而是另一个地址。

暂且解决不了这个问题,我决定“作弊"!

既然以上这步是为了找到溢出点,所以我直接看书找到相应的异常处并下断点。

然后,我再次调试打开debug.pdf,还是如上。

看来是在溢出点之前就有其他的异常,只能先用OllyDbg打开之前成功攻击的构造文件FormalAttack.pdf来调试。

 还是不行,虽然直接FormalAttack.pdf可以成功执行shellcode回连,但是通过OllyDbg打开FormalAttack.pdf就会产生异常,在中断处往后执行几步奇怪的指令后就终止了,根本没经过我们下断点的CoolType模块。

posted @ 2016-03-31 22:22  燃烧少年的心  阅读(806)  评论(2编辑  收藏  举报