客户端验证(前端)
Pass-01JS校验
漏洞描述:
利用前端JS对上传文件后缀进行校验,后端没进行检测
利用方法:
浏览器禁用js
burp抓包先上传白名单文件,再用burp修改上传文件后缀
服务端验证(后端)
Pass-02文件类型校验(MIME校验)
漏洞描述:
只检测content-type字段导致的漏洞。(后端利用PHP的全局数组$_FILES()获取上传文件信息)
利用方法:
修改content-type字段的值为图片格式。
常用content-type字段:
image/jpeg:jpg图片格式
image/png:png图片格式
image/gif:gif图片格式
text/plain:纯文本格式
text/xml:XML格式
text/html:HTML格式
Pass-03文件名后缀校验(黑名单绕过)
漏洞描述:使用黑名单的方式限制文件上传类型,后端利用$_FILES()和strrchr()获取文件名后缀。被限制文件类型:.asp.aspx.php.jsp
利用方法:
因为是利用黑名单来限制文件上传类型,找漏网之鱼绕过
例如:
特殊文件名绕过:.php3.php4.php5.phtml.phtm.phps.phpt.php
Pass-04文件名后缀校验(配置文件解析控制)
漏洞描述:
依然是使用黑名单限制,但几乎过滤了所有有问题的后缀名,但可以允许上传.htaccess文件。
htaccess文件是Apache服务器中的一个配置文件,它负责相关目录下的网页配置。通过htaccess文件,可以实现:网页重定向、自定义错误页面、改变文件扩展名、允许/阻止特定的用户或者目录的访问、禁止目录列表、配置默认文档等功能
利用方法:
上传.htaccess解析文件,利用其配置,将白名单文件的类型解析成php文件类型。
上传.htaccess文件内容如下:(将服务器上的test.jpg文件解析成php文件,这里文件可以自由配置)
FilesMatch"test.jpg"SetHandlerapplication/x-