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 相关文章推荐
PHP如何透过ODBC来存取数据库
Oct 09 PHP
功能齐全的PHP发送邮件类代码附详细说明
Jul 10 PHP
浅析PHP Socket技术
Aug 02 PHP
PHP函数之日期时间函数date()使用详解
Sep 09 PHP
php 获取SWF动画截图示例代码
Feb 10 PHP
php异常处理使用示例
Feb 25 PHP
Yii操作数据库的3种方法
Mar 11 PHP
PHP抓取网页、解析HTML常用的方法总结
Jul 01 PHP
php文档工具PHP Documentor安装与使用方法
Jan 25 PHP
Smarty日期时间操作方法示例
Nov 15 PHP
Yii框架页面渲染操作实例详解
Jul 19 PHP
使用composer安装使用thinkphp6.0框架问题【视频教程】
Oct 01 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
2.PHP入门
2006/10/09 PHP
PHP 伪静态隐藏传递参数名的四种方法
2010/02/22 PHP
php学习笔记 类的声明与对象实例化
2011/06/13 PHP
php object转数组示例
2014/01/15 PHP
php中操作memcached缓存进行增删改查数据的实现代码
2014/08/15 PHP
php封装db类连接sqlite3数据库的方法实例
2017/12/19 PHP
PHP闭包定义与使用简单示例
2018/04/13 PHP
改写一个简单的菜单 弹性大小
2010/12/02 Javascript
javascript中数组中求最大值示例代码
2013/12/18 Javascript
JS控制图片翻转示例代码(兼容firefox,ie,chrome)
2013/12/19 Javascript
浅谈 javascript 事件处理
2015/01/04 Javascript
JS设置cookie、读取cookie
2016/02/24 Javascript
jquery删除数组中重复元素
2016/12/05 Javascript
JavaScript触发onScroll事件的函数节流详解
2016/12/14 Javascript
vue router动态路由下让每个子路由都是独立组件的解决方案
2018/04/24 Javascript
微信小程序实现留言功能
2018/10/31 Javascript
使用layui+ajax实现简单的菜单权限管理及排序的方法
2019/09/10 Javascript
浅谈layer弹出层按钮颜色修改方法
2019/09/11 Javascript
vue实现图片上传预览功能
2019/12/23 Javascript
JS的时间格式化和时间戳转换函数示例详解
2020/07/27 Javascript
js实现全选和全不选
2020/07/28 Javascript
[01:22:10]Ti4 循环赛第二日 DK vs Empire
2014/07/11 DOTA
12步入门Python中的decorator装饰器使用方法
2016/06/20 Python
python删除不需要的python文件方法
2018/04/24 Python
pandas 数据实现行间计算的方法
2018/06/08 Python
Python开启线程,在函数中开线程的实例
2019/02/22 Python
vim自动补全插件YouCompleteMe(YCM)安装过程解析
2019/10/21 Python
python 指定源路径来解决import问题的操作
2021/03/04 Python
css3实例教程 一款纯css3实现的环形导航菜单
2014/10/20 HTML / CSS
Haggar官网:美国男装品牌
2020/02/16 全球购物
员工评语大全
2014/01/19 职场文书
事业单位考察材料范文
2014/12/25 职场文书
研究生个人学年总结
2015/02/14 职场文书
团员年度个人总结
2015/02/26 职场文书
Html5新增了哪些功能
2021/04/16 HTML / CSS
Java面试题冲刺第十九天--数据库(4)
2021/08/07 Java/Android