文章分类 | 推荐文章 | 最新文章 | 热点文章 | 最新软件 | 精品软件 | 下载排行 | 推荐下载 | firefox | WPS | 杀毒软件 | Picasa
清风网络
首 页 软件下载 网络学院 数码学院
QQ 电脑入门 游戏 操作系统 图形图像 办公软件 媒体动画 精文荟萃 常用软件 网页编程 技术开发 网络技术 认证考试 网站建设 文章专栏
当前位置:清风网络学院网络编程PHP对PHP程序中的常见漏洞进行攻击
精品推荐
特别推荐
·菜鸟学PHP之Smarty入门
·PHP环境安全配置教程
·PHP入门指导:如何学习PHP?
·Php+Mysql注入专题
·PHP:实现给上传图片加水印的程序代码
·PHP动态网站开发中常用的8个小技巧
·PHP初学者:配置Apache服务器并且设置DNS
·初学PHP指导:php.ini 配置详细选项
·好文分享:PHP入门的学习方法
·急速搭建属于自己的Discuz!6论坛
·PHP入门:初学来看配置文件PHP.INI的中文注释
·php.ini配置,php.ini 中的 php-5.2.0 配置指令详解
·总结:一些PHP学习过程中的心得和经验
·新手入门:JSP初学者必须掌握的语法点
·PHP技巧:PHP脚本编程中的文件系统函数库
·详细讲解PHP编程中分页显示的制作
·成为PHP编程高手应该遵循的三个准则
·谈谈生成静态页面的一些经验
·新手入门:详细解述七个软件开发的原则
·简单的webservice开发例子
热点TOP10
·一个Struts实现分页,增删改查,Tiles,国际化的DEMO
·MyEclipse+struts+Hibernate配置开发
·Windows XP下PHP+MySQL环境搭建
·PHP预定义变量
·简单的webservice开发例子
·80004005 及其它错误消息的疑难解答
·模板用xml的思路
·用PHP实现多级树型菜单
·如何利用PHP和CSS改变网页文字大小
·PHP+MYSQL留言本
·PHP+Access设计留言版实战
·初学者学习PHP开发应该掌握的几段精华代码
·JDBC连接Oracle数据库常见问题及解决方法
·PHP入门指导:如何学习PHP?
·实用:动态网页制作技术PHP的十个应用技巧
·菜鸟学PHP之Smarty入门
·PHP 会话 (Session) 使用入门
·Win2003下APACHE+PHP5+MYSQL4+PHPMYADMIN 的简易安装配置
·优化NFR之一 --MSSQL Hello Buffer Overflow
·Win2000下PHP服务器安装攻略

对PHP程序中的常见漏洞进行攻击

日期:2008年3月20日 作者: 查看:[大字体 中字体 小字体]


?> 

新版本的PHP都会自动把“ 

一个很明显的问题就是确保变量的确来自session,例如,给定上面的代码,如果后续的脚本是下面这样的话: 

<?php 
  if (!empty()) 
   // Grant Access to site here 
?> 

上面的代码假定如果“ 

Session数据一般是保存在文件中(位置是可配置的,一般是“/tmp”),文件名一般是类似“sess_<session id>”的形式,这个文件包含变量名称,变量类型,变量值和一些其它的数据。在多主机系统中,因为文件是以运行Web服务器的用户身份(一般是nobody)保存的,因此恶意的站点拥有者就可以通过创建一个session文件来获得对其它站点的访问,甚至可以检查session文件中的敏感信息。 

Session机制也为攻击者把自己的输入保存在远程系统的文件中提供了另一个方便的地方,对于上面的例子来说,攻击者需要在远程系统放置一个包含PHP代码的文件,如果不能利用文件上载做到的话,他通常会利用session为一个变量按照自己的意愿赋一个值,然后猜测session文件的位置,而他知道文件名是“php<session id>”,所以只需猜测目录,而目录一般就是“/tmp”。 

另外,攻击者可以任意指定“session id”(例如“hello”),然后用这个“session id”创建一个session文件(例如“/tmp/sess_hello”),但是“session id”只能是字母和数字组合。 

[数据类型] 
PHP具有比较松散的数据类型,变量的类型依赖于它们所处的上下文环境。例如:“()返回的结果也不会为真。 

PHP中的数组是关联数组,也就是说,数组的索引是字符串型的。这意味着“”和“”也是不同的。 

开发程序的时候应该仔细地考虑上面的问题,例如,我们不应该在一个地方测试某个变量是否为“0”,而在另外的地方使用empty()来验证。 

