受影响系统:
PHP 5.0.2
PHP 5.0.1
PHP 5.0.0
PHP 4.3.9
PHP 4.3.8
PHP 4.3.7
PHP 4.3.6不受影响系统:
PHP 5.0.3
PHP 4.3.10--------------------------------------------------------------------------------
描述:PHP存在输入验证漏洞,远程攻击者可以利用这个漏洞读取系统文件内容及进行目录遍历攻击。问题一是addslashes()存在问题,addslashes()用于过滤用户输入,在magic_quotes_gpc设置"on"时,将对每个输入执行addslashes()进行过滤,但是由于NULL字节不正确被addslashes()编码,如果用户输入被include()或 require()使用,可能导致攻击者读取文件系统的任意文件。问题二是上传路径遍历问题,PHP自动过滤上传的文件名数据,删除在斜杠或反斜杠之前的数据,但是如果攻击者上传的文件包含单引号,而WEB服务又设置 magic_quotes为ON,或者对上传文件名执行addslashes()操作,那么在单引号前会前缀一个反斜杠,因此在Windows系统可造成目录遍历问题,导致文件上传到系统任意目录中。来源:Daniel Fabian ([email protected])链接:http://marc.theaimsgroup.com/?l=bugtraq&m=110321976808504&w=2测试方法:警 告 
以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负!Daniel Fabian ([email protected])提供了如下测试方法:如有如下PHP脚本:<?php
$whatever = addslashes($_REQUEST['whatever']);
include("/path/to/program/" . $whatever . "/header.htm");
?>恶意攻击者可以提交如下URL获得文件内容:http://localhost/phpscript.php?whatever=../../../../boot.ini%00
目前官方已经发布了升级补丁以修复这个安全问题,强烈建议所有 Windows 主机上运行 PHP 的朋友升级到 PHP 4.3.10 或者 5.0.3版本

解决方案 »

  1.   

    方法很多,设置php.ini的user_dir即可限制文件夹。
      

  2.   

    代码安全很重要。我想,一个合格的PHPer是不会这么写代码的吧,呵呵
      

  3.   

    安全是相对的
    如果编码不好的话是肯定不会安全的asp的不安全一大半是因为windows系统,还有就是因为本身的功能太少,不得不使用有安全隐患的第三方代码
      

  4.   

    <?php
    $whatever = addslashes($_REQUEST['whatever']);
    include("/path/to/program/" . $whatever . "/header.htm");
    ?>
    我正是这样。
    呵,不过$whatever,是内部产生的。
    对我来说这个还不是问题。而是日益增多的黑客.ddos功击