结合靶场upload-lab对文件上传进一步理解。
- 客户端验证:一般采用JS代码过滤
- 服务端验证:
- MIME类型验证:验证Contetnt-Type内的文件类型。
-
- 黑名单验证:这种过滤一般通过找漏网之鱼来进行绕过。
例如php脚本中的PHP3,PHP4,phtml等只要配置允许就能被成功解析。
但是默认这个配置没有开启。
Asp中可用的扩展名: asa cer aspx
Jsp中可用扩展名:jspx jspf
-
- 超强黑名单绕过的解决方案:利用.htaccess配置文件配置可解析的扩展名
上面的配置文件可以将任意文件解析成为php脚本。
其次还可以尝试其他黑名单的漏网之鱼,例如扩展名未进行去空格处理,可以通过添加空格绕过。
又若源码未进行大小写处理,可以通过大小写绕过。
还有利用windows特性,会自动去掉后缀名中最后的”.”,可在后缀名中加”.”绕过。
Windows特性中的文件流绕过。(具体原理不明)
-
- 白名单验证
1、可控路径上传:path路径可控,达到00截断的条件(php版本小于5.3.4,php的magic_quotes_gpc为OFF状态)。
-
- 白名单,只能上传图片文件等。这种情况下就需要进行漏洞的组合利用,先上传图片木马之后加上WEB容器解析漏洞,文件包含漏洞等组合getshell。