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的cms
Dec 19 PHP
php防攻击代码升级版
Dec 29 PHP
一个PHP针对数字的加密解密类
Mar 20 PHP
PHP获取网页标题的3种实现方法代码实例
Apr 11 PHP
深入理解PHP中的global
Aug 19 PHP
PHP获取表单所有复选框的值的方法
Aug 28 PHP
thinkphp模板赋值与替换实例简述
Nov 24 PHP
PHP+jQuery+Ajax实现分页效果 jPaginate插件的应用
Oct 09 PHP
深入剖析浏览器退出之后php还会继续执行么
May 17 PHP
ThinkPHP实现静态缓存和动态缓存示例代码
May 02 PHP
实例讲解PHP表单验证功能
Feb 15 PHP
解决在Laravel 中处理OPTIONS请求的问题
Oct 11 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
Discuz Uchome ajaxpost小技巧
2011/01/04 PHP
PHP文件操作实现代码分享
2011/09/01 PHP
PHP连接MongoDB示例代码
2012/09/06 PHP
迁移PHP版本到PHP7
2015/02/06 PHP
PHP使用gmdate实现将一个UNIX 时间格式化成GMT文本的方法
2015/03/19 PHP
thinkPHP统计排行与分页显示功能示例
2016/12/02 PHP
php使用preg_match()函数验证ip地址的方法
2017/01/07 PHP
ThinkPHP框架实现的MySQL数据库备份功能示例
2018/05/24 PHP
laravel实现简单用户权限的示例代码
2019/05/28 PHP
php慢查询日志和错误日志使用详解
2021/02/27 PHP
JS+CSS实现Div弹出窗口同时背景变暗的方法
2015/03/04 Javascript
基于jQuery实现响应式圆形图片轮播特效
2015/11/25 Javascript
详解javascript中原始数据类型Null和Undefined
2015/12/17 Javascript
js实现带农历和八字等信息的日历特效
2016/05/16 Javascript
jQuery实现磁力图片跟随效果完整示例
2016/09/16 Javascript
Javascript之深入浅出prototype
2017/02/06 Javascript
微信小程序tabBar底部导航中文注解api详解
2017/08/16 Javascript
vue中利用simplemde实现markdown编辑器(增加图片上传功能)
2019/04/29 Javascript
koa2服务端使用jwt进行鉴权及路由权限分发的流程分析
2019/07/22 Javascript
js的Object.assign用法示例分析
2020/03/05 Javascript
[45:14]Optic vs VP 2018国际邀请赛淘汰赛BO3 第二场 8.24
2018/08/25 DOTA
python通过urllib2爬网页上种子下载示例
2014/02/24 Python
node.js获取参数的常用方法(总结)
2017/05/29 Python
python标记语句块使用方法总结
2019/08/05 Python
python super的使用方法及实例详解
2019/09/25 Python
解决tensorflow添加ptb库的问题
2020/02/10 Python
win7上tensorflow2.2.0安装成功 引用DLL load failed时找不到指定模块 tensorflow has no attribute xxx 解决方法
2020/05/20 Python
CSS3弹性布局内容对齐(justify-content)属性使用详解
2017/07/31 HTML / CSS
软件设计的目标是什么
2016/12/04 面试题
2014信息技术专业毕业生自我评价
2014/01/17 职场文书
综治宣传月活动总结
2014/04/28 职场文书
2015年办公室文员工作总结
2015/04/24 职场文书
2015年党员个人工作总结
2015/05/13 职场文书
迎新晚会主持词开场白
2015/05/28 职场文书
MySQL分区表实现按月份归类
2021/11/01 MySQL