文件上传是个经典问题
推荐靶场:upload-labs
我们可以在这个靶场中进行文件上传绕过的练习
先说webshell
,我们写个一句话木马先
这里留个大哥若干年前的总结 webshell一句话木马大全
接下来我们聊聊文件上传的漏洞
一.啥防护没有
直接一句话木马上传就完事了
二.前端文件后缀判断
打开开发者工具,提交文件,看是否存在网络请求
不存在则说明是前端判断,直接把js
禁用了就完事了
三.MIME判断
使用burp
抓包,将Content-Type: application/xxx
修改为image/jpeg
、image/png
、image/gif
任意允许类型上传即可。
四.黑名单上传
4.1 简单的黑名单上传
黑名单的检测不严谨,比如只是限制.asp,.aspx,.php..jsp
这种
直接把木马文件后缀改一下, php、php2、php3、php4、php5、php6、php7、pht、phtm、phtml
这些文件后缀在某些环境都会被当作php解析
4.2 如果上述文件都被限制了?
还有大小写呢,Php,PHP,PHp
等等
4.3 如果后台校验规则已经添加了转小写
搬出.htaccess
.htaccess
内容如下
1 | AddType application/x-httpd-php .png |
主要作用是将png
文件识别为php
执行
先将php
文件修改后缀为png
1 | GIF89a |
上传png
,再上传.htaccess
,御剑链接png
即可
五.include包含
考虑伪协议
1 | ?file=php://filter/convert.base64-encode/resource=flag.php |
1 | ?a=data://text/plain,I want flag |