漏洞成因

CVE-2013-3893发生原因是浏览器中函数SetMouseCapture()在事件响应中处理了一个已经被释放的引用而导致了Use-After-Free型漏洞的发生。该漏洞对IE6-11版本全覆盖。本次利用是windows xp sp3环境下的IE8版本中进行。下面结合POC详细分析漏洞调试复现。

详情描述

首先创建两个元素。



利用document.body.appendChild将两个元素加入到DOM节点树中。




内存中可以看到指针指向关系。

申明father节点是child节点的父节点。

内存中可以看到指针指向关系。

为father节点添加鼠标焦点丢失触发函数。

father[‘outerText’]=“”将元素本身复制为空对象,执行了这条语句,所有跟father有关的操作对象(DOM树中所有father节点的子孙)都会被析构。


father节点捕获到鼠标焦点。


child节点捕获到鼠标焦点,同时导致father丢失鼠标焦点。





father节点丢失鼠标焦点,从而触发onlosecapture函数。


程序执行该条语句后,页面清空,Dom树重置。但由于执行返回正常程序后,程序中还存在一个指向CBody_ctreenode的指针,并且该指针会在后续getinterface()或doc()中被引用,从而导致UAF漏洞的发生。

利用过程

利用主要有两个问题需要解决。

第一是目标地址的堆喷射,由Heapspray()实现;

第二是EIP的劫持,由Hijack()实现。




这里主要涉及两个问题,第一是unescape后执行length函数返回的是实际内存大小的一半;第二是了解BSTR类对象的结构。

截图可见,内存0x12121212处已被slide代码覆盖。


截图为执行Hijack前Cbody指针的对象的内存情况。

截图为执行Hijack后Cbody指针的对象的内存情况。已经成功占位目标。


接着正常流程往下go。
到达Pumpmessage函数中的NodeAddRef调用位置。


到达NodeAddRef函数中的GetLookasidePtr调用位置。

到达GetLookasidePtr函数中的doc调用位置。

进入doc函数内,程序call了已经被占位的0x12121212地址。


最终程序跳转到了目标地址0x12121212,执行一连串的slide代码,最终执行shellcode。


利用总结

本次我对该漏洞的利用过程中,有几点感受:

1、对于IE浏览器的调试中非常重要的一点是断点的设置。正确的断点能够很快的帮助你定位程序的关键位置。由于IE浏览器的JS脚本执行经过了中间层翻译执行,因此利用特殊函数结合IDA分析进行断点设置能够事半功倍;

2、关注关键函数。对于栈溢、堆溢或者UAF等漏洞,在前期漏洞分析和后期漏洞利用方面都需要对关键内存大小分配掌握清楚,因此需要关注内存分配的相关函数;

3、在分析过程中,发现metesploit中集成了shellcode生成和许多现成的漏洞利用脚本。后面可能有必要在这方面进行一定的深入。

