不受限制的文件上传问题本身并不是一种攻击,而是一种常见的情况或状态,允许攻击者轻松访问应用程序和网络资源。你可以认为这有点像在寒冷的环境中穿着湿衣服走动。虽然这样做本身不一定会使你生病,但它会降低你的抵抗力,使任何机会主义病毒都会轻易地压倒你的身体防御系统。
在网络安全方面,攻击者可以迅速利用任何被允许支持不受限制的文件上传的应用程序或程序。而其结果可能是毁灭性的。聪明的攻击者可以利用他们不受限制的访问权来上传恶意文件,设置脚本来窃取证书,或利用应用程序本身的权限对网络发起更深入的攻击。即使是一个相对不成熟的攻击者也可以利用这种不受限制的访问来进行拒绝服务攻击,或使一个应用程序崩溃。
值得庆幸的是,有相当多的方法来征服不受限制的文件上传问题,这将阻止潜在的攻击者在他们的轨道。为此,我们将讨论不受限制的文件上传的三个关键方面。
- 它们是如何工作的
- 为什么它们如此危险
- 你如何能把防御措施放在适当的位置来阻止他们。
攻击者如何利用不受限制的文件上传?
有很多原因可以解释为什么网站要允许公众上传文件。也许一家公司正在招聘人员,并希望允许他们上传他们的简历作为申请过程的一部分。银行可能鼓励客户在家里填写重要的文件,如申请贷款或新账户时。旅游或社会媒体网站可能会邀请用户上传他们的照片,与他人分享。
有很多允许文件上传的合理理由。默认情况下,大多数新的应用程序可能会允许任何类型的文件上传,没有限制。当潜在的攻击者注意到对这些上传没有任何限制时,麻烦就开始了。
对上传没有限制,使网站受到三种类型的攻击。从最不复杂的开始,一个恶意的用户可以简单地上传巨大的文件,如包含数百GB信息的压缩档案。除了扼杀带宽,这还会使分配给应用程序的存储区域超载。
在这个臭名昭著的阶梯上,接下来是一个上传恶意文件的用户,如病毒,甚至像勒索软件这样更邪恶的东西。这有点像那种古老的迷信,即必须专门邀请吸血鬼进入你的家。如果你挂出一个牌子,说任何人都可以自由进入,这就像有不受限制的文件上传。你不再控制通过你的门进来的是什么,你也许应该想到,不是每一个访客,或文件,都是良性的。他们中的一些人可能是怪物。
最后,一个熟练的攻击者可以利用不受限制的上传来获得进入网络的立足点,进行更深入的攻击。因为对某人可以上传的内容没有限制,攻击者可以通过该过程发送自己的网络外壳。此后,他们可以向自己的shell发送命令,而这些命令将在服务器上以与应用程序相同的权限级别执行。
为什么拥有不受限制的文件访问权是如此危险?
虽然部署一个不受限制的文件访问的应用程序不会立即出现危险,但它基本上就像在你的网络安全防御中打开了一个洞,邀请别人来攻击你的组织。迟早,有人会做出反应。
在最基本的层面上,攻击者甚至不需要很多技能就能造成破坏。简单地将极其庞大的文件压缩并上传,可能就足以拒绝为有效用户提供服务。随着时间的推移,它甚至可以使应用程序或整个网站崩溃,这取决于应用程序是如何编程和联网的。
不受限制的文件访问也可能在网络防火墙和其他保护措施中打开一个漏洞。如果你为攻击者创造了一条直接向你的核心网络上传恶意软件的路径,那么你是否有扫描仪查看你收到的电子邮件或你的员工网络浏览活动就不重要了。恶意软件可能会使应用程序或其运行的服务器崩溃,尽管这可能是最好的结果。在最坏的情况下,一个真正的恶意程序,如勒索软件,可以利用被攻击的服务器扩散到整个网络。
更熟练的攻击者在利用不受限制的文件访问的应用程序时可能不会那么明显。相反,他们可以利用这个漏洞来破坏应用程序,并利用这个漏洞深入到网络中,缓慢地移动并试图避免被发现。这可以通过上传一个网络外壳或其他.exe类型的文件来实现,然后在它登陆后直接向其发送命令。用户通过他们的shell运行的任何东西通常会被服务器执行,使用为托管它的应用程序设置的任何权限级别。对服务器来说,这些命令是来自应用程序的,不可能被进一步检查或审查。
所有这些都使得不受限制的文件访问漏洞成为你的网络上最危险的漏洞之一。这可能不是一个是否会造成问题的问题,而是一个时间问题。
如何消除不受限制的文件访问漏洞?
那么,你如何解决不受限制的文件访问问题?最简单的方法是对可以上传的文件类型添加一个或若干个限制。如果你愿意,这些限制可以传达给用户,例如,告诉他们网站只接受Word或文本文件,如果是图片共享网站,只接受jpgs或gif文件。在后端,你将需要创建一个可接受的文件扩展名白名单,然后拒绝其他一切。对文件名的最大长度也应加以限制。如果一个文件的名称中有特殊字符,这可能表明试图触发一个可执行的命令,那么它也同样应该被拒绝。
除了文件类型和命名规则外,你也要限制每个文件的最大尺寸。最大尺寸应该是合理的,并且适合于应用程序预期收集的文件类型。这可能意味着Word文件的上限为10兆字节左右,而图形文件的上限要大一些,也许是50兆字节左右。也可以设置最小文件大小的规则,但前提是预期文件的大小范围是众所周知的,如果用户正在填写和上传一个特定的表格,就可能是这种情况。
攻击者仍然可能找到一个巧妙的方法,偷偷地将一个外壳或其他潜在的恶意程序带过文件类型和大小的限制。为了弥补这一点,收集的文件应始终存储在一个没有执行权限的私人目录中。为了增加安全性,文件可以被系统重命名为一系列随机字符。这将防止来自网络外的未经授权的用户搜索他们上传文件的位置,这可能使他们对你的网络有一些侦察。然而,如果你这样做,你可能需要建立和维护一个表格,将随机文件名与它们的原始指定联系起来。
最后,任何通过上传到达网络的东西都应该被组织用于这些任务的任何防御程序扫描为恶意软件和病毒。这可能无法捕获所有的东西,但却是一个重要的安全层,可以用来检测多达90%或更多试图通过文件上传进入的最常见的恶意文件。
限制不受限制的文件上传问题
一旦在后端设置了几层安全防护,不受限制的文件上传问题就不再是一个问题。你基本上是通过对你的文件上传进行限制来消除这个问题,因此它们不再是无限制的了。只有好的文件才被允许进入,而所有的吸血鬼和恶意软件都被排除在外。
要进一步阅读,你可以看一下OWASP不受限制的文件上传预防小抄,其中概述了在网络上允许这种情况时的一些最常见的问题。你还可以通过Secure Code Warrior 平台的免费展示来检验你新发现的防御知识,该平台可以培训网络安全团队成为最终的网络战士。要了解更多关于击败这个漏洞以及其他威胁的流氓画廊,请访问Secure Code Warrior 博客。
你认为你现在已经准备好应对这个漏洞了吗?前往战场,测试你的技能。