- 前端绕过
- 服务端验证绕过
- 编辑器漏洞
- 配合解析漏洞突破上传
通常一个文件以HTTP协议进行上传时,将以POST请求发送WEB服务器,WEB服务器接收到请求并同意后,用户与WEB服务器将建立连接,并传输data。
常见上传检测规则
A. 客户端javascript检测(通常为检测文件拓展名)
B. 服务端MIME类型检测(检测Content-Type内容)
C. 服务端目录路径检测(检测跟path参数相关的内容)
D. 服务端文件名拓展名检测(检测跟文件estension相关的内容)
E. 服务器文件内容检测(检测内容是否合法或含有恶意代码)
客户端检测
客户端检测通常在上传页面里含有专门检测文件上传的JavaScript代码。最常见的就是检测拓展名是否合法。
判断方式:
在浏览加载文件,但还未点击上传按钮时便弹出对话框,内容如:只允许上传.jpg/.jpeg/.png后缀名的文件,而此时并没有发送数据包。
- 利用burpswite之类的代理工具。
- 修改webshell后缀类型为允许上传类型。
- 抓包拦截将其后缀名改为对应服务器可以解析的后缀名。
绕过办法
服务端MIME检测服务端MIME类型检测也就是检测Content-Type的内容。下面是一段测试模拟代码:
我们将request包的Content-Type修改:
图片类型: