一、文件上传漏洞定义:
文件上传漏洞指的是用户通过文件上传功能模块向服务器上传文件时,如果服务端没有对上传文件进行严格的验证和过滤,导致用户可以越过权限上传可执行的动态脚本文件。攻击者可以通过上传恶意文件如木马或Webshell,经过web容器解析,对服务器进行攻击造成损害。
二、漏洞产生原因:
- 没有对上传文件进行严格安全校验
- 服务器配置不当
- 过滤不严格
- 没有对上传文件进行限制
- 中间件存在解析漏洞
- 绕过本地文件上传限制
- 文件路径截断
三、漏洞危害:
- 上传包含web脚本语言的文件,经过服务器的web容器解析执行,可能导致远程代码执行。
- 上传Flash策略文件如crossdomain.xml,黑客可控制Flash在该域下的行为,类似情况可用于控制其他策略文件。
- 上传病毒或木马文件,诱导用户或管理员下载执行,进行挖矿等恶意活动。
- 上传钓鱼图片或包含脚本的图片,用于进行钓鱼和欺诈活动。
- 利用文件上传漏洞的不常见方法,通过上传一个包含PHP脚本的合法文本文件,在利用本地文件包含漏洞执行此脚本。
三、文件上传流程:
客户端通过表单上传文件到服务器。
- 服务器接收上传信息并将文件存储为临时文件。
- 服务器对上传的文件进行安全性处理,通过PHP代码指导进行文件安全性检查。
- 对文件进行重命名。
- 将文件转存为正式文件。
客户端通过表单上传文件到服务器。
- 服务器接收上传信息并将文件存储在服务器固定路径。
- 对上传的文件进行检测,合格则保留,不合格则将文件删除,并对上传者进行提示。