查看: 1278|回复: 25

最新IE远程代码执行漏洞分析

[复制链接]
发表于 2012-9-30 06:30:57 | 显示全部楼层 |阅读模式

漏洞信息
Internet Explorer 在打开攻击页面时,CMshtmlEd 对象被删除并释放,且释放后的内存被重用,导致 Use-After-Free.
受影响系统:
Microsoft Internet Explorer 9.x
Microsoft Internet Explorer 8.x
Microsoft Internet Explorer 7.x
发布时间:
2012-09-17
漏洞来源信息:
http://eromang.zataz.com/2012/09/16/zero-day-season-is-really-not-over-yet/
漏洞类型:
Use-After-Free


crash info

使用 IE 打开 exploit.htm,  发生异常,  堆栈情况如下

​
漏洞分析
异常产生在 CMshtmlEd::Exec(),    原因是由于 objMshtmlEd 被覆盖,  导致虚函数寻址调用时被控制​

查看 POC 中代码,  document.execCommand(“SelectAll”)  执行时会调用 CBase::execCommand()函数,  第一个参数为要执行命令的字符串,  函数中会检查要执行的命令是否有效.
在 mshtml!CEditRouter::ExecEditCommand.函数中会调用 CEditRouter::SetInternalEditHandler来设置命令事件 handler,  并创建一个 MshtmlEd 对象​

mshtml!CEditRouter::SetInternalEditHandler 函数内部调用 mshtml!CDoc::GetHTMLEditor  获取页面中的 Editor,  通过 mshtml!CHTMLEditor::AddCommandTarget 来创建并初始化一个命令事件.

int __stdcall CHTMLEditor::AddCommandTarget                        (                        )                        {                        CMshtmlEd                        *pEd =                        new                        CMshtmlEd();                        if                        (                        (NULL != pEd)                        && pEd->Initialize()                        )                        {                        return                        CImplPtrAry::Append(pEd);                        }                        return                        0x8007000E;                        }

接着会执行事件 Handler

​

在 POC 中  设置的 selectAll 的响应函数为  TestArray(),  且 exeCommand 执行的命令为selectAll


​

因此此处获取 CSelectAllCommand 对象,  并调用 exec 函数调用

TestArray()函数中的 document.write(“xxx”)  会将 document 中 vecObjMgr 删除,  因此之前申请的 CMshtmlEd  对象也会被删除.

​
当执行完 selectAll 命令时, objMshtmlEd 的地址已被释放,  继续寻址导致程序异常.  且在TestArray() 中 parent.xxx.src = “ AAAA\u0c08\u0c0cAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA” ,  刚好可以把 Free 掉的 MshtmlEd 对象地址占用,  以控制 EIP 执行任意代码.

漏洞利用

1、  利用 msvcrt 中的 ROP Chain 绕过 DEP2、  利用 JRE 中未开启 ASLR 的模块绕过 DEP.3、  利用 JIT Spray 喷射
发表于 2012-10-1 00:49:37 | 显示全部楼层
不错不错.,..我喜欢  
发表于 2012-10-1 04:34:10 | 显示全部楼层
不对,就是碗是铁的,里边没饭你吃啥去?  
发表于 2012-10-2 07:03:20 | 显示全部楼层
朕要休息了..............  
发表于 2012-10-4 23:26:28 | 显示全部楼层
应该加分  
29158478 该用户已被删除
发表于 2012-10-6 16:47:49 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2012-10-6 19:52:44 | 显示全部楼层
昨晚多几分钟的准备,今天少几小时的麻烦。  
发表于 2014-12-26 03:35:56 | 显示全部楼层
你还想说什么啊....  
发表于 2015-1-26 10:06:52 | 显示全部楼层
水至清则无鱼,人至贱则无敌!  
发表于 2015-2-28 12:42:26 | 显示全部楼层
支持一下吧  
高级模式
B Color Image Link Quote Code Smilies

本版积分规则