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 和 MySQL 基础教程(三)
Oct 09 PHP
php date与gmdate的获取日期的区别
Feb 08 PHP
php中flush()、ob_flush()、ob_end_flush()的区别介绍
Feb 17 PHP
使用PHP下载CSS文件中的图片的代码
Sep 24 PHP
php广告加载类用法实例
Sep 23 PHP
简单谈谈php延迟静态绑定
Jan 26 PHP
php实现生成验证码实例分享
Apr 10 PHP
php使用gd2绘制基本图形示例(直线、圆、正方形)
Feb 15 PHP
PHP 序列化和反序列化函数实例详解
Jul 18 PHP
thinkphp3.2嵌入百度编辑器ueditor的实例代码
Jul 13 PHP
Laravel 5使用Laravel Excel实现Excel/CSV文件导入导出的功能详解
Oct 11 PHP
Laravel使用scout集成elasticsearch做全文搜索的实现方法
Nov 30 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网页游戏学习之Xnova(ogame)源码解读(八)
2014/06/23 PHP
laravel框架中路由设置,路由参数和路由命名实例分析
2019/11/23 PHP
prototype Element学习笔记(篇一)
2008/10/26 Javascript
jQuery EasyUI API 中文文档 - DataGrid数据表格
2011/11/17 Javascript
一个页面放2段图片滚动代码出现冲突的问题如何解决
2012/12/21 Javascript
js优化针对IE6.0起作用(详细整理)
2012/12/25 Javascript
javascript之Partial Application学习
2013/01/10 Javascript
jQuery切换网页皮肤并保存到Cookie示例代码
2014/06/16 Javascript
jquery果冻抖动效果实现方法
2015/01/15 Javascript
JS实现网页上随滚动条滚动的层效果代码
2015/11/04 Javascript
基于JavaScript的操作系统你听说过吗?
2016/01/28 Javascript
使用jQuery给input标签设置默认值
2016/06/20 Javascript
Bootstrap精简教程中秋大放送
2016/09/15 Javascript
jQuery EasyUI window窗口使用实例代码
2017/12/25 jQuery
vue配置多页面的实现方法
2018/05/22 Javascript
Vue最新防抖方案(必看篇)
2019/10/30 Javascript
JavaScript实现Excel表格效果
2020/02/07 Javascript
Vant 中的Toast设置全局的延迟时间操作
2020/11/04 Javascript
JavaScript构造函数原理及实现流程解析
2020/11/19 Javascript
ES6中的类(Class)示例详解
2020/12/09 Javascript
python实现图片批量剪切示例
2014/03/25 Python
Python3 伪装浏览器的方法示例
2017/11/23 Python
Python 3.7新功能之dataclass装饰器详解
2018/04/21 Python
matplotlib 输出保存指定尺寸的图片方法
2018/05/24 Python
实用自动化运维Python脚本分享
2018/06/04 Python
Python实现爬虫从网络上下载文档的实例代码
2018/06/13 Python
Python中的self用法详解
2019/08/06 Python
Python大数据之网络爬虫的post请求、get请求区别实例分析
2019/11/16 Python
专升本自我鉴定
2013/10/10 职场文书
幼儿教师思想汇报
2014/01/10 职场文书
《少年王勃》教学反思
2014/04/27 职场文书
2016年公司“3.12”植树节活动总结
2016/03/16 职场文书
检讨书怎么写?
2019/06/21 职场文书
原生JS封装vue Tab切换效果
2021/04/28 Vue.js
动漫APP软件排行榜前十名,半次元上榜,第一款由腾讯公司推出
2022/03/18 杂记
「SHOW BY ROCK!!」“雫シークレットマインド”组合单曲MV公开
2022/03/21 日漫