最新消息:网站改版咯

php写的简单扫描木马

php Yovae 1325浏览

这里分享一个php写的简单扫描php程序是否包含危险函数的扫描程序,可以在线扫描php木马。希望对读者有用。

<?php

/**
  +------------------------------------------------------------
  *	功能:简单扫描php程序是否有危险函数,只支持PHP格式。
  +------------------------------------------------------------
  *	使用:
  *		建议在命令行下使用此脚本,以免超时,执行:
  *		php scan.php ./
  +------------------------------------------------------------
  *		你如果没有命令行,那么可以上传此脚本,然后通过网址访问此脚本,
  *             默认会扫描当前目录开始下的所有目录。
  *		http://www.example.com/scan.php
  +------------------------------------------------------------
  *     http://www.yovae.com
  +------------------------------------------------------------
*/

@set_time_limit(0);

ob_implicit_flush(true);  

function opendir_recursive($dir, $recall) {
	if(substr($dir, -1) != '/') $dir .= '/';
       if (is_dir($dir)) {
          if ($dh = opendir($dir)) {
              while (($file = readdir($dh)) !== false ) { 
                       if( $file != "." && $file != ".." )
                       {   
                               if( is_dir( $dir . $file ) ) 
                               {   
                                       opendir_recursive( $dir . $file . "/", $recall);
                               }   
                               else
                               {   
                                        call_user_func_array($recall, array($dir . $file));
                               }   
                       }   
              }   
              closedir($dh);
          }   
       }   
}

$keywords = explode('|', 'com|system|exec|eval|escapeshell|cmd|passthru|base64_decode|gzuncompress');
function scan_recall($file) {
        global $keywords;
        if(substr($file, -4, 4) == '.php') {
                echo '.';
                @ob_flush();
                $s = file_get_contents($file);
                foreach($keywords as $keyword) {
                        if(preg_match("#$keywords*(#is", $s)) {
                                echo "$file ..."."---->";
                               @error_log($file." [$keyword]rn", 3, './log.txt');
                                echo "[$keyword]"."<hr>";
                               @ob_flush();
                                break;
                        }   
                }   
        }   
}

if(empty($argv[1])) {
	$argv[1] = './';
} 

$dir = $argv[1];
opendir_recursive($dir, 'scan_recall');
echo '[DONE]';
?>

转载请注明:Yovae Studio » php写的简单扫描木马