All articles| All Pictures| All Softwares| All Video| Go home page| Write articles| Upload pictures

Reading number is top 10 articles
详细解析Apache服务器实现的用户验证_php资料_编程技术
动态网页PHP编程中八种常见的文件操作方式_[PHP教程]
Sql,server2005中的SQLCMD工具使用_[SQL,Server教程]
如何利用PHP会话显示出当前在线的用户_[PHP教程]
利用.NET绘图技术制作水晶按钮控件_.net资料_编程技术
XMLHTTP 对象及其方法简介_[XML教程]
初学来看:动态网页制作技术PHP的变量类型_php资料_编程技术
ASP.NET从零起步设计网站全过程(12)_[Asp.Net教程]
营销型网站具体优化流程_优化技巧_seo学堂
解决WIN2003安装sqlserver2000失败_[SQL Server教程]
Reading number is top 10 pictures
鸡也看毛片
Female model behind the bitterness, often being overcharged1
Sora aoi on twitter1
29 the belle stars after bath figure3
The real super beauty1
2012 national geographic daily picture6
The real super beauty10
Ashlynn Brooke show proud chest measurement2
a pure sister
Parking technology is great, that give you the keys can't stolen
Download software ranking
Unix video tutorial20
Sora aoi's film--cangkong_Blue.Sky
圣殿祭司的ASP.NET.2.0.开发详解-使用C#
Unix video tutorial15
Tram sex maniac 2 (H) rar bag13
Boxer Classic video3
网页特效实例大全
Unix video tutorial2
终极变速大师Speeder3.26
Tram sex maniac 2 (H) rar bag5
aaa published in(发表于) 2013/12/24 5:52:33 Edit(编辑)
动态网页PHP程序中文件上传的安全问题_php资料_编程技术

动态网页PHP程序中文件上传的安全问题_php资料_编程技术

动态网页PHP程序中文件上传的安全问题_php资料_编程技术-你的首页-uuhomepage.com

PHP自动支持基于RFC 1867的文件上载,我们看下面的例子:







上面的代码让用户从本地机器选择一个文件,当点击提交后,文件就会被上载到服务器。这显然是很有用的功能,但是PHP的响应方式使这项功能变的不安全。当PHP第一次接到这种请求,甚至在它开始解析被调用的PHP代码之前,它会先接受远程用户的文件,检查文件的长度是否超过“$MAX_FILE_SIZE variable”定义的值,如果通过这些测试的话,文件就会被存在本地的一个临时目录中。

因此,攻击者可以发送任意文件给运行PHP的主机,在PHP程序还没有决定是否接受文件上载时,文件已经被存在服务器上了。

这里我就不讨论利用文件上载来对服务器进行DOS攻击的可能性了。

让我们考虑一下处理文件上载的PHP程序,正如我们上面说的,文件被接收并且存在服务器上(位置是在配置文件中指定的,一般是/tmp),扩展名一般是随机的,类似“phpxXuoXG”的形式。PHP程序需要上载文件的信息以便处理它,这可以通过两种方式,一种方式是在PHP 3中已经使用的,另一种是在我们对以前的方法提出安全公告后引入的。

但是,我们可以肯定的说,问题还是存在的,大多数PHP程序还是使用老的方式来处理上载文件。PHP设置了四个全局变量来描述上载文件,比如说上面的例子:

$hello = Filename on local machine (e.g "/tmp/phpxXuoXG")
$hello_size = Size in bytes of file (e.g 1024)
$hello_name = The original name of the file on the remote system (e.g "c:\\temp\\hello.txt")
$hello_type = Mime type of uploaded file (e.g "text/plain")

然后PHP程序开始处理根据“$hello”指定的文件,问题在于“$hello”不一定是一个PHP设置的变量,任何远程用户都可以指定它。如果我们使用下面的方式:

http://vulnhost/vuln.php?hello=/etc/passwd&hello_size=10240&hello_type=text/plain&hello_name=hello.txt

就导致了下面的PHP全局变量(当然POST方式也可以(甚至是Cookie)):

$hello = "/etc/passwd"
$hello_size = 10240
$hello_type = "text/plain"
$hello_name = "hello.txt"

上面的表单数据正好满足了PHP程序所期望的变量,但是这时PHP程序不再处理上载的文件,而是处理“/etc/passwd”(通常会导致内容暴露)。这种攻击可以用于暴露任何敏感文件的内容。





添加到del.icio.us 添加到新浪ViVi 添加到百度搜藏 添加到POCO网摘 添加到天天网摘365Key 添加到和讯网摘 添加到天极网摘 添加到黑米书签 添加到QQ书签 添加到雅虎收藏 添加到奇客发现 diigo it 添加到饭否 添加到飞豆订阅 添加到抓虾收藏 添加到鲜果订阅 digg it 貼到funP 添加到有道阅读 Live Favorites 添加到Newsvine 打印本页 用Email发送本页 在Facebook上分享


Disclaimer Privacy Policy About us Site Map

If you have any requirements, please contact webmaster。(如果有什么要求,请联系站长)
Copyright ©2011-
uuhomepage.com, Inc. All rights reserved.