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 相关文章推荐
Zend公司全球首推PHP认证
Oct 09 PHP
Win9x/ME下Apache+PHP安装配置
Oct 09 PHP
php简单封装了一些常用JS操作
Feb 25 PHP
php中几种常见安全设置详解
Apr 06 PHP
PHP下打开phpMyAdmin出现403错误的问题解决方法
May 23 PHP
php防止sql注入代码实例
Dec 18 PHP
php第一次无法获取cookie问题处理
Dec 15 PHP
阿里云Win2016安装Apache和PHP环境图文教程
Mar 11 PHP
php的扩展写法总结
May 14 PHP
laravel-admin的图片删除实例
Sep 30 PHP
安装PHP扩展时解压官方 tgz 文件后没有configure文件无法进行配置编译的问题
Aug 26 PHP
PHP 图片处理
Sep 16 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
array_multisort实现PHP多维数组排序示例讲解
2011/01/04 PHP
深入理解require与require_once与include以及include_once的区别
2013/06/05 PHP
PHP对象递归引用造成内存泄漏分析
2014/08/28 PHP
PHP之header函数详解
2021/03/02 PHP
javascript Array.remove() 数组删除
2009/08/06 Javascript
JavaScript继承方式实例
2010/10/29 Javascript
jquery validate在ie8下的bug解决方法
2013/11/13 Javascript
基于jQuery的JavaScript模版引擎JsRender使用指南
2014/12/29 Javascript
jquery插件orbit.js实现图片折叠轮换特效
2015/04/14 Javascript
jQuery根据元素值删除数组元素的方法
2015/06/24 Javascript
Node.js的Express框架使用上手指南
2016/03/12 Javascript
BootStrap实现树形目录组件代码详解
2016/06/21 Javascript
JS控制TreeView的结点选择
2016/11/11 Javascript
关于TypeScript中import JSON的正确姿势详解
2017/07/25 Javascript
Angular实现图片裁剪工具ngImgCrop实践
2017/08/17 Javascript
vue项目使用axios发送请求让ajax请求头部携带cookie的方法
2018/09/26 Javascript
Vue路由模块化配置的完整步骤
2019/08/14 Javascript
实现vuex与组件data之间的数据同步更新方式
2019/11/12 Javascript
vue 解决mintui弹窗弹起来,底部页面滚动bug问题
2020/11/12 Javascript
线程和进程的区别及Python代码实例
2015/02/04 Python
Python实现从百度API获取天气的方法
2015/03/11 Python
安装Python的web.py框架并从hello world开始编程
2015/04/25 Python
python异常和文件处理机制详解
2016/07/19 Python
在Linux命令行终端中使用python的简单方法(推荐)
2017/01/23 Python
python多进程和多线程究竟谁更快(详解)
2017/05/29 Python
python爬取亚马逊书籍信息代码分享
2017/12/09 Python
Python实现简易Web爬虫详解
2018/01/03 Python
python3实现公众号每日定时发送日报和图片
2018/02/24 Python
使用Python通过win32 COM实现Word文档的写入与保存方法
2018/05/08 Python
Python闭包执行时值的传递方式实例分析
2018/06/04 Python
python清除函数占用的内存方法
2018/06/25 Python
python几种常用功能实现代码实例
2019/12/25 Python
CSS3教程(1):什么是CSS3
2009/04/02 HTML / CSS
英国户外装备和冒险服装零售商:alloutdoor
2018/01/30 全球购物
2015年安全工作总结范文
2015/04/02 职场文书
一文搞懂如何实现Go 超时控制
2021/03/30 Python