DVWA通关攻略之文件上传

1.file upload 文件上传

文件上传功能是大部分WEB应用的常用功能,网站允许用户自行上传头像、照片、一些服务类网站需要用户上传证明材料的电子档、电商类网站允许用户上传图片展示商品情况等。然而,看似不起眼的文件上传功能如果没有做好安全防护措施,就存在巨大的安全风险。
当用户在在文件上传的功能模块处上传文件时,如果WEB应用在文件上传过程中没有对文件的安全性进行有效的校验,攻击者可以通过上传WEBshell等恶意文件对服务器进行攻击,这种情况下认为系统存在文件上传漏洞,根据上传后文件存放位置不同,上传后对文件操作不用,可能会导致不一样的结构,包括完全控制系统,覆盖服务器文件等等。
文件上传漏洞与SQL注入或XSS相比,其风险更大。文件上传漏洞的利用分两步,第一需要能上传恶意文件,第二,恶意文件需要被触发,通过服务端自动运行触发或者攻击者配合其他漏洞手动触发。

2.实验演示

在DVWA页面左侧选择File Upload。
目标是通过文件上传漏洞执行任意一个PHP函数,例如phpinfo()、system()。
在这里插入图片描述

2.1.low

DVWA Security设置为low,即开发者没有采取任何保护措施,没有核对上传文件内容,完全依靠信任。
查看源码

发现是正常的文件上传功能,没有任何过滤,直接保存上传文件,显示了上传文件保存位置hackable/uploads/。
新建一个文件poc.php。内容是

<?php phpinfo(); ?>

选择poc.php,然后上传。
在这里插入图片描述

上传成功,而且显示了上传文件位置,访问它。
http://127.0.0.1/DVWA/vulnerabilities/upload/…/…/hackable/uploads/poc.php
在这里插入图片描述

成功上传并运行phpinfo();

2.2.medium

DVWA Security设置为Medium,开发者在客户端过滤了一些文件类型,但可以绕过。
在这里插入图片描述

通过文件类型限定只能上传图片,限制了大小100000B。
把low中的文件poc.php改为poc.png。
启动burp,然后上传poc.png,抓包
在这里插入图片描述

在burp中把poc.png改为poc.php。放包。
在这里插入图片描述

成功上传,访问
http://127.0.0.1/DVWA/vulnerabilities/upload/…/…/hackable/uploads/poc.php
成功。

2.3.high

DVWA Security设置为High,客户端上传文件后,服务端将会重新设置请求中每个上传图片大小。
在这里插入图片描述

后缀限制只能上传图片,大小10000B,strtolower()函数将无论是大写或小写的后缀名全改为小写,以防大小写绕过,并且getimagesize() 函数用于获取图像大小及相关信息,所以这里再用之前的php文件后缀名改为jpg或png就不可行了,不过也可以利用这个函数的漏洞进行绕过,既然对文件的开头内容进行了检测并且通过二进制识别是否为图像,那么就可以利用文件头欺骗,来让getimagesize()函数检测无效。
这里就用最简便的GIF的文件头,在一句话木马前加上GIF的文件头标识,新建poc.png文件内容如下。
GIF89a

<?php phpinfo(); ?>

成功上传。
在这里插入图片描述

通过文件包含访问成功。
http://127.0.0.1/DVWA/vulnerabilities/fi/?page=file:///var/www/html/DVWA/hackable/uploads/poc.png
在这里插入图片描述

除此之外,也可以制作图片马然后上传,然后用文件包含进行解析。
首先准备一张图片,注意以上图像大小限制。
在这里插入图片描述

然后准备poc.php文件,内容如下

<?php phpinfo(); ?>

在kali下运行
cat poc1.jpeg poc.php > poc2.jpeg
获得恶意图片poc2.jpeg。把恶意图片上传,上传成功后。
通过URL直接访问图片http://127.0.0.1/DVWA/vulnerabilities/upload/…/…/hackable/uploads/poc2.jpeg
在这里插入图片描述

成功访问到上传的恶意文件,但是phpinfo()没有触发。
通过文件包含访问,成功触发。
http://127.0.0.1/DVWA/vulnerabilities/fi/?page=file:///var/www/html/DVWA/hackable/uploads/poc2.jpeg
在这里插入图片描述

2.4.impossible

DVWA Security设置为Impossible Level。这个级别这将检查到目前为止所有级别的所有内容,以及重新编码图像。这将创建一个新图像,从而剥离任何“非图像”代码(包括元数据)。
在这里插入图片描述

可以看到,Impossible级别的代码对上传文件进行了重命名(为md5值,导致%00截断无法绕过过滤规则),加入Anti-CSRF token防护CSRF攻击,同时对文件的内容作了严格的检查,导致攻击者无法上传含有恶意脚本的文件。

3.防御措施

文件上传漏洞在web安全里面算是比较常见且危害较大的漏洞,可加强文件后缀名黑名单的范围;对上传文件的名字进行随机修改;上传文件的临时目录和保存目录不允许执行权限等。
等等

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值