前提:无文件解析的安全问题上,格式解析是一对一的(没有解析漏洞,上传的是图片,解析的也是图片;除非有漏洞可以将图片解析城php)
换句话说只有解析错误配置或后缀解析漏洞时才能实现格式差异解析。
原生态:在未知目标源码情况下,只知道有漏洞,然后进行测试(漏洞与源码无关)
检测方向:前端验证、后端验证(前端js、后端php)
通过文件头判断文件后缀,通过文件类型判断文件后缀
拓展类:中间件
直接上传一个.htaccess文件,文件内容如下:
AppType application/x-httpd-php .png
.htaccess借助这个配置让.png的命名文件当作php的类型执行。
安全架构类:
1.黑名单
没有做递归处理,值过滤了一次,没有多次过滤。
00截断(条件:魔术开关、php版本5.34以下),现在很难遇到
/var/www/html/upload/x.php%00
逻辑权限--条件竞争(错误:先上传,后判断;正确:先判断,后上传):只需要在删除文件之前访问到这个文件,然后这个文件就会重新创建一个其他文件,我们只需要连接这个新创建的文件。
函数缺陷:如果上传名字攻击者自身可控
shell.php/
文件上传漏洞目前出现的地方哦都是比较隐秘的网站,如果时代码问题就是逻辑漏洞,与代码无关就是通用漏洞。
中间件:apache、aginx
编辑器:ueditor
由于编辑器漏洞较少,实战碰到机会不大,主要理解漏洞产生的思路参考:https://cloud.tencent.com/developer/article/2200036
参考:https://blog.csdn.net/qq_45813980/article/details/126866682
cms
常见的防御措施
解析方案:
1.执行权限
就是类似在目录禁止执行(就算是上传了也没有任何用处,所以上不上都无所谓)
2.解码还原
将上传的文件先把图片进行base64编码,把文件当作字节流进行编码,再把文件进行还原(取出来)
上传图片->一串base64数据
显示图片->解码数据还原
好处就是能够将图片更好的打开。如果上传的是一个后门代码不是图片代码,解析的时候就会解析错误
只要用到这个技术,不管文件是否上传成功,都没办法进行成功连接后门
存储方案:
1.分站存储
类似站库分离,上传的图片直接放到其他地方去了
2.oss对象
类似开了个网盘,如果打开这个文件,只能提供下载,不提供执行
只有目录权限可以绕过,其他都是无解。目录权限绕过只有换个目录上传试试,其余直接跑路
上传之后需要可以代码执行,如果不能执行就等于没用。