需要测试文件上传功能以确保安全。
目的是防止/停止任何类型的恶意文件被上传。
谢谢!!
需要测试文件上传功能以确保安全。
目的是防止/停止任何类型的恶意文件被上传。
谢谢!!
通常在文件上传/下载中会出现多种漏洞。
任何上传的文件都应进行病毒检查。如@CandiedOrange所述,您可以使用EICAR测试来完成此操作。
上传文件的文件名与请求中的任何其他字段一样是用户输入的一种类型,攻击者可以自由选择文件名。作为测试人员,您可以尝试发送类似“../filename”的内容,以尝试将其保存到不受意图的位置或覆盖其他文件。
如果文件类型限制仅在客户端上,则对安全性显然没有用处。但即使服务器端限制文件扩展名,例如只允许.pdf文件,您仍然可以尝试上传something.pdf.php或something.pdf.exe等文件以绕过过滤器。最好的方法是,该应用程序使用一些真正的内容发现功能,以查找上传的文件是否实际上是允许的文件类型。
某些浏览器具有这种很棒(并非总是)的功能,即在下载文件时,浏览器会查看其内容,并根据内容显示它,而不管从服务器收到的内容类型头。这意味着即使上传限制为.pdf格式,攻击者也可能上传带有javascript的html文件,文件名为“something.pdf”,当某人下载该文件时,浏览器可能运行javascript,从而使应用程序容易受到XSS攻击。为防止此情况发生,应用程序应发送 X-Content-Type-Options:nosniff
响应头。
如果攻击者可以上传太多或太大的文件,他可能会填满服务器上的空间,从而导致拒绝服务。
应用程序可能会将上传的文件保存到Web服务器可直接访问的位置。这种情况下,下载链接看起来类似于/uploads/file.pdf
。这仅适用于公共文件,无法强制执行访问控制,任何拥有链接的人都可以下载文件。
如果文件对所有已登录的用户都不可用,则应用程序必须执行授权以决定正在登录的用户是否实际上可以下载他正在请求的文件。太多次,此授权步骤缺失或存在缺陷,导致应用程序能够向巧妙修改请求的用户提供错误的文件。
因此,最重要的一点是,文件上传/下载漏洞远不止于对上传的文件进行病毒检查。
你可以在网络防火墙上激活恶意软件保护功能。Snort是保护网站的好选择。
你还可以在应用程序代码中添加输入过滤器,以便检查上传的文件是否有恶意软件。