一段类似于后门程序的安全监测代码

<?php
/*
+--------------------------------------------------------------------------+
| Codz by indexphp Version:0.01 |
| (c) 2009 indexphp |
| http://www.indexphp.org |
+--------------------------------------------------------------------------+
 */
/*===================== 程序配置 =====================*/
error_reporting(0);
$dir = '/'; //设置要扫描的目录
$jumpoff = false; //设置要跳过检查的文件
$jump = 'safe.php|g'; //设置要跳过检查的文件或者文件夹 $jumpoff=false 时此设置有效
$danger = 'eval|cmd|passthru'; //设置要查找的危险的函数 以确定是否木马文件
$suffix = 'php|inc'; //设置要扫描文件的后缀
$dir_num = 0;
$file_num = 0;
$danger_num = 0;
/*===================== 配置结束 =====================*/
extract(GetHttpVars());
if ($m == "edit")
{
  Edit();
}

if ($m == "del")
{
  Delete();
}

if ($check == 'check')
{
  $safearr = explode("|", $jump);
  $start_time = microtime(true);
  safe_check($dir);
  $end_time = microtime(true);
  $total = $end_time - $start_time;
  $file_num = $file_num - $dir_num;
  $message = " 文件数:" . $file_num;
  $message .= " 文件夹数:" . $dir_num;
  $message .= " 可疑文件数:" . $danger_num;
  $message .= " 执行时间:" . $total;
  echo $message;
  exit();
}

function GetHttpVars()
{
//全局变量
  $superglobs = array(
  '_POST',
  '_GET',
  'HTTP_POST_VARS',
  'HTTP_GET_VARS');
  $httpvars = array();
  foreach ($superglobs as $glob)
  {
  global $$glob;
  if (isset($$glob) && is_array($$glob))
  {
  $httpvars = $$glob;
  }
  if (count($httpvars) > 0)
  {
  break;
  }

  }
  return $httpvars;
}

function Safe_Check($dir) //遍历文件
{
  global $danger, $suffix, $dir_num, $file_num, $danger_num;
  $hand = @dir($dir) or die('文件夹不存在');
  while ($file = $hand->read())
  {
  $filename = $dir . '/' . $file;
  if (!$jumpoff)
  {
  if (Jump($filename))
  {
  continue;
  }

  }
  if (@is_dir($filename) && $file != '.' && $file != '..' && $file != './..')
  {
  $dir_num++;
  Safe_Check($filename);
  }
  if (preg_match_all("/\.($suffix)/i", $filename, $out))
  {
  $str = '';
  $fp = @fopen($filename, 'r') or die('没有权限');
  while (!feof($fp))
  {
  $str .= fgets($fp, 1024);
  }
  fclose($fp);
  if (preg_match_all("/($danger)[ \r\n\t]{0,}([\[\(])/i", $str, $out))
  {
  echo "<font color='green' style='font-size:14px'>可疑文件:{$filename}</font>
<a href='?m=edit&filename=$filename' target='_blank'><u>查看代码</u></a>
<a href='?m=del&filename=$filename' target='_blank'>删除</u></a><br>";
  $danger_num++;
  }
  }
  $file_num++;
  }
}

function Edit() //查看可疑文件
{
  global $filename;
  $filename = str_replace("..", "", $filename);
  $file = $filename;
  $content = "";
  if (is_file($file)) {
  $fp = fopen($file, "r") or die('没有权限');
  $content = fread($fp, filesize($file));
  fclose($fp);
  $content = htmlspecialchars($content);
  }
  echo "<textarea name='str' style='width:100%;height:450px;background:#cccccc;'>$content</textarea>\r\n";
  exit();
}

function Delete() //删除文件
{
  global $filename;
  (is_file($filename)) ? ($mes = unlink($filename) ? '删除成功' : '删除失败 查看权限') : '';
  echo $mes;
  exit();
}

function Jump($file) //跳过文件
{
  global $jump, $safearr;
  if ($jump != '') {
  foreach ($safearr as $v)
  {
  if ($v == '')
  {
  continue;
  }

  if (eregi($v, $file))
  {
  return true;
  }

  }
  }
  return false;
}

?>
<form action="" >
<input type="submit" value="开始检测" />
<input type="hidden" name="check" value="check"/>
</form>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值