我知道有很多关于这个话题的帖子。但这些帖子通常会谈到限制文件类型和大小等。因此,not满足我的需要,因为我的系统没有任何限制。
假设我们有一个web应用程序,它可以接受登录用户的上传。这些用户通过Active进行身份验证。不允许匿名用户。
用户可以将任何类型的文件上载到系统。然后用户可以预览通过我们的多用途查看器上传的文件。现在我们支持一些基本的文件类型,如图片,音乐,视频,pdf文件和办公室文件。我通过检查字典中的可查看类型来决定可查看类型,如果该类型不存在,则不会预览,而是直接下载。
我对我所面临的安全风险感到好奇,因此我将尝试详细说明我的系统。
在文件保存程序方面,我有两种不同的系统:
对于这两个应用程序,预览策略是相同的。
所有文件都来自一个操作方法,该方法只能在身份验证时才能访问。并且允许对上传的文件进行逻辑路径遍历。
非office文件返回给客户端,并显示在img、video和embed html标记中。
另一方面,Office文件首先通过Microsoft的互操作库执行,然后转换为pdf,然后返回到客户端,并再次显示为常规pdf。
我想知道,通过这些过程,我是否在服务器端危及安全?我知道用户可以上传恶意文件,但是在文件的写入或读取过程中,用户是否会对我的系统造成伤害?
发布于 2017-01-23 13:33:42
通常,网络黑客的常规路径可以是一种快速总结的方式,比如:
在你的系统里,第三点是免费的!我不是说你会被黑。但是有了这样一个系统,如果前面的步骤都完成了,你就会让事情变得简单一些。
记住,只有一个弱点和一切都是可能的。当然,最危险的是直接的命令注入。如果没有出现ok,但可能在利用其他漏洞之后,可以在系统中启动某种命令,例如通过SQL注入。根据系统、数据库和版本,可以从数据库执行系统命令。
所以,提防一切!XSS注入,SQL注入,命令注入,CSRF,RFI等。
当然,检查所有组件(web服务器、内核、操作系统等)的版本。如果您使用一个已知漏洞的组件,即使在应用程序端进行了良好的开发,您也可能会被黑客攻击。
发布于 2017-01-23 14:02:48
在服务器透视图中,您允许其他人在没有(大量)验证的情况下直接将内容放入文件系统。数据库存储比较安全,因为二进制数据不是直接可执行的。然而,使用操作系统的文件系统直接存储文件具有更好的性能。
如果文件存储在文件存储中,目标黑客可能是将巧尽心思构建的文件上载到服务器上,然后以某种方式触发服务器来处理它(无论是xml、zip、exe等)。
至少,您应该更改包含用户上载文件的文件夹的权限,使其不可执行。我将更进一步,以编程方式将所有文件扩展名替换为类似于.exe_、.pdf_的文件扩展名。毕竟,您实际上不必以上传文件的方式存储文件,只需将数据显示在应用程序逻辑中即可。改变文件扩展名可能会破坏任何文件类型关联或自动触发机制。
https://security.stackexchange.com/questions/149154
复制相似问题