PHP默认安装产生系统漏洞


Posted in PHP onOctober 09, 2006

这一个漏洞在 packetstorm 被发表,我把它翻成中文,加上自己的一些注解,希望对在 NT 上执行
PHP 的朋友有一些帮助。

当你下载 PHP 後,在它内含的安装文件中帮助了 PHP 在 NT + Apache Web Server 的安装方式
,其中的安装帮助会要你将底下这几行设置加到 apache 的 httpd.conf 设置文件中,而这个安装文
件将导引你将你的系统门户大开。

这几行命令为:

ScriptAlias /php/ "c:/php/"
AddType application/x-httpd-php .php
Action application/x-httpd-php "/php/php.exe"

我们进一步的解释这三行设置,这些设置命令要求 Apache 将 /php/ 这个虚拟目录直接映射到 c:/php/
目录下,所以当你使用: 

"http://www.example.com/php/"

链接网页的时候,实际上 Web Server 是直接存取到 c:/php/ 这个目录,这时候你会看到 "Access Denied"
的错误信息,但是当你改用:

"http://www.example.com/php/php.exe"

命令来连接的时候,你会发现服务器回送了 "No input file specified." 这行字,这行字是由 php.exe
所进行的回送,表示你刚刚在这台 server 上执行了 php 执行文件。

如果你的服务器是使用 php 里所教你的安装方法来作设置的,这时候你可能有了以下的危机。

[** 漏洞 1 **]

我们可以利用这个漏洞来读取这台服务器上的任何一个文件,甚至可以跨磁盘读取,只要使用下列方式连接:

"http://www.example.com/php/php.exe?c:\winnt\repair\sam"

PHP 会将文件 "c:\winnt\repair\sam" 丢给浏览器,并把它显示出来,而这个文件正是 Windows NT 
保存密码的所在,

"http://www.example.com/php/php.exe?d:\winnt\repair\sam"

PHP 会把在 D: 磁盘中相同的文件传出。
而有了这个 SAM 文件,黑客可以用以破解出你在这台机器上所设置的密码。

[** 漏洞 2 **]

如果你指定了在 php 目录下的文件,你的 Web 服务器会尝试执行这个文件,并且传会错误信息,所以当你
使用了:

"http://www.example.com/php/php4ts.dll"

这个错误会导致 Web Server 传回 "couldn<|>t create child process: 22693: C:/php/php4ts.dll"
这个信息,因而漏了你安装 PHP 的真实目录

PS. 经过我的测试,第二个漏洞在 PHP V4.11 上执行时将回传回 "Internal Server Error" 的错误,
并不回漏目录结构,但是在 PHP V4.11 中,第一个漏洞仍然有效。

简易解决法∶使用较长且不易判定之虚拟目录来放置 PHP 执行文件,例如∶

ScriptAlias /php-mY-sCrIpT/ "c:/php411/"
AddType application/x-httpd-php .php
Action application/x-httpd-php "/php-mY-sCrIpT/php.exe"

这样入侵者将不易得知 PHP 的存放目录,而降低了被入侵的机会。
在更改过 httpd.conf 後记得要将 Apache Service 重新启动∶

NET STOP APACHE
NET START APACHE

[END]

PHP 相关文章推荐
FCKeditor添加自定义按钮
Mar 27 PHP
php flv视频时间获取函数
Jun 29 PHP
用PHP的超级变量$_POST获取HTML表单(HTML Form) 数据
May 07 PHP
PHP 第二节 数据类型之转换
Apr 28 PHP
PHP中filter函数校验数据的方法详解
Jul 31 PHP
Yii2学习笔记之汉化yii设置表单的描述(属性标签attributeLabels)
Feb 07 PHP
Lumen timezone 时区设置方法(慢了8个小时)
Jan 20 PHP
PHP赋值的内部是如何跑的详解
Jan 13 PHP
Laravel框架集成UEditor编辑器的方法图文与实例详解
Apr 17 PHP
php解决约瑟夫环算法实例分析
Sep 30 PHP
laravel ORM关联关系中的 with和whereHas用法
Oct 16 PHP
php实现微信和支付宝支付的示例代码
Aug 11 PHP
把PHP安装为Apache DSO
Oct 09 #PHP
PHP4中实现动态代理
Oct 09 #PHP
phpmyadmin操作流程
Oct 09 #PHP
一个用于MySQL的PHP XML类
Oct 09 #PHP
ASP知识讲座四
Oct 09 #PHP
php.ini中文版
Oct 09 #PHP
用Apache反向代理设置对外的WWW和文件服务器
Oct 09 #PHP
You might like
如何使用PHP Embed SAPI实现Opcodes查看器
2015/11/10 PHP
详解PHP执行定时任务的实现思路
2015/12/21 PHP
jquery select多选框的左右移动 具体实现代码
2013/07/03 Javascript
JS鼠标滑过图片时切换图片实现思路
2013/09/12 Javascript
JavaScript实现Iterator模式实例分析
2015/06/09 Javascript
JavaScript、tab切换完整版(自动切换、鼠标移入停止、移开运行)
2016/01/05 Javascript
jQuery+php实时获取及响应文本框输入内容的方法
2016/05/24 Javascript
NodeJS遍历文件生产文件列表功能示例
2017/01/22 NodeJs
NodeJs模拟登陆正方教务
2017/04/28 NodeJs
学习LayUI时自研的表单参数校验框架案例分析
2019/07/29 Javascript
简述Vue中容易被忽视的知识点
2019/12/09 Javascript
如何实现js拖拽效果及原理解析
2020/05/08 Javascript
javascript贪吃蛇游戏设计与实现
2020/09/17 Javascript
ant design vue datepicker日期选择器中文化操作
2020/10/28 Javascript
[44:21]Ti4 循环赛第四日 附加赛NEWBEE vs LGD
2014/07/13 DOTA
Python字符串匹配算法KMP实例
2015/07/18 Python
python实现unicode转中文及转换默认编码的方法
2017/04/29 Python
python利用Tesseract识别验证码的方法示例
2019/01/21 Python
Python numpy中矩阵的基本用法汇总
2019/02/12 Python
Python进阶之全面解读高级特性之切片
2019/02/19 Python
详解Python解决抓取内容乱码问题(decode和encode解码)
2019/03/29 Python
在Tensorflow中实现leakyRelu操作详解(高效)
2020/06/30 Python
Python APScheduler执行使用方法详解
2020/12/10 Python
信息管理专业推荐信
2013/10/29 职场文书
机电一体化专业推荐信
2013/12/03 职场文书
工作表现自我评价
2014/02/08 职场文书
精彩广告词大全
2014/03/19 职场文书
庆国庆活动总结
2014/08/28 职场文书
博士导师推荐信
2015/03/25 职场文书
实习推荐信格式模板
2015/03/27 职场文书
2015年企业员工工作总结范文
2015/05/21 职场文书
MySQL infobright的安装步骤
2021/04/07 MySQL
MySQL之高可用集群部署及故障切换实现
2021/04/22 MySQL
Pyhton模块和包相关知识总结
2021/05/12 Python
MySQL中EXPLAIN语句及用法
2022/05/20 MySQL
vue实现input输入模糊查询的三种方式
2022/08/14 Vue.js