文件上传
成因
- 对于上传文件的后缀名(扩展名)没有做较为严格的限制
- 对于上传文件的MIMETYPE 没有做检查
- 权限上没有控制对于上传的文件的文件权限,(尤其是对于shebang类型的文件)
- 对于web server对于上传文件或者指定目录的行为没有做限制
客户端校验
-
前段js验证
- 可通过审计修改js代码或burp改包绕过
服务器校验
-
content-type字段校验
- 将Content-Type修改为image/gif,或者其他允许的类型
- 删除整行
- 删除掉ontent-Type: image/jpeg只留下c,将.php加c后面即可,但是要注意,双引号要跟着c.php
- 将Content-Type修改为content-Type
- 将 Content-Type: application/octet-stream 冒号后面 增加一个空格
-
文件头校验
- 将文件头修改为可允许上传文件类型的文件头
-
检查扩展名
-
黑名单策略
-
列表名绕过
- 查找黑名单中的漏网之鱼,比如asa,cer,cer,ashx,asa,cer,cdx,htr,
-
大小写绕过
- 比如aSp,pHp等
-
能被解析的后缀名:jsp,jspx,jspf,asp,asa,cer,aspx,ashx,php,php ,php3,php4,exe,exee
-
上传.htaccess文件
-
通过.htaccess 文件调用 php 的解析器去解析一个文件名只要包含”cimer”这个字符串的任意文件。一个自定义的.htaccess 文件可以以各种各样的去绕过很多上传验证机制。(配合黑名单检测)
-
1.建立.htaccess 文件,内容如下:<FilesMatch
-
-
-
-