Lucene search

K
seebugRootSSV:3445
HistoryJun 20, 2008 - 12:00 a.m.

PHP chdir()和ftok()函数绕过safe_mode限制漏洞

2008-06-2000:00:00
Root
www.seebug.org
23

0.005 Low

EPSS

Percentile

73.7%

BUGTRAQ ID: 29796
CVE(CAN) ID: CVE-2008-2666

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

PHP的chdir()和ftok()函数中存在多个绕过safe_mode限制漏洞。

在chdir()函数中:


PHP_FUNCTION(chdir)
{
char *str;
int ret, str_len;

if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &str,
&str_len) == FAILURE) {
RETURN_FALSE;
}

if ((PG(safe_mode) && !php_checkuid(str, NULL,
CHECKUID_CHECK_FILE_AND_DIR)) || php_check_open_basedir(str TSRMLS_CC))
{
RETURN_FALSE;
}
ret = VCWD_CHDIR(str);

if (ret != 0) {
php_error_docref(NULL TSRMLS_CC, E_WARNING, "%s (errno %d)",
strerror(errno), errno);
RETURN_FALSE;
}

RETURN_TRUE;
}


safe_mode检查了str,例如:


Warning: chdir(): SAFE MODE Restriction in effect. The script whose uid
is 80 is not allowed to access / owned by uid 0 in /www/mb/mb.php on
line 8


用户可以在当前目录中创建http:子目录,因此可以创建http://…/…/…/…/…/…/ 。

TRUE==((PG(safe_mode) && !php_checkuid(str, NULL,
CHECKUID_CHECK_FILE_AND_DIR)) || php_check_open_basedir(str
TSRMLS_CC)))

对于str="http://…/…/…/…/…/…/" ,safe_mode会忽略所有带有http:// 的目录。

ftok()函数中也存在类似的漏洞。

PHP 5.2.6
PHP

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

<a href=“http://www.php.net” target=“_blank”>http://www.php.net</a>


                                                -&nbsp;---EXAMPLE1---
cxib#&nbsp;cat&nbsp;/www/wufff.php
&lt;?
echo&nbsp;getcwd().&quot;\n&quot;;
chdir(&quot;/etc/&quot;);
echo&nbsp;getcwd().&quot;\n&quot;;
?&gt;
cxib#&nbsp;ls&nbsp;-la&nbsp;/www/wuf