❶ 文件上传漏洞原理和绕过方式
1. 文件上传漏洞概述
文件上传漏洞是Web应用中常见的安全问题。攻击者利用此漏洞可对服务器执行非法操作。这类漏洞通常出现在网站的文件上传功能中,当网站代码没有严格验证上传文件的后缀和类型时,攻击者可能会上传危险文件。一旦恶意文件被传入如PHP的易执行脚本解释器,攻击者便能执行恶意任务,如数据库操纵、服务器文件管理及服务器命令执行等。
2. 文件上传绕过技术
- 客户端JavaScript检查:一种常见的防御手段,通过检查文件后缀是否符合白名单规则来过滤非预期上传。然而,攻击者可以通过修改文件后缀名、利用工具如Burpsuite截断文件后缀来绕过此检查。
- 服务端检测:包括MIME类型检查和后缀名检测。MIME类型检查关注Content-Type的值,后缀名检测结合黑白名单进行。绕过策略可能包括大小写绕过、利用特殊文件名特性或htaccess文件等。
- 目录路径检查:检查上传文件的路径,防止攻击者上传到不应放置的目录。攻击者可能通过对路径进行“0x00”截断或操控上传文件夹参数来绕过。
- 文件内容检测:通过检查文件内容来判断其类型,如检查GIF幻数判断是否为图片文件。绕过可以通过在幻数后添加恶意代码实现。
3. 解析漏洞和绕过方法
- IIS服务器:在处理带有多个扩展名的文件时可能出现解析错误,导致执行非预期文件。
- Apache服务器:解析规则在遇到未知扩展名时会从后向前解析,可被利用绕过限制。
- PHP CGI配置:cgi.fi参数默认启用可能导致解析漏洞。
- Nginx服务器:通过在图片中嵌入PHP代码,结合特定参数利用空字节执行代码。
- Windows系统:不合法的文件名如包含空格或点可能会被系统自动修正,绕过文件名验证。
- Apache配置:特定版本允许上传.htaccess文件,通过修改设置重新指定文件为PHP解释,执行恶意文件。