#学习前必读:
1 、课前一定要明白:
无文件解析安全问题上,格式解析是一对一的(不能 jpg 解析 php )
换句话来说有解析错误配置或后缀解析漏洞时才能实现格式差异解析
2 、文件上传安全指的是攻击者通过利用上传实现后门的写入连接后门进行权限控制的安
全问题,对于如何确保这类安全问题,一般会从原生态功能中的文件内容,文件后缀,文
件类型等方面判断,但是漏洞可能不仅在本身的代码验证逻辑中出现安全问题,也会在语
言版本,语言函数,中间件,引用的第三方编辑器等存在缺陷地方配合利用。另外文件上
传也有多个存储逻辑,不同的文件存储方案也会给攻击者带来不一样的挑战!
# 测试环境安装参考:
https://github.com/ffffffff0x/f8x
https://github.com/fuzzdb-project/fuzzdb
https://github.com/sqlsec/upload-labs-docker
0 、下载上述资源
1 、 docker 安装
f8x -d 或 f8x -docker
2 、进入项目文件夹
cd upload-labs-docker
3 、一键部署运行
docker-compose up -d
#upload-labs-docker 知识点:
1 、前端 JS
如何判断是否是前端验证呢?
首先抓包监听,如果上传文件的时候还没有抓取到数据包,但是浏览器就提示文件类型不
正确的话,那么这个多半就是前端校验了
2 、 .htaccess
AddType application/x-httpd-php .png(将png类型解析成php类型)
先上传.htaccess 在上传png类型
3 、 MIME 类型
Content-Type : image/png
4 、文件头判断
GIF89a
5 、黑名单 - 过滤不严(大小写 双写php 00截断(魔术开关要关 版本小于5.34) PHP5之类)
6.条件竞争
先上传 后判断逻辑(就是在文件上传一刹那 访问)
7.二次渲染
如果放大图片 还要图片清晰 就会进行二次渲染 这就会改动代码 使用010editor
8.函数缺陷
对于move_upload_file 函数 上传文件用shell.php/.就能上传