作者:徘徊在堕落边缘的魔鬼 | 来源:互联网 | 2018-05-17 00:41
这篇文章主要介绍了php网站被挂木马后的修复方法,总结分析了Linux与Windows系统上木马的查杀方法,并给出了一个完整的木马查找工具实例,需要的朋友可以参考下
这篇文章主要介绍了php网站被挂木马后的修复方法,总结分析了Linux与Windows系统上木马的查杀方法,并给出了一个完整的木马查找工具实例,需要的朋友可以参考下
本文实例总结了php网站被挂木马后的修复方法。分享给大家供大家参考。具体方法如下:
在linux中我们可以使用命令来搜查木马文件,到代码安装目录执行下面命令
代码如下:
find ./ -iname "*.php" | xargs grep -H -n "eval(base64_decode"
搜出来接近100条结果,这个结果列表很重要,木马都在里面,要一个一个文件打开验证是否是木马,如果是,马上删除掉
最后找到10个木马文件,,存放在各种目录,都是php webshell,功能很齐全,用base64编码
如果你在windows中查找目录直接使用windows文件搜索就可以了,可以搜索eval或最近修改文件,然后如果是dedecms我们要查看最新dedecms漏洞呀然后修补。
下面给个php木马查找工具,直接放到你站点根目录
代码如下:
<&#63;php
/**************PHP Web木马扫描器************************/
/* [+] 作者: alibaba */
/* [+] MSN: weeming21@hotmail.com */
/* [+] 首发: t00ls.net , 转载请注明t00ls */
/* [+] 版本: v1.0 */
/* [+] 功能: web版php木马扫描工具*/
/* [+] 注意: 扫描出来的文件并不一定就是后门, */
/* 请自行判断、审核、对比原文件。*/
/* 如果你不确定扫出来的文件是否为后门,*/
/* 欢迎你把该文件发给我进行分析。*/
/*******************************************************/
ob_start();
set_time_limit(0);
$username = "t00ls"; //设置用户名
$password = "t00ls"; //设置密码
$md5 = md5(md5($username).md5($password));
$version = "PHP Web木马扫描器v1.0";
PHP Web 木马扫描器
$realpath = realpath('./');
$selfpath = $_SERVER['PHP_SELF'];
$selfpath = substr($selfpath, 0, strrpos($selfpath,'/'));
define('REALPATH', str_replace('//','/',str_replace('\','/',substr($realpath, 0, strlen($realpath) - strlen($selfpath)))));
define('MYFILE', basename(__FILE__));
define('MYPATH', str_replace('\', '/', dirname(__FILE__)).'/');
define('MYFULLPATH', str_replace('\', '/', (__FILE__)));
define('HOST', "http://".$_SERVER['HTTP_HOST']);
&#63;>
<&#63;php
if(!(isset($_COOKIE['t00ls']) && $_COOKIE['t00ls'] == $md5) && !(isset($_POST['username']) && isset($_POST['password']) && (md5(md5($_POST['username']).md5($_POST['password']))==$md5)))
{
echo '用户名: 密码: ';
}
elseif(isset($_POST['username']) && isset($_POST['password']) && (md5(md5($_POST['username']).md5($_POST['password']))==$md5))
{
setCOOKIE("t00ls", $md5, time()+60*60*24*365,"/");
echo "登陆成功!";
header( 'refresh: 1; url='.MYFILE.'&#63;action=scan' );
exit();
}
else
{
setCOOKIE("t00ls", $md5, time()+60*60*24*365,"/");
$setting = getSetting();
$action = isset($_GET['action'])&#63;$_GET['action']:"";
if($action=="logout")
{
setCOOKIE ("t00ls", "", time() - 3600);
Header("Location: ".MYFILE);
exit();
}
if($action=="download" && isset($_GET['file']) && trim($_GET['file'])!="")
{
$file = $_GET['file'];
ob_clean();
if (@file_exists($file)) {
header("Content-type: application/octet-stream");
header("Content-Disposition: filename="".basename($file).""");
echo file_get_contents($file);
}
exit();
}
&#63;>
<&#63;php echo $_SERVER['SERVER_ADDR']&#63;><&#63;php echo "$version"&#63;> |
<&#63;=date("Y-m-d H:i:s",mktime())&#63;>
扫描 |
设定 |
登出
|
<&#63;php
if($action=="setting")
{
if(isset($_POST['btnsetting']))
{
$Ssetting = array();
$Ssetting['user']=isset($_POST['checkuser'])&#63;$_POST['checkuser']:"php | php&#63; | phtml";
$Ssetting['all']=isset($_POST['checkall'])&&$_POST['checkall']=="on"&#63;1:0;
$Ssetting['hta']=isset($_POST['checkhta'])&&$_POST['checkhta']=="on"&#63;1:0;
setCOOKIE("t00ls_s", base64_encode(serialize($Ssetting)), time()+60*60*24*365,"/");
echo "设置完成!";
header( 'refresh: 1; url='.MYFILE.'&#63;action=setting' );
exit();
}
&#63;>
<&#63;php
}
else
{
$dir = isset($_POST['path'])&#63;$_POST['path']:MYPATH;
$dir = substr($dir,-1)!="/"&#63;$dir."/":$dir;
&#63;>
<&#63;php
if(isset($_POST['btnScan']))
{
$start=mktime();
$is_user = array();
$is_ext = "";
$list = "";
if(trim($setting['user'])!="")
{
$is_user = explode("|",$setting['user']);
if(count($is_user)>0)
{
foreach($is_user as $key=>$value)
$is_user[$key]=trim(str_replace("&#63;","(.)",$value));
$is_ext = "(.".implode("($|.))|(.",$is_user)."($|.))";
}
}
if($setting['hta']==1)
{
$is_hta=1;
$is_ext = strlen($is_ext)>0&#63;$is_ext."|":$is_ext;
$is_ext.="(^.htaccess$)";
}
if($setting['all']==1 || (strlen($is_ext)==0 && $setting['hta']==0))
{
$is_ext="(.+)";
}
$php_code = getCode();
if(!is_readable($dir))
$dir = MYPATH;
$count=$scanned=0;
scan($dir,$is_ext);
$end=mktime();
$spent = ($end - $start);
&#63;>
扫描: <&#63;php echo $scanned&#63;> 文件| 发现: <&#63;php echo $count&#63;> 可疑文件| 耗时: <&#63;php echo $spent&#63;> 秒
No. |
文件 |
更新时间 |
原因 |
特征 |
动作 |
<&#63;php echo $list&#63;>
<&#63;php
}
}
}
ob_flush();
&#63;>
<&#63;php
function scan($path = '.',$is_ext){
global $php_code,$count,$scanned,$list;
$ignore = array('.', '..' );
$replace=array(" ","n","r","t");
$dh = @opendir( $path );