1 文件上传漏洞概述
- 概述:文件上传是WEB应用必备功能之一,如上传头像、上传固件与共享文件、上传脚本更新网站等,如果服务器配置不当或者没有进行足够的过滤,WEB用户就可以上传任意文件,包括恶意脚本文件、EXE程序等,这就造成了文件上传漏洞。
- 区分上传到哪:
- 上传文件:往往是将文件向服务器目录写入;
- 提交数据:像注册用户或留言等,往往是向数据库中写入。
- 成因:
- 服务器配置不当;
- Web应用开放了文件上传功能,但是对上传文件没有进行足够的限制;
- 程序开发部署时,没有考虑到系统特性、验证和过滤不严格而导致限制被绕过。
- 条件:
- Web用户可访问。Web服务器要开启文件上传功能,并且上传API接口对外“开放”。
- Web用户对目标目录具有可写权限甚至具有执行权限,一般情况下,Web目录都有执行权限。
- 要向完美利用文件上传漏洞,就是上传的文件可以执行,也就是说Web服务器可以解析上传的脚本,无论脚本以什么形式存在。
- 无视上述条件的情况是服务器配置不当,开启了PUT方法。
- 危害:文件上传漏洞最直接的威胁就是上传任意文件,包括恶意脚本、程序等。
- 如果Web服务器所保存上传文件的可写目录具有执行权限,那么就可以直接上传后门文件,导致网站沦陷。
- 如果攻击者通过其他漏洞进行提权操作,拿到系统管理权限,那么直接导致服务器沦陷,同服务器下的其他网站无一幸免,均会被攻击者控制。
2 文件上传漏洞攻防类型
- 代码层次:
- 检查文件上传路径。(避免被0x00截断、IIS6.0文件夹解析漏洞、目录遍历)
- 文件扩展名检测。(避免服务器以非图片的文件格式解析文件)
- 文件MIME验证。(比如GIF图片MIME为image/gif,CSS文件的MIME为text/css)
- 文件内容检测。(避免图片马)
- 图片二次渲染。(最变态的文件上传漏洞防御方式)
- 文件重命名。(利用随机字符串或时间戳等方式进行命名,防止攻击者得到WebShell的路径)
- 管理层次:
- 部署WAF防火墙。
- 正确配置服务器请求类型。(禁止使用PUT请求方法)
- 及时更新系统、中间件、脚本、数据库、CMS或框架的漏洞补丁。(避免解析漏洞)
|