CVE-2013-3893 IE浏览器UAF漏洞分析相关推荐

  1. 转载:WPS 2012/2013 RTF fchars 堆溢出漏洞分析

    WPS 2012/2013 RTF fchars 堆溢出漏洞分析 On 2013年12月11日, in 安全分析, by code_audit_labs by phperl ,zzf,nine8 of ...

  2. CVE-2015-3636(pingpong root) android内核 UAF漏洞分析

    前言 去年差不多这个时候就计划把这个漏洞给分析了,由于android没有经常搞,所以踩了很多坑,中间一度因为各种原因停滞放弃,最近遇到一个事情让我下定决心把它了结,也算是解决一个心病.过程会写详细一点 ...

  3. ES 文件浏览器安全漏洞分析(CVE-2019-6447)

    作者:0x7F@知道创宇404实验室 时间:2019.02.27 0x00 前言 ES 文件浏览器(ES File Explorer File Manager application)是一款安卓系统上 ...

  4. Linux 二进制漏洞挖掘入门系列之(五)UAF 漏洞分析与利用

    0x10 UAF(Use After Free) 漏洞原理 这里,需要先介绍一下堆分配内存的原则.ptmalloc 是 glibc 的堆管理器,前身是 dlmalloc,Linux 中进程分配内存的两 ...

  5. 安全漏洞--释放重引用(UAF)漏洞分析

    一 漏洞简介 未初始化漏洞(UAF)一般是指堆栈变量没有设置就使用导致,或者可能更多的是部分初始化导致. 释放后再用漏洞是堆上的数据被释放后,某个残留地址没清除再用导致.其实就是未初始化漏洞. 二 原 ...

  6. Android内核层驱动程序UAF漏洞提权实例

    文章目录 前言 UAF漏洞 babydriver 环境搭建 漏洞分析 提权exp cred结构 fork()函数 总结 前言 自 2021 年 11 月从国企离职并入职互联网私企后,发现博客很少更新了 ...

  7. CVE-2013-1347:从入门到放弃之调试分析令人崩溃的 Microsoft IE CGenericElement UAF 漏洞...

    0x01 2013 年 "水坑" APT 攻击事件 在 2013 年 5 月,美国的劳工部网站被黑,利用的正是 CVE-2013-1347 这个漏洞,在当时导致大量使用 IE8 访 ...

  8. UAF (Use After Free)漏洞分析及利用

    因为大作业的需求要调试一个浏览器的UAF漏洞,首先必须对UAF漏洞有个整体的了解,本篇文章主要讲解UAF造成的原因以及利用方法,这里结合2016年HCTF fheap 题目分析起来还是有点耐人寻味. ...

  9. 2022CTF培训(十一)IOT 相关 CVE 漏洞分析

    附件下载链接 D-Link DIR-823G 固件全系统仿真 2022CTF培训(十)IOT 相关 CVE 漏洞分析 是采用 qemu-user 对个别程序进行仿真,而对于完整的仿真需要使用 qemu ...

  10. [漏洞分析] CVE-2022-32250 netfilter UAF内核提权

    [漏洞分析] CVE-2022-32250 netfilter UAF内核提权 文章目录 [漏洞分析] CVE-2022-32250 netfilter UAF内核提权 漏洞简介 环境搭建 漏洞原理 ...

最新文章

  1. Linux性能研究(总)
  2. zend studio 函数不提醒 小黄图标 小黄标
  3. 云信“欢乐颂活动”中奖名单
  4. 【题解报告】Leecode367. 有效的完全平方数——Leecode每日一题系列
  5. 随机森林做特征重要性排序和特征选择
  6. Cloud一分钟 | 谷歌投资的AR云平台开发商Blue Vision Labs,将由美版滴滴Lyft收购
  7. 全字库说文解字字体_【180期】可商用字体大全,无版权纠纷!
  8. 云南计算机专升本数据结构_云南计算机专升本分数大全(公布分数线431分)
  9. 防止mdf文件被非法附加后修改的一个简单实现方案
  10. Java学习笔记——dubbo服务之底层通讯协议Protocol
  11. Linux下安装PHP扩展
  12. 简易编程入门Part1
  13. 平时收集的一些有关UED的团队和个人博客
  14. win10计算机入门使用教程,win10技巧大全_win10使用技巧方法教程 - 系统家园
  15. 分享一个在线转码工具网站 文档音视频压缩等
  16. oracle create数据库,oracle手工创建数据库全纪录
  17. Blender基础建模 | 大帅老猿threejs特训
  18. 畜牧养殖物联网的应用功能
  19. 手机录音文件如何转换成文本?具体如何操作?
  20. logout命令详解

热门文章

  1. linux鼠标手势,Vivaldi 1.2 发布,定制鼠标手势
  2. 物联网嵌入式开发人员面临的5大挑战
  3. C# 打印自定义纸张设置
  4. 第三方登录(百度账号登录)
  5. 【Unity好项目分享】如何制作如游戏蔚蓝般极佳的操作手感
  6. 移动硬盘安装win10操作系统
  7. 产品经理常用的19类50+工具软件盘点
  8. 基于Struts2和hibernate的WebSocket聊天室的实现教程五:聊天机制
  9. QQ远程协助若干问题
  10. NoSQL 简介及什么是AICD