• CVE-2010-2883_Adobe_cooltype_sing


     

     

    1. 漏洞描述

           Adobe Reader的CoolType.dll库在解析字体文件SING表格中的uniqueName项时存在栈溢出漏洞,用户打开了特制的PDF文件可能导致执行任意代码。

    1. 调试环境

    XPSP3 + OD + IDA+Adobe9.2.4

    1.  

    官方文档对TableEntry结构的定义

    typedef sturct_SING

    {

    char tag[4];//"SING"

    ULONG checkSum;//校验和

    ULONG offset;//相对文件偏移

    ULONG length;//数据长度

    } TableEntry;

    ttf_data[0xec, 4] = "SING"

    ttf_data[0x11c, sing.length] = sing

    在msf中构造pdf的代码中分析得出。SING数据是在TableEntry的0x11c的位置,SING从真实数据偏移0x10为uniqueName域,从代码上可以看出strcat是将uniqueName复制到栈空间,直至遇到NULL字符串终止符。

     

    以下为溢出代码

     

    覆盖栈中的返回地址

     

     

     

     

    1. 漏洞利用原理

    Metasploit中针对这一漏洞的攻击模块使用了ROP技术来绕过操作系统中针对溢出攻击的主要保护机制DEP,同时它利用的是Adobe自行加载的dll。所以通用性特别好。再覆盖了上图中的返回地址之之后,会跳转至icucnv36.dll中的地址,利用这个动态库中若干的代码片段来执行ROP。在栈中的返回地址被使用的情况下,程序的执行流程被劫持。

    3.1在返回地址处下断点

     

    第一段ROP代码

     

     

    第一段ROP执行之后的栈

     

    第二段ROP

     

     

    执行之后。ESP指向已经由堆喷射技术部署在堆区的数据。

     

    接下来,程序将以这块已经部署在堆块中的数据为栈帧,执行接下来的一连串的ROP代码。

    主要功能有:生成一个iso88591的驱动文件,随后中间的若干函数将利用这个文件映射给当前进程一块可执行的内存区域,最后将堆中的shellcode复制到该区域执行。

     

    《Metasploit渗透测试指南》《0day》

  • 相关阅读:
    Controlling behavior of existing services in system
    获取站点路径方法
    如何处理DataTable.Select();执行后重新排序的问题!
    ASP.NET 2.0 编程珠玑之五调试已创建好的代码
    Meal Scheduler in C#
    DHTML+Ajax? MXML+ActionScript? XAML+C#? 是巧合,还是必然?
    C#验证输入的是否数字
    Monitoring System Usage using Windows Service
    ADO.NET 2.0中的DataSet和DataTable
    使用asp.net 2.0和SQL SERVER 2005构建多层应用
  • 原文地址:https://www.cnblogs.com/banchen/p/7844619.html
Copyright © 2020-2023  润新知