[容易出错的函数] 
我们在分析PHP程序中的漏洞时,如果能够拿到源代码的话,那么一份容易出错的函数列表则是我们非常需要的。如果我们能够远程改变这些函数的参数的话,那么我们就很可能发现其中的漏洞。下面是一份比较详细的容易出错的函数列表: 

<PHP代码执行> 
require():读取指定文件的内容并且作为PHP代码解释 
include():同上 
eval():把给定的字符串作为PHP代码执行 
preg_replace():当与“/e”开关一起使用时,替换字符串将被解释为PHP代码 

<命令执行> 
exec():执行指定的命令,返回执行结果的最后一行 
passthru():执行指定命令,返回所有结果到客户浏览器 
``:执行指定命令,返回所有结果到一个数组 
system():同passthru(),但是不处理二进制数据 
popen():执行指定的命令,把输入或输出连接到PHP文件描述符 

<文件泄露> 
fopen():打开文件,并对应一个PHP文件描述符 
readfile():读取文件的内容,然后输出到客户浏览器 
file():把整个文件内容读到一个数组中 

译者注:其实这份列表还不是很全,比如“mail()”等命令也可能执行命令,所以需要自己补充一下。 
[如何增强PHP的安全性] 
我在上面介绍的所有攻击对于缺省安装的PHP 4都可以很好的实现,但是我已经重复了很多次,PHP的配置非常灵活,通过配置一些PHP选项,我们完全可能抵抗其中的一些攻击。下面我按照实现的难度对一些配置进行了分类: 

*低难度 
**中低难度 
***中高难度 
****高难度 

上面的分类只是个人的看法,但是我可以保证,如果你使用了PHP提供的所有选项的话,那么你的PHP将是很安全的,即使是第三方的代码也是如此,因为其中很多功能已经不能使用。 

**** 设置“register_globals”为“off” 
这个选项会禁止PHP为用户输入创建全局变量,也就是说,如果用户提交表单变量“hello”,PHP不会创建“$ hello”,而只会创建“HTTP_GET/POST_VARS['hello']”。这是PHP中一个极其重要的选项,关闭这个选项,会给编程带来很大的不便。 

*** 设置“safe_mode”为“on” 
打开这个选项,会增加如下限制: 
1.    限制哪个命令可以被执行 
2.    限制哪个函数可以被使用 
3.    基于脚本所有权和目标文件所有权的文件访问限制 
4.    禁止文件上载功能 
这对于ISP来说是一个伟大的选项,同时它也能极大地改进PHP的安全性。 

** 设置“open_basedir” 
这个选项可以禁止指定目录之外的文件操作,有效地消除了本地文件或者是远程文件被include()的攻击,但是仍需要注意文件上载和session文件的攻击。 

** 设置“display_errors”为“off”,设置“log_errors”为“on” 
这个选项禁止把错误信息显示在网页中,而是记录到日志文件中,这可以有效的抵制攻击者对目标脚本中函数的探测。 

* 设置“allow_url_fopen”为“off” 

上一页 [1] [2] [3] [4] [5] 下一页 




上一篇:PHP连接MYSQL的两种方法

下一篇:IIS 6 的 PHP 最佳配置方法

对PHP程序中的常见漏洞进行攻击 相关文章:
·全程攻击无线网络WEP加密(二)
·全程攻击无线网络WEP加密(一)
·各种病毒分析及攻击防御手册
·不怕被攻击 Windows系统防黑技巧七招
·黑客攻击与防守
·Windows系统用户摆脱黑客攻击的方法
·避免恶意攻击行为 网络服务器安全维护技巧
·IIS攻击与日志
·多种DDoS攻击技术方法
·[推荐]远程登录攻击
对PHP程序中的常见漏洞进行攻击 相关软件:
·手机炸弹-短信息攻击懒人版
·NTFS数据流攻击教程
·嵌入式木马攻击
·手机短信息攻击程序V1.0
·黑客的攻击手段及用户对策
·盗帅v2.1-SP1攻击程序使用简介
·懒人短消息攻击器
·网页攻击的另类利用
·黑客的攻击手段及用户对策 +PDG绿色迷你阅读器
·SQL注入法攻击

特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
[打印本页] [关闭窗口] 转载请注明来源:http://www.viphot.com
| 帮助(?) | 版权声明 | 友情连接 | 关于我们 | 信息发布
Copyright 2007 www.viphot.com All Rights Reserved. 鄂ICP备05000083号Powered by:vipcn