文件上传漏洞指用户上传了一个可执行的脚本文件,并通过此脚本文件获得了执行服务器端命令的能力
1.上传的文件是web脚本语言,服务器的web容器解释并执行了用户上传的脚本 导致代码执行
2.上传文件是flash的策略文件 crossdomain.xml,黑客用以控制Flash在该域下的行为
3.上传文件是病毒,病毒文件,黑客用以诱骗用户或者管理员下载执行
4.上传文件是钓鱼图片或为包含了脚本的图片,在某些版本的浏览器中会被作为脚本执行,被用于钓鱼和欺诈
在大多数情况下,文件上传漏洞一般都指"上传Web脚本能够被服务器解析"的问题,也是通常所说的webshell的问题,要完成这个攻击,要满足如下几个条件:
1.上传的文件能够被web容器解释执行,所以文件上传后所在目录要是web容器所覆盖到的路径
2.用户能够从web上访问这个文件。如果文件上传了,但用户无法通过web访问或者无法使得web容器解释这个脚本,那也不能称为漏洞
3.用户上传的文件若被安全检查,格式化,图片压缩等功能改变了内容,则也会导致攻击不成功
只要WEB容器无法解析该目录下的文件,即使攻击者上传了脚本文件,服务器本身也不会受到影响,在实际应用中,很大大型网站的上传应用,文件上传后会放到独立的存储上做静态文件处理,一方面方便使用缓存加速,降低性能损耗,另一方面也杜绝了脚本执行的可能
判断文件类型的时候的时候,可以结合使用MIME Type,后缀检查方式,文件类型检查中,推荐使用白名单方式,黑名单不可靠,对于图片的处理,可以使用压缩文件或者resize函数,在处理图片的同时破坏图片中包含的HTML代码
文件如果要执行代码,则需要用户能够访问到这个文件,如果应用使用随机数改写文件名和路径,将极大的增加攻击的成本,与此同时,像shell.php.rar.rar 这种文件,或者是crossdomain.xml这种文件,都将因为文件名被改写而无法成功实施
原文始发于微信公众号(系统安全运维):文件上传漏洞及解决方法
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
点赞
https://cn-sec.com/archives/604959.html
复制链接
复制链接
-
左青龙
- 微信扫一扫
-
-
右白虎
- 微信扫一扫
-
评论