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 相关文章推荐
c#中的实现php中的preg_replace
Dec 21 PHP
PHP原理之异常机制深入分析
Aug 08 PHP
关于php内存不够用的快速解决方法
Oct 26 PHP
php通过字符串调用函数示例
Mar 02 PHP
php获取表单中多个同名input元素的值
Mar 20 PHP
Zend Framework动作助手Redirector用法实例详解
Mar 05 PHP
thinkPHP3.x常量整理(预定义常量/路径常量/系统常量)
May 20 PHP
php中关于长度计算容易混淆的问题分析
May 27 PHP
visual studio code 调试php方法(图文详解)
Sep 15 PHP
Laravel5.5 实现后台管理登录的方法(自定义用户表登录)
Sep 30 PHP
Laravel框架Eloquent ORM删除数据操作示例
Dec 03 PHP
laravel框架中间件简单使用方法示例
Jan 25 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实现的只保留字符串首尾字符功能示例【隐藏部分字符串】
2019/03/11 PHP
phpmyadmin在宝塔面板里进不去的解决方案
2020/07/06 PHP
Google Map API更新实现用户自定义标注坐标
2009/07/29 Javascript
禁用页面部分JavaScript方法的具体实现
2013/07/31 Javascript
jquery实现div阴影效果示例代码
2013/09/16 Javascript
js 判断上传文件大小及格式代码
2013/11/13 Javascript
IE8的JavaScript点击事件(onclick)不兼容的解决方法
2013/11/22 Javascript
JS使用replace()方法和正则表达式进行字符串的搜索与替换实例
2014/04/10 Javascript
Android中的jQuery:AQuery简介
2014/05/06 Javascript
自定义刻度jQuery进度条及插件
2015/09/02 Javascript
基于jQuery实现select下拉选择可输入附源码下载
2016/02/03 Javascript
javascript事件处理模型实例说明
2016/05/31 Javascript
Vue.JS入门教程之处理表单
2016/12/01 Javascript
MUI 解决动态列表页图片懒加载再次加载不成功的bug问题
2017/04/13 Javascript
详解Vue 动态添加模板的几种方法
2017/04/25 Javascript
Vuex入门到上手教程
2018/06/20 Javascript
vue.js中toast用法及使用toast弹框的实例代码
2018/08/27 Javascript
原生JS实现的跳一跳小游戏完整实例
2019/01/27 Javascript
JS实现的冒泡排序,快速排序,插入排序算法示例
2019/03/02 Javascript
javascript系统时间设置操作示例
2019/06/17 Javascript
用云开发Cloudbase实现小程序多图片内容安全监测的代码详解
2020/06/07 Javascript
Python模拟百度自动输入搜索功能的实例
2019/02/14 Python
Django CBV与FBV原理及实例详解
2019/08/12 Python
python脚本执行CMD命令并返回结果的例子
2019/08/14 Python
python用类实现文章敏感词的过滤方法示例
2019/10/27 Python
selenium中get_cookies()和add_cookie()的用法详解
2020/01/06 Python
Python连接Oracle之环境配置、实例代码及报错解决方法详解
2020/02/11 Python
Python列表解析操作实例总结
2020/02/26 Python
Python3标准库glob文件名模式匹配的问题
2020/03/13 Python
html5本地存储之localstorage 、本地数据库、sessionStorage简单使用示例
2014/05/08 HTML / CSS
微软瑞士官方网站:Microsoft瑞士
2018/04/20 全球购物
如何用Lucene索引数据库
2016/02/23 面试题
青年文明号汇报材料
2014/12/23 职场文书
经理岗位职责范本
2015/04/15 职场文书
毕业设计工作总结
2015/08/14 职场文书
MySQL的存储函数与存储过程的区别解析
2022/04/08 MySQL