最新IE远程代码执行漏洞分析
来源:互联网 发布:淘宝店铺 制作收藏 编辑:程序博客网 时间:2024/05/18 09:45
漏洞信息
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 =newCMshtmlEd();if((NULL != pEd)&& pEd->Initialize()){returnCImplPtrAry::Append(pEd);}return0x8007000E;}
接着会执行事件 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 喷射
- 最新IE远程代码执行漏洞分析
- IE "ReleaseInterface()"远程代码执行漏洞
- Joomla远程代码执行漏洞分析
- ImageMagick远程代码执行漏洞分析
- Struts2(s2-016)远程代码执行漏洞详细代码分析
- Struts2远程代码执行漏洞分析(S2-013)
- ElasticSearch远程任意代码执行漏洞(CVE-2014-3120)分析
- 网银安全控件远程代码执行漏洞分析
- Struts2 S2 – 032远程代码执行漏洞分析报告
- Strust2远程代码执行漏洞(S2-033)利用分析
- Strust2远程代码执行漏洞(S2-033)利用分析
- Struts2 S2 – 032远程代码执行漏洞分析报告 .
- Spring Web Flow 远程代码执行漏洞分析
- Tomcat 远程代码执行漏洞分析(CVE-2017-12615)
- WordPress组合插件远程代码执行漏洞分析
- JBOSS远程代码执行漏洞
- JBOSS远程代码执行漏洞
- JBOSS远程代码执行漏洞
- HDU 1077 枚举圆心, 数学
- 关于TableViewCell生成时dequeueReusableCellWithIdentifier的认识
- linux 系统初始化过程详解
- Fire Net from http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=2
- 做饭记
- 最新IE远程代码执行漏洞分析
- Linux Cache 机制探究
- 线程同步机制初识
- 类图-细节的简单描述
- Android开发:Framework添加新模块
- 纪录片《国军抗战全纪实》
- 链表的c语言实现以及根据linux内核中链表的实现过程
- getRequestDispatcher 和sendRedirect区别
- 想你,但不爱你