文件上传概要
Web应用程序通常会有文件上传功能,例如论坛的附件上传,上传图片/头像/Zip压缩包等,只要被Web应用程序允许上传文件,就可能存在文件上传漏洞。在不对被上传的文件进行限制/过滤或者限制被绕过,从而上传恶意文件、可执行脚本到服务器上,进一步导致服务器沦陷
如何确认Web应用程序是否存在上传漏洞呢?例如论坛由PHP开发,用户可上传头像,也就是图片文件,但是没有对图片格式进行验证,比如能上传.php文件,这就是一个上传漏洞,上传的文件被当做脚本成功解析,就代表有上传漏洞。
文件上传漏洞成因
-
服务器配置不当
在不需要上传文件的情况下可导致任意文件上传,参考HTTP请求方法PUT -
本地文件上传被绕过
只在客户端浏览器上做了文件限制而没有在远程的服务器上做限制,只需要修改上传时发送的数据包就可以轻松绕过上传限制a.抓包看,禁用JS插件(这个插件用作文件上传本地验证),现上传一个恶意文件,如果是本地限制,执行过滤的就是浏览器的js插件,禁用后就能上传恶意文件
b.如果是服务器限制,先把恶意文件传给服务器,然后服务器再返回过滤结果,这个时候单单禁用本地的js插件没什么用 -
过滤不严或被绕过
有些网站使用上传黑名单过滤掉一些可执行文件脚本的后缀,但是黑名单不全或者被绕过,也可导致恶意文件上传。如果使用白名单,仅允许名