php中文件上传的安全问题
2015-01-24信息快讯网
可以读/etc/passwd!
这段。。
[文件上载]
PHP自动支持基于RFC 1867的文件上载,我们看下面的例子:
<FORM METHOD="POST" ENCTYPE="multipart/form-data">
<INPUT TYPE="FILE" NAME="hello">
<INPUT TYPE="HIDDEN" NAME="MAX_FILE_SIZE" VALUE="10240">
<INPUT TYPE="SUBMIT">
</FORM>
上面的代码让用户从本地机器选择一个文件,当点击提交后,文件就会被上载到服务器。这显然是很有用的功能,但是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”(通常会导致内容暴露)。这种攻击可以用于暴露任何敏感文件的内容。
windows下PHP APACHE MYSQ完整配置
PHP Ajax实现页面无刷新发表评论
PHP+AJAX实现无刷新注册(带用户名实时检测)
新手学PHP之数据库操作详解及乱码解决!
默默小谈PHP&MYSQL分页原理及实现
PHP文件上传实例详解!!!
使用adodb lite解决问题
PHP 的几个配置文件函数
Php部分常见问题总结第1/2页
source.php查看源文件
ajax缓存问题解决途径
PHP中,文件上传
PHP安全配置
PHP文件下载类
php字符串截取问题
PHP 应用程序的安全 -- 不能违反的四条安全规则
phpmyadmin的#1251问题
通过对服务器端特性的配置加强php的安全
PHPShop存在多个安全漏洞
编写PHP的安全策略
多文件上载系统完整版
ftp类(example.php)
Oracle Faq(Oracle的字符集问题)
PHP概述.
PHP安装问题
PHP的FTP学习(二)[转自奥索]
在PHP中利用XML技术构造远程服务(上)
递归列出所有文件和目录
用PHP实现文件上传
Mysql 4.1 Windows 下升级问题
PHP和JAVA的XML-RPC中文问题解决办法
解决RHAS3中Apache2的PHP上传文件大小的限制
用PHP生成PDF文件 with FPDF
最令PHP初学者头痛的十四个问题
删除无限级目录与文件代码共享
上海松江萤火虫仲夏夜因安全隐患被叫停
44路公交撞高架立柱司机未安全掌控车辆负全责
新发现漏洞将影响95%Android设备安全
电梯“吃人”引安全热议 现“电梯症候群”
上海市民对用水和食品安全满意度有所提高