环境下载:https://github.com/c0ny1/upload-labs/releases
mind-map.png

1. 前端检验上传类型

通过抓取数据包修改 filename 进行绕过
image.png

2. 校验 MIME 类型

修改 Content-Type 为图片的类型
image.png

3. 特殊的后缀名

需要修改配置来支持解析,实战可能不解析。
image.png
image.png

4. 上传 .htaccess 绕过

上传的文件名没有重命名,可以利用 .htaccess 来绕过
image.png
image.png

5. 后缀名大小写绕过

image.png

6. 后缀名+空格绕过

image.png

7. 后缀名 + 点. 绕过

image.png
image.png

8. Windows 特性绕过 ::$DATA

image.png

9. Apache 解析漏洞

在Apache 2.0.x <= 2.0.59,Apache 2.2.x <= 2.2.17,Apache 2.2.2 <= 2.2.8中Apache 解析文件的规则是从右到左开始判断解析,如果后缀名为不可识别文件解析,就再往左判断。
image.png
image.png

10. 后缀名双写绕过

代码中会把 php 替换为空,所以可以利用双写进行绕过
image.png

11. GET 请求的 %00截断绕过

1、PHP版本小于5.3.4
2、magic_quotes_gpc设置Off
image.png

12. POST 请求的 %00 截断

输入 %00 然后 URL 解码
image.png

13 - 14 - 15. 文件包含图片马

需要图片头,可以直接使用 GIF89a
image.png
进行文件包含
image.png

16. 图片二次渲染

上传图片会被渲染,默认copy的图片马会把 phpinfo 追加到图片后面,通过上传图片再把图片下载回来,发现 phpinfo 被渲染掉了,所以需要在 phpinfo 插入到没被渲染的位置,同时不能破坏图片。建议使用 GIF 文件
xx.png
image.png

17. 条件竞争

设置 null payload 进行条件竞争
image.png
image.png

18. 条件竞争

通过条件竞争让文件没有重命名,然后配置解析漏洞或者文件包含
image.png
image.png

19. CVE-2017-15715

https://www.leavesongs.com/PENETRATION/apache-cve-2017-15715-vulnerability.html
image.png
在 windows 没复现成功
image.png

20. 利用数组

image.png
image.png