安全研究

安全漏洞
PHP realpath()函数绕过safe_mode及open_basedir安全限制漏洞

发布日期:2007-05-24
更新日期:2007-06-04

受影响系统:
PHP PHP < 5.2.3
不受影响系统:
PHP PHP 5.2.3
描述:
BUGTRAQ  ID: 24259

PHP是一种流行的WEB服务器端编程语言。

PHP的realpath()函数实现上存在漏洞,远程攻击者可能利用此漏洞绕过某些安全限制。

PHP的file_exists()函数不允许检查是否存在open_basedir指定目录之外的文件,但readfile()没有这个限制,允许检查文件系统的任意位置是否存在某一文件。如果realpath($filename)返回了字符串(也就是非false),就表示文件存在,这就导致绕过了open_basedir限制。

<*来源:bugs.php.net (bugs.php.net@chsc.dk
  
  链接:http://secunia.com/advisories/25456/
        http://aspn.activestate.com/ASPN/Mail/Message/php-Dev/3487076
        http://www.php.net/releases/5_2_3.php
*>

测试方法:

警 告

以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负!

var_dump(file_exists($dir) === (bool) realpath($dir));

建议:
厂商补丁:

PHP
---
目前厂商已经发布了升级补丁以修复这个安全问题,请到厂商的主页下载:

http://www.php.net/downloads.php#v5

浏览次数:2505
严重程度:0(网友投票)
本安全漏洞由绿盟科技翻译整理,版权所有,未经许可,不得转载
绿盟科技给您安全的保障