原理:
没有严格限制文件后缀名和文件类型,导致可以上传任意PHP文件,并且将它们传递给PHP解释器,就可以在远程服务器上执行任意PHP脚本。
文件上传校验方法:
- 客户端javasscript校验(一般只校验后缀名)
- 服务端校验
-文件头content-type字段校验
-文件内容头校验(GIF89a)
-后缀名黑名单校验
-后缀名白名单校验
-自定义正则校验 - WAF设备校验
文件上传绕过方式:
1.客户端绕过
判断方式:不上传文件就点击上传按钮时,弹出报错如:只允许.jpg/.jpeg/.png格式的文件,而此时并没有发送数据包。
绕过方式:
服务端绕过方式还不太熟悉,具体可参考该链接的内容
修复建议:
在服务器端也要校验文件格式,对上传文件大小做限制。
网友评论