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 相关文章推荐
在Windows版的PHP中使用ADO
Oct 09 PHP
php Mysql日期和时间函数集合
Nov 16 PHP
php下MYSQL limit的优化
Jan 10 PHP
DISCUZ 论坛管理员密码忘记的解决方法
May 14 PHP
php中存储用户ID和密码到mysql数据库的方法
Feb 06 PHP
apache配置虚拟主机的方法详解
Jun 17 PHP
smarty模板中拼接字符串的方法
Feb 14 PHP
php简单实现多字节字符串翻转的方法
Mar 31 PHP
php 如何获取文件的后缀名
Jun 05 PHP
php cookie工作原理与实例详解
Jul 18 PHP
Yii2.0 RESTful API 基础配置教程详解
Dec 26 PHP
laravel 解决后端无法获取到前端Post过来的值问题
Oct 22 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
Zerg基本策略
2020/03/14 星际争霸
发布BlueShow v1.0 图片浏览器(类似lightbox)blueshow.js 打包下载
2007/07/21 Javascript
别了 JavaScript中的isXX系列
2012/08/01 Javascript
javascript定时变换图片实例代码
2013/03/17 Javascript
jquery分页插件AmSetPager(自写)
2013/04/15 Javascript
jquery 多行文本框(textarea)高度变化
2013/07/03 Javascript
JS 获取select(多选下拉)中所选值的示例代码
2013/08/02 Javascript
jquery利用ajax调用后台方法实例
2013/08/23 Javascript
js中的数组Array定义与sort方法使用示例
2013/08/29 Javascript
JS判断不能为空实例代码
2013/11/26 Javascript
jquery实现的鼠标拖动排序Li或Table
2014/05/04 Javascript
浅谈javascript面向对象程序设计
2015/01/21 Javascript
js实现单击图片放大图片的方法
2015/02/17 Javascript
移动端js触摸事件详解
2016/09/18 Javascript
深入理解jquery中extend的实现
2016/12/22 Javascript
Node.js使用cookie保持登录的方法
2018/05/11 Javascript
微信小程序实现多选功能
2018/11/04 Javascript
[08:07]DOTA2每周TOP10 精彩击杀集锦vol.8
2014/06/25 DOTA
PyTorch学习笔记之回归实战
2018/05/28 Python
Python使用itertools模块实现排列组合功能示例
2018/07/02 Python
Python判断字符串是否为字母或者数字(浮点数)的多种方法
2018/08/03 Python
Python3 导入上级目录中的模块实例
2019/02/16 Python
numpy数组做图片拼接的实现(concatenate、vstack、hstack)
2019/11/08 Python
使用pyinstaller逆向.pyc文件
2019/12/20 Python
Python使用for生成列表实现过程解析
2020/09/22 Python
Sisley法国希思黎美国官方网站:享誉全球的奢华植物美容品牌
2020/06/27 全球购物
说说在weblogic中开发消息Bean时的persistent与non-persisten的差别
2013/04/07 面试题
建筑工程实习自我鉴定
2013/09/19 职场文书
编辑硕士自荐信范文
2013/11/27 职场文书
销售冠军获奖感言
2014/02/03 职场文书
买卖车协议书
2014/04/21 职场文书
初中作文评语集锦
2014/12/25 职场文书
毕业实习计划书
2015/01/16 职场文书
2016春季运动会开幕词
2016/03/04 职场文书
员工给公司的建议书
2019/06/24 职场文书
MYSQL事务的隔离级别与MVCC
2022/05/25 MySQL