文件上传漏洞的介绍及利用

介绍:File Upload,即文件上传漏洞,通常是由于对上传文件的类型、内容没有进行严格的过滤、检查,使得攻击者可以通过上传木马(如前面提到的一句话木马)获取服务器的 webshell 权限,因此文件上传漏洞带来的危害常常是毁灭性的,Apache、Tomcat、Nginx 等都曝出过文件上传漏洞。

一、dvwa之low级别文件上传漏洞讲解

我们首先写一个php的一句话木马

 然后在dvwa靶场选择我们的php一句话木马文件进行上传即可

 

 

 接下来打开我们的蚁剑工具,右键选择添加数据,输入我们的连接密码和连接类型进行连接即可

 

 

 在low级别当中完全没有难度可言,重要的是熟悉upload上传漏洞的利用,对蚁剑工具的熟练使用。

二、dvwa之Medium级别文件上传漏洞演示

在中级别当中我们发现对文件类型进行了校验,我们是怎么发现的呢,当然了是通过代码审计(这时候就需要你懂一点PHP代码啦,可以去查看前面的LAMP基础知识里面的PHP内容),我们点击查看源代码即可明白。

 

 

 解决方法有很多,我们这里通过抓包来分析一下,

 

 

我们看到这里有个关于文件类型的描述,我们将其改成 image/jpeg 然后放行数据包即可上传成功。接下来怎么做就不用说啦,参考上一步。

三、dvwa之High级别文件上传漏洞演示

通过对源代码审计我们可以知道加了一些过滤规则。

1.文件名后缀必须是jpeg png jpg其中一个

2.必须是一张有效图片通过函数getimagesize()去判断。

  函数getimagesize()通过文件头去检验,而这个文件头有MIME类型,简单来说就是去检验了MIME类型。

MIME 类型概述:MIME (Multipurpose Internet Mail Extensions) 是描述消息内容类型的因特网标准。MIME 消息能包含文本、图像、音频、视频以及其他应用程序专用的数据。
互动:在浏览器中显示的内容有 HTML、有 XML、有 GIF、还有 Flash ……那么,浏览器是如何区分它们,决定什么内容用什么形式来显示呢?
答案是 MIME Type,也就是该资源的媒体类型。
媒体类型通常是通过 HTTP 协议,由 Web 服务器告知浏览器的,更准确地说,是通过 ContentType 来表示的,例如:Content-Type: text/HTML
在这里要注意区分Concent-Type。Concent-Type是通过文件名决定的。
 
我们这里提供两种解题思路,
第一种:
  我们在一句话木马代码第一行加上 GIF89a 绕过后端函数getimagesize()的校验,当然这里也不能忘记修改数据包当中的Concent-Type和上一个级别一样,然后上传即可。

 

第二种:

  制作图片马

 

 这样就很简单就可以啦。然后上传即可。

 

 接下来的问题就是如何把jpg文件当作php来执行 

1.文件包含,这也被叫做文件包含漏洞 (这道题我们用这个方式)
我们打开dvwa当中文件包含漏洞的页面关卡,然后穿参即可。

 

我们接下来如果想用蚁剑去连接的话,需要一个步骤,那就是蚁剑当中需要填写该网页的cookie,不然的话会提示返回数据为空

 

 然后我们就能连接成功啦,还有一点我们的网址要写 http://49.232.106.183/dvwa-labs/vulnerabilities/fi/?page=file:///var/www/html/dvwa-labs/hackable/uploads/webshell.jpg

2. 通过利用.htaccess文件 (我们这一关无法利用),通过它可以指定文件的解析方式

3. 00截断 00是一个坏字符(注意这种方法只能适用于php版本比较低的情况下)
例如:get方式传参的话 利用a.php%00.jpeg     
   post方式传参的话 利用a.php0x00.jpeg
 
 
 
 

 

posted @ 2022-04-01 16:15  hithub  阅读(1212)  评论(0编辑  收藏  举报