首页
社区
课程
招聘
Microsoft Internet Explorer execCommand Use-After-Free Vulnerability Analyze
2012-9-19 00:14 5686

Microsoft Internet Explorer execCommand Use-After-Free Vulnerability Analyze

2012-9-19 00:14
5686
written by h4ckmp
http://t.qq.com/h4ckmp
欢迎讨论各种漏洞问题.

漏洞信息
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绕过DEP
2、        利用JRE中未开启ASLR的模块绕过DEP.
3、        利用JIT Spray喷射

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
收藏
点赞3
打赏
分享
最新回复 (10)
雪    币: 30
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
akingh 2012-9-19 03:10
2
0
分析的很好 可惜不懂行- -
雪    币: 72
活跃值: (25)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
打狗棒 2012-9-19 09:59
3
0
赞,又见高水平分析。楼主对IE逆向得很透彻。
雪    币: 589
活跃值: (119)
能力值: ( LV11,RANK:190 )
在线值:
发帖
回帖
粉丝
promsied 4 2012-9-19 10:09
4
0
先回帖再学习
雪    币: 40
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
误码率 2012-9-19 11:46
5
0
碉堡了~~这个是0day啊
雪    币: 40
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
误码率 2012-9-19 11:47
6
0
为什么用JRE来绕过DEP不靠谱了
雪    币: 589
活跃值: (119)
能力值: ( LV11,RANK:190 )
在线值:
发帖
回帖
粉丝
promsied 4 2012-9-19 12:06
7
0
不是用JRE来绕过DEP不靠谱
只是MSF上的用JRE的样本我怎么都没法触发
雪    币: 58
活跃值: (25)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
寂寞如刀 1 2012-9-19 14:52
8
0
楼主给个POC供下载吧.
雪    币: 40
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
误码率 2012-9-20 10:33
9
0
MSF已经更新了。。
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
亡灵巫师 2012-9-25 16:15
10
0
msf上的poc测试发现,xp sp3+IE8失败,win7+IE9失败.
但是xp sp3英文版+ie8测试成功.
雪    币: 78
活跃值: (85)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
baixinye 1 2012-9-25 19:31
11
0
试试我这个poc呢~

CVE-2012-4969.rar
上传的附件:
游客
登录 | 注册 方可回帖
返回