首页
社区
课程
招聘
[原创]CVE-2011-0065 Firefox mChannel UAF漏洞
发表于: 2017-3-8 13:56 10896

[原创]CVE-2011-0065 Firefox mChannel UAF漏洞

2017-3-8 13:56
10896

软件名称 Firefox

软件版本Firefox 3.6.16

漏洞模块xul.dll

漏洞编号CVE-2011-0065

危害等级:高危

漏洞类型释放重引用

威胁类型:远程


       Mozilla Firefox是一款非常流行的开源WEB浏览器。SeaMonkey是开源的Web浏览器、邮件和新闻组客户端、IRC会话客户端和HTML编辑器。 

3.0 windbg设置

首先添加windbg关于Firefox的符号表地址

 

3.1漏洞触发

3.1.1 poc


 

 

3.1.2 触发异常

运行FireFox并且用windbg附加它,然后运行刚才的Poc,断到异常处

 

然后用kv指令查看此时的堆栈信息,可以看到栈顶的返回地址68cf4e75

 

ub指令查看0x68cf4e75地址前面的指令,漏洞是出现在xul.dll模块中

 

根据C++成员函数this指针调用约定,可以知道上面的ecx是虚表函数,eax是对象地址,而call dword ptr ds[ecx+18]调用的整是某个对象的方法,即虚函数。

查看xul!nsObjectLoadingContent::LoadObject+0xf2发现有两个同名函数。

 

根据上面触发漏洞时栈顶的返回地址68cf4e75可以知道这里调用的是:

Matched: 68cf4d6d xul!nsObjectLoadingContent::LoadObject (class nsIURI *, int, class nsCString *, int)

因此,对68cf4d6d下断点:

0:000> bp 68cf4d6d

另外,从poc代码中可以看到关键函数onChannelRedirect 因此我们可以直接在winDbg中搜索函数,但是发现很多类里面都包含着onChannelRedirect 方法

 

但是刚才我们已经找到了,触发漏洞的类是xul!nsObjectLoadingContent,通过搜索,该类里也包含onChannelRedirect方法,连同其参数也一并列了出来,前两个参数为类对象

 

因此对xul!nsObjectLoadingContent::onChannelRedirect下断点,重新载入poc.html执行后,发现确实可以断下

 

 

查看此时它的三个参数,其中第二个参数是对象067a3e90,其余均为0

 

分析该函数的反汇编代码

 

上面的调试信息已经给出了源码文件的路径和行数,因此我们可以直接查看nsObjectLoadingContent::onChannelRedirect函数的源码,可以通过http://hg.mozilla.org/releases/mozilla-1.9.2/file/c24f21581d77/content/base/src/nsObjectLoadingContent.cpp获取在线代码

NS_IMETHODIMP

nsObjectLoadingContent::OnChannelRedirect(

nsIChannel *aOldChannel,                                          


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

收藏
免费 1
支持
分享
打赏 + 1.00雪花
打赏次数 1 雪花 + 1.00
 
赞赏  CCkicker   +1.00 2017/05/08
最新回复 (9)
雪    币: 393
活跃值: (150)
能力值: (RANK:110 )
在线值:
发帖
回帖
粉丝
2
如果可以楼主可以把堆喷那块的漏洞利用分析分析,增强分析文章完整性
2017-3-8 15:24
0
雪    币: 1491
活跃值: (985)
能力值: (RANK:860 )
在线值:
发帖
回帖
粉丝
3
编辑了一下内容,更容易阅读一些
2017-3-9 17:39
0
雪    币: 208
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
当开启一个浏览器的时候,会有多个进程存在,那应该附加哪一个进程才是正确的。
2017-3-12 10:02
0
雪    币: 179
活跃值: (575)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
5
good!!!!
2017-3-13 16:19
0
雪    币: 1184
活跃值: (174)
能力值: ( LV12,RANK:270 )
在线值:
发帖
回帖
粉丝
6
win7开了aslr怎么办,exploit还有用吗?
2017-4-5 16:16
0
雪    币: 44
活跃值: (117)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
明明是抄的漏洞战争,基本一模一样,算什么原创。
2019-4-9 10:52
0
雪    币: 3850
活跃值: (292)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
8
自己做实验时加载firefox符号表服务器失败,请问怎么解决的?能否提供firefox符号表
2019-10-25 10:44
1
雪    币: 7366
活跃值: (1866)
能力值: ( LV10,RANK:174 )
在线值:
发帖
回帖
粉丝
9
dodohit [em_63]自己做实验时加载firefox符号表服务器失败,请问怎么解决的?能否提供firefox符号表
我的也失败了,按照https://developer.mozilla.org/en-US/docs/Mozilla/Using_the_Mozilla_symbol_server提示手动下载也不行,估计是现在不提供了,想编译一份来老是报错

2019-10-29 20:23
0
雪    币: 3850
活跃值: (292)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
10
If symbols will not download no matter what you do, the problem may be that Internet Explorer has been set to the Work Offline mode. You will not receive any warnings of this in Windbg, Visual C++ or Visual Studio. Even using the command line with symchk.exe to download symbols will fail. This is because Microsoft uses Internet Explorer's internet & proxy settings to download the symbol files. Check the File menu of Internet Explorer to ensure "Work Offline" is unchecked.
2019-11-6 15:39
0
游客
登录 | 注册 方可回帖
返回
//