文章目录
(一)文件上传漏洞简介
- 文件长传漏洞是指攻击者上传了一个可执行的文件到服务器并执行。这里上传的文件可以是木马、病毒、恶意脚本或这Webshell等
(二)客户端检测绕过
- 一般都是在网页上写一段 javascript 脚本,校验上传文件的后缀名,有白名单形式也有黑名单形式。判断方式:在浏览加载文件,但还未点击上传按钮时便弹出对话框,内容如:只允许上传.jpg/.jpeg/.png后缀名的文件,而此时并没有发送数据包。
绕过方法:
- 通过禁用浏览器的中JS脚本;
- 删除对js验证脚本的调用;
- 修改脚本JS,将自定义的文件类型后缀添加进去;
- 将上传的恶意代码文件类型改为允许上传的类型,例如将shell.asp改为shell.jpg上传,在上传时使用Burp拦截数据,将其中的扩展名改为php,就可以绕过客户端验证;
(三)服务端检测绕过
3.1、黑、白名单扩展名过滤
-
黑名单:找到Web开发人员忽略的扩展名,如: asa 和 cer 之类的;
-
可能存在大小写绕过漏洞,比如:phP 之类;
-
在win系统下,如果文件名是以".“或者空格结尾,系统会自动去除”.“与空格,可以绕过黑名单验证,如: 上传”asp." or "asp "的扩展名程序;
-
白名单:比黑名单拥有更好的防御机制,但不能完全防御,存在Web容器文件解析漏洞,是可以顺利通过验证。
3.2、MIME 验证绕过
MIME的作用:web客户端使用 MIME 来说明希望接收到的数据种类,web服务器使用 MIME 来说明发送数据的种类,它是服务器用