安全测试 - 如何测试文件上传功能以进行恶意上传

时间:2016-12-03 04:27:06

标签: security file-upload

需要测试文件上传功能以确保安全性。
目的是避免/阻止上传任何类型的恶意文件。

谢谢!

2 个答案:

答案 0 :(得分:1)

文件上传/下载通常会出现多个漏洞。

上传文件中的恶意软件

任何上传的文件都应该经过病毒检查。当@CandiedOrange回复时,您可以为此目的使用EICAR测试。

路径注入

上传文件的文件名与请求中的任何其他字段的用户输入类型相同,攻击者可以自由选择文件名。作为测试人员,您可以发送类似“../filename”的内容,尝试将其保存到非预期的位置或覆盖其他文件。

文件类型

如果文件类型限制仅在客户端上,那对安全性显然毫无用处。但即使文件扩展名在服务器端受到限制,也就是说只允许使用.pdf,您仍然可以尝试上传something.pdf.php或something.pdf.exe或类似内容来绕过过滤器。最好是应用程序使用一些真实的内容发现来查明上传的文件是否实际上是允许的文件类型。

内容嗅探

某些浏览器具有这种非常棒的(非)功能,当下载文件时,浏览器会查看其内容并根据内容显示它,而不管从服务器收到的内容类型标头。这意味着即使上传仅限于.pdf,攻击者可能会在名为“something.pdf”的文件中上传带有javascript的html文件,当其他人下载该文件时,浏览器可能会运行javascript,从而使应用程序成为可能易受XSS攻击。为防止这种情况,应用程序应发送X-Content-Type-Options: nosniff响应标头。

上传的文件大小

如果攻击者可以上传太多或太大的文件,他可以通过填满服务器上的空间来实现拒绝服务。

无限制下载(直接对象引用)

应用程序可能会将上传的文件保存到Web服务器可直接访问的位置。在这种情况下,下载链接看起来与/uploads/file.pdf类似。这只适用于公共文件,访问控制不能强制执行,任何有链接的人都可以下载文件。

缺乏访问控制

如果所有登录用户都无法使用文件,则应用程序必须执行授权以确定登录的用户是否可以实际下载他请求的文件。此授权步骤丢失或有缺陷的次数太多,导致应用程序能够将错误的文件提供给用户,巧妙地修改请求。

所以底线是,文件上传/下载漏洞不仅仅是病毒检查上传的文件。

答案 1 :(得分:0)

如果您的安全性是基于签名的,请考虑上传EICAR test file。它应该触发你的保护,如果没有,并以某种方式执行,它所做的就是打印“EICAR-STANDARD-ANTIVIRUS-TEST-FILE!”并停止。