日期:2010-02-03 10:40:00 来源:本站整理
IE极光漏洞的原理探秘[网络技术]
本文“IE极光漏洞的原理探秘[网络技术]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
详情:http://bbs.xfocusx.com/thread-7873-1-1.html
by:轩辕小聪
本篇参考以下文章:
[1]http://www.geoffchappell.com/viewer.htm?doc=notes/security/aurora/index.htm
[2]http://securitylabs.websense.com/content/Blogs/3530.aspx
[3]http://www.securityfocus.com/archive/1/508961
此中,[1]对此漏洞举行了极端具体的讲解(就差奉告你怎么调试了),我就是看了它才理解细节上是怎么一回事,[2]则扼要地举行了讲解,而[3]则直接说出了调试的提醒.
因此,我这里只是看了以上参考文章之后,依葫芦画瓢调试了一下,把关于调试和理解的部份整理了一下,概念并非我自己首先得出来的.
调试环境:XP sp3 简体中文版系统,IE7(IE6更简单跳进shellcode,IE7跳进shellcode概率仿佛不大,不过这里主如果为了 谈论漏洞怎么来的,IE7虽跳不进shellcode,但是也会因为拜候无效地址而抛出非常,照样可以断下,所以并不影响下面谈论).
先察看PoC网页,这里的引用把heap spray等略掉了,完好的在附件:
简单地理解,Body中有个span对象,span对象中包含一个img对象,img对象的onload呼应例程中,调用 createEventObject成立了呼应event对象的一个副本,然后将span对象的innerHtml清空,这样招致img对象的释放.在此 之后,成立一个按时器,在超时例程中拜候新event对象的srcElement属性,应当是在这时刻触发了漏洞.
winbg载入IE7(PoC文件名为号令行参数),IE7呈现网页脚本或ActiveX对象被禁止提醒,确认答应运行,等好久后抛出非常断下
从栈回溯信息看,这的确是在按时器例程中利用event_obj.srcElement时呈现的非常.
触发非常的点很简单找,但是找到为什么却不简单.
关键是要理解CEventObj::get_srcElement怎么实现的,为什么这么实现,这是我看了[1]之后才理解的.简单地说,为在event 中可以拜候呼应的Element,CEventObj并非直接就在其类中保存一个CElement构造的指针,而是绕了几绕:CImgElement对 象成立后,又成立了呼应的CTreeNode对象,由CTreeNode对象的属性中保存CImgElement类指针.然后将CTreeNode对象的 地址,保存在这个img的事件对象CEventObj类的一个EVENTPARAM构造中.
对此,参考文献[3]直接给出了调试的提醒:
重新载入,在系统断点时输入号令bu mshtml!CImgElement::CImgElement,g运行,停在断点处一次,这时再次 g运行,IE7呈现网页脚本或ActiveX对象被禁止提醒,确认答应运行,等好久让它Heap spray,之后又断在 CImgElement::CImgElement
这时得到将成立的CImgElement对象指针,ecx=ecx=002033d0
bu CTreeNode::CTreeNode,运行断下
可以看到它是由CHtmRootParseCtx::BeginElement调用的,ecx=02b60880为CTreeNode类指 针,该函数第二个参数002033d0恰是方才成立的CImgElement类指针,函数调用CTreeNode::SetElement将该 CImgElement类与CTreeNode关联:
步过以上部份,在此之后,网页代码利用createEventObject成立了event的副本,很囧的是,这个新的CEventObj 类,当然copy了本来对象的EVENTPARAM构造,但是按照[1]的注释,在EVENTPARAM构造内容被copy的时刻,并没有增添 CTreeNode的拜候计数!
CEvent::Create中调用EVENTPARAM::EVENTPARAM复制EVENTPARAM构造,但后者的代码中的确没有包含操作此中 CTreeNode(在背面的CEventObj::get_srcElement函数解析中可以看出,CTreeNode类指针在EVENTPARAM 构造的头部)增添拜候计数的内容.
by:轩辕小聪
本篇参考以下文章:
[1]http://www.geoffchappell.com/viewer.htm?doc=notes/security/aurora/index.htm
[2]http://securitylabs.websense.com/content/Blogs/3530.aspx
[3]http://www.securityfocus.com/archive/1/508961
此中,[1]对此漏洞举行了极端具体的讲解(就差奉告你怎么调试了),我就是看了它才理解细节上是怎么一回事,[2]则扼要地举行了讲解,而[3]则直接说出了调试的提醒.
因此,我这里只是看了以上参考文章之后,依葫芦画瓢调试了一下,把关于调试和理解的部份整理了一下,概念并非我自己首先得出来的.
调试环境:XP sp3 简体中文版系统,IE7(IE6更简单跳进shellcode,IE7跳进shellcode概率仿佛不大,不过这里主如果为了 谈论漏洞怎么来的,IE7虽跳不进shellcode,但是也会因为拜候无效地址而抛出非常,照样可以断下,所以并不影响下面谈论).
先察看PoC网页,这里的引用把heap spray等略掉了,完好的在附件:
winbg载入IE7(PoC文件名为号令行参数),IE7呈现网页脚本或ActiveX对象被禁止提醒,确认答应运行,等好久后抛出非常断下
触发非常的点很简单找,但是找到为什么却不简单.
关键是要理解CEventObj::get_srcElement怎么实现的,为什么这么实现,这是我看了[1]之后才理解的.简单地说,为在event 中可以拜候呼应的Element,CEventObj并非直接就在其类中保存一个CElement构造的指针,而是绕了几绕:CImgElement对 象成立后,又成立了呼应的CTreeNode对象,由CTreeNode对象的属性中保存CImgElement类指针.然后将CTreeNode对象的 地址,保存在这个img的事件对象CEventObj类的一个EVENTPARAM构造中.
对此,参考文献[3]直接给出了调试的提醒:
bu CTreeNode::CTreeNode,运行断下
CEvent::Create中调用EVENTPARAM::EVENTPARAM复制EVENTPARAM构造,但后者的代码中的确没有包含操作此中 CTreeNode(在背面的CEventObj::get_srcElement函数解析中可以看出,CTreeNode类指针在EVENTPARAM 构造的头部)增添拜候计数的内容.
以上是“IE极光漏洞的原理探秘[网络技术]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |
- ·上一篇文章:网站安全防护技术谈论
- ·下一篇文章:11种办法确保网站安全
- ·中查找“IE极光漏洞的原理探秘”更多相关内容
- ·中查找“IE极光漏洞的原理探秘”更多相关内容
评论内容只代表网友观点,与本站立场无关!
评论摘要(共 0 条,得分 0 分,平均 0 分)
查看完整评论