美文网首页
文件上传漏洞

文件上传漏洞

作者: suntwo | 来源:发表于2019-05-04 16:45 被阅读0次

为什么文件上传存在漏洞

  • 上传文件的时候,如果服务器脚本语言,未对上传的文件进行严格的验证和过滤,就容易造成上传任意文件,包括上传脚本文件。

  • 如果是正常的PHP文件,对服务器则没有任何危害。

  • PHP可以像其他的编程语言一样,可以查看目录下的文件,查看文件中的吗内容,可以执行系统命令等。

  • 上传文件的时候,如果服务器端脚本语言,未对上传的文件进行严格的验证和过滤,就有可能上传恶意的PHP文件,从而控制整个网站,甚至是服务器。这个恶意的PHP文件,又被称为WebShell

文件上传漏洞的实例:

这是我在DVWA里面截取的关于文件上传的后端代码让我们来分析一下

low级别的文件上传 image image.gif

我们对这里的后端代码进行分析

$target_path = DVWA_WEB_PAGE_TO_ROOT . "hackable/uploads/"; 表示上传的路径

basename( $_FILES[ 'uploaded' ][ 'name' ] ); 表示获取上传的文件的名字

move_uploaded_file( _FILES[ 'uploaded' ][ 'tmp_name' ],target_path ) //表示将文件存储到新的taeget_path目录下

这个实例没有对我们上传的文件进行任何过滤,因此我们可以很容易的进行攻击

$_file['uploaded']['tmp_name']表示上传文件临时存放的路径

这个并没有过滤条件,因此我们可以直接进行上传我们想要上传的文件创建一个php文件,并加入<?php eval($_POST['KEY']);?>

这个表示一句话木马,KEY表示自己创建的密码,我们将这个文件上传上去。

如图:

image image.gif

这时我们便成功的连接上了网站,我们可以查看任何内容。

medium级别的上传漏洞

image image.gif

这个代码和上面的类似,不同之处在于对上传的文件进行了过滤
if( ( uploaded_type == "image/jpeg" ||uploaded_type == "image/png" ) &&( $uploaded_size < 100000 ) )

这句便是过滤的语句,限制了上传h的f类型sa和大小,我们可以针对不同的版本来进行绕过

我们可以看到$_file数组,这个是php中自定义的超全局变量,这个变量是针对上传文件的,这是一个二维数组,第一【】内表示上传的文件名字这个文件的对象,第二个【】表示一些这个文件的属性.

$_FILE常见的属性有:

  • $_FILES["file"]["name"] - 被上传文件的名称
  • $_FILES["file"]["type"] - 被上传文件的类型
  • $_FILES["file"]["size"] - 被上传文件的大小,以字节计
  • $_FILES["file"]["tmp_name"] - 存储在服务器的文件的临时副本的名称
  • $_FILES["file"]["error"] - 由文件上传导致的错误代码
我们这个题目便是利用到了$_FILE['name']['type']这个属性,表示被上传的文件类型,这个便很容易绕过,因此这个属性的值是从content-type这个字段得到的,我们可以修改这个字段的值来进行绕过。 image image.gif

接下来是high级别的

image image.gif

这里对我们上传的文件类型,文件大小和文件的内容进行了判断,getimagesize()函数便是对图片的内容进行判断是否为图片,

还有便是这里是通过截取我们上传文件的后缀名进行判断文件类型的因此不能像上面那个通过改content-type字段来绕过。

首先 我的php 版本<5.3.4,因此可以进行%00截断,

copy 1.php/a+2.png/b c.png 在命令行下执行这个命令便可以生成c.png文件 这个文件会包含图片的信息,因此会绕过getimagesize()函数的检测,并且在这个文件的后面还会有我们的一句话木马,因此我们再加上%00截断使上传的文件名为php,当我们访问这个文件时便会当作php执行。

上面我们对后端是怎么处理我们上传的文件有了一些了解了,接下来该是我们怎么利用这些存在漏洞的学习了,下面我将列举出一些我们常见的漏洞,并举一些实例来加深对这些知识的了解。

iis漏洞

使用iis5-iis6的服务器存在漏洞,这个版本的服务器通常以asp语言作为后端语言

  1. 目录的解析漏洞:服务器会将 .asp结尾的目录中的文件解析为asp文件

    原理: 服务器默认会把.asp,.asp目录下的文件都解析成asp文件

    eg:www.baidu.com/aa.asp/bb.txt当我们访问bb.txt时实际上服务器会将bb.txt当作asp语言来解析

  2. 文件解析

    形式:www.xxx.com/xx.asp;.jpg

    原理:服务器默认不解析;号后面的内容,因此xx.asp;.jpg便被解析成asp文件了。

    因此又是我们可以添加;来进行文件类型的绕过

  3. IIS6.0 默认的可执行文件除了asp还包含这三种 :

    /test.asa

    /test.cer

    /test.cdx

apache解析漏洞

漏洞的原理:

Apache 解析文件的规则是从右到左开始判断解析,如果后缀名为不可识别文件解析,就再往左判断

eg:aa.php.aa 但解析这个文件时apache不知道.aa是什么类型便会继续向左解析,直到解析到apache认识的文件类型,因此这个便会被解析成php文件

还有一些其他的服务器漏洞:http://blog.51cto.com/wt7315/1865580


相关文章

  • 2018-08-10 web渗透(完)

    今天主要学习的是文件上传漏洞和xss漏洞 文件上传漏洞 【漏洞描述】 文件上传漏洞是指网络攻击者上传了一个可执行的...

  • 文件上传(upload-labs详细全解)

    文件上传漏洞 常见的漏洞分类服务器配置不当导致文件上传开源编辑器存在上传漏洞本地文件上传限制可以上传被绕过服务器端...

  • 文件上传漏洞

    文件上传漏洞 权限 漏洞分类 利用条件 漏洞挖掘 常见可执行文件后缀

  • 文件上传漏洞

    文件上传漏洞原理文件上传漏洞是指网络攻击者上传了一个可执行的文件到服务器并执行。这里上传的文件可以是木马,病毒,恶...

  • 文件上传漏洞 学习笔记

    什么是文件上传漏洞? 文件上传漏洞是指由于程序员在对用户文件上传部分的控制不足或者处理缺陷,而导致的用户可以越过其...

  • web安全(五)上传漏洞(一)

    只要web应用程序允许上传文件就有可能存在文件上传漏洞。那么如何确认web应用程序是否存在上传漏洞?比如:我...

  • 文件上传漏洞

    文件上传漏洞概述文件上传漏洞是指用户上传了一个可执行的脚本文件,并通过此脚本文件获得了执行服务端命令的能力。文件上...

  • 文件上传漏洞

    文件上传漏洞 文件上传漏洞是开发者在开发功能时没有做足够充分的验证(包括前端和后端),导致用户可以上传恶意文件,比...

  • 网络安全文件上传漏洞常见的预防方法!

    在网络安全行业中,常见的漏洞有很多,其中包括SQL注入漏洞、文件上传漏洞、目录遍历漏洞、文件包含漏洞、命令执行漏洞...

  • 中间件漏洞总结报告

    中间件漏洞总结报告 一、 IIS解析漏洞 首先一般文件解析漏洞用于各种上传漏洞中,在文件上传的地方一般会限制用户上...

网友评论

      本文标题:文件上传漏洞

      本文链接:https://www.haomeiwen.com/subject/cmxfoqtx.html