网站常见漏洞解析:文件上传漏洞

任意文件上传漏洞

文件上传漏洞(File Upload Attack)是由于文件上传功能实现代码没有严格限制用户上传的文件后缀以及文件类型,导致允许攻击者向某个可通过 Web 访问的目录上传任意PHP文件,并能够将这些文件传递给 PHP 解释器,就可以在远程服务器上执行任意PHP脚本。

一套web应用程序,一般都会提供文件上传的功能,方便来访者上传一些文件。

下面是一个简单的文件上传表单

<form action="upload.php" method="post" enctype="multipart/form-data" name="form1">

<input type="file" name="file1" /><br />

<input type="submit" value="上传文件" />

<input type="hidden" name="MAX_FILE_SIZE" value="1024" />

</form>

php的配置文件php.ini,其中选项upload_max_filesize指定允许上传的文件大小,默认是2M

$_FILES数组变量

PHP使用变量$_FILES来上传文件,$_FILES是一个数组。

如果上传test.txt,那么$_FILES数组的内容为:

$FILES

Array

{

 [file] => Array

  {

    [name] => test.txt                            //文件名称

    [type] => text/plain                          //MIME类型

    [tmp_name] => /tmp/php5D.tmp                   //临时文件

    [error] => 0                                //错误信息

    [size] => 536                               //文件大小,单位字节

  }

}

如果上传文件按钮的name属性值为file

<input type="file" name="file" />

那么使用$_FILES['file']['name']来获得客户端上传文件名称,不包含路径。使用$_FILES['file']['tmp_name']来获得服务端保存上传文件的临时文件路径

存放上传文件的文件夹

PHP不会直接将上传文件放到网站根目录中,而是保存为一个临时文件,名称就是$_FILES['file']['tmp_name']的值,开发者必须把这个临时文件复制到存放的网站文件夹中。

$_FILES['file']['tmp_name']的值是由PHP设置的,与文件原始名称不一样,开发者必须使用$_FILES['file']['name']来取得上传文件的原始名称。

上传文件时的错误信息 $_FILES['file']['error']变量用来保存上传文件时的错误信息,它的值如下:

时间: 2024-10-30 08:06:38

网站常见漏洞解析:文件上传漏洞的相关文章

扫描扫出文件上传漏洞,求大神帮忙解决

问题描述 文件上传漏洞中危漏洞URLhttp://www.xxxx.com参数表单名称:loginForm,提交URL:http://www.xxxx.com详情原始:GET/../../../xxxMain.action?reload=0&siteName=xxxHTTP/1.1User-Agent:Mozilla/4.0(compatible;MSIE8.0;WindowsNT5.1;Trident/4.0;CIBA;.NETCLR2.0.50727;.NETCLR3.0.04506.30)

php文件上传漏洞简单分析

下面是一个简单的文件上传表单  代码如下 复制代码 <form action="upload.php" method="post" enctype="multipart/form-data" name="form1">   <input type="file" name="file1" /><br />   <input type="s

DjangoUEditor 1.9.143任意文件上传漏洞依然存在 黑客可以上传木马 但作者已经停止更新了

DjangoUeditor是将百度开发的富文本编辑器Ueditor移植到Django中的组件,它的使用率还是相当高的.经笔者测试,即便是现在可以下载使用的1.9.143版本中,依然存在着这个漏洞. 虽然这个漏洞距今已经快两年了,但DjangoUeditor于2015年1月17号后,再也没有更新过,见github上作者的说明: DjangoUeditor是什么 Django是Python世界最有影响力的web框架.DjangoUeditor是一款可以在Django应用中集成百度Ueditor HT

文件上传漏洞在惠信中的应用_漏洞研究

近来大家为dvbbs的文件上传漏洞兴奋不已,想想在其他的系统里面能不能用的上呢?我就以惠信新闻系统来抛砖引玉吧!  惠信新闻系统3.1 windows2000+sp4  先看这句代码.admin_uploadfilesave.asp  ...............  Server.mappath(formPath&file.FileName)  ............................  保存时用路径+文件名+后缀名,那我们可以用dvbbs上的漏洞了,只不过我们改的是文件名(因

你不知道的文件上传漏洞php代码分析

漏洞描述 开发中文件上传功能很常见,作为开发者,在完成功能的基础上我们一般也要做好安全防护. 文件处理一般包含两项功能,用户上传和展示文件,如上传头像. 文件上传攻击示例 upload.php <?php $uploaddir = 'uploads/'; $uploadfile = $uploaddir . basename($_FILES['userfile']['name']); if (move_uploaded_file($_FILES['userfile']['tmp_name'],

关于动态网站设计中的文件上传问题

问题描述 可以同时上传多个文件,上传时可设置文件名.文件类别等参数,其中文件类别动态从数据库中查询得到.上传后在服务器上某目录下保存,并且在服务器的数据库中保存这些文件所属的类别.文件名等信息.做文件上传用的是JSPSmartUpload,但是怎么把上传的数据记录到access数据库中呀..新手,求指教! 解决方案 解决方案二:可以用JDBC-ODBC桥接的方式,虽然效率低又不跨平台,但对新手来说也足够了解决方案三:引用1楼waynexuan的回复: 可以用JDBC-ODBC桥接的方式,虽然效率

ASP的chr(0)文件上传漏洞原理和解决方法介绍_应用技巧

我们在用ASP开发文件上传功能的时候,为了防止用户上传木马程序,常常会限制一些文件的上传,常用的方法是判断一下上传文件的扩展名是否符合规定,可以用right字符串函数取出上传文件的文件名的后四位,这样很容易就能判断了,但是这里面有一个漏洞,非常危险,就是chr(0)漏洞,详情请接着往下看. 一.首先解释下什么是chr(0)? 在ASP中可以用chr()函数调用ASCII码,其中chr(0)表示调用的是一个结束字符,简单的说当一个字符串中包含chr(0)字符时,只能输出chr(0)前面的字符,ch

ASP的chr(0)文件上传漏洞原理和解决方法介绍

我们在用ASP开发文件上传功能的时候,为了防止用户上传木马程序,常常会限制一些文件的上传,常用的方法是判断一下上传文件的扩展名是否符合规定,可以用right字符串函数取出上传文件的文件名的后四位,这样很容易就能判断了,但是这里面有一个漏洞,非常危险,就是chr(0)漏洞,详情请接着往下看. 一.首先解释下什么是chr(0)? 在ASP中可以用chr()函数调用ASCII码,其中chr(0)表示调用的是一个结束字符,简单的说当一个字符串中包含chr(0)字符时,只能输出chr(0)前面的字符,ch

网站中的隐形炸弹eWebEditor文件上传漏洞补丁_安全相关

打开Upload.ASP文件 找到下面代码: 复制代码 代码如下: <%     sAllowExt = Replace(UCase(sAllowExt), "ASP", "") %> 改为: 复制代码 代码如下: <%     sAllowExt = UCase(sAllowExt)     Do While InStr(sAllowExt, "ASP") Or InStr(sAllowExt, "CER"