执行通过公共文件夹中的文件上载上载的脚本

时间:2015-09-22 14:46:53

标签: security asp.net-mvc-4 iis

我们必须修复系统中的一些安全漏洞,其中一项是:通过文件上传控制禁用上传脚本/ exe的执行。

我们有excel上传工具。让我们假设黑客将.exe更改为.xls并上传它(有办法阻止它,但暂时忽略它)。还假设

  1. 上传文件夹位于IIS中安装网站的pubilc目录中。 OR
  2. 有人可以通过指定黑客知道的某个api端点的完整文件路径来访问该文件
  3. 现在假设黑客可以通过上述方式访问exe或脚本,黑客是否有可能以某种方式运行该脚本/ exe,从而可能对站点所在的服务器造成伤害托管?

    我不是真正的安全专家,因此无法想办法如何做到这一点?黑客如何在服务器上远程运行exe / script,因为他们没有对服务器的任何访问权。

2 个答案:

答案 0 :(得分:2)

您应该做的一件事就是从运行脚本中删除IIS处理程序权限,否则任何人都可以上传" .asp"或者" .aspx"或任何其他脚本引擎文件然后通过请求它来执行它。一种简单的测试方法就是创建一个" test.asp"文件包含"<%= Now()>"如果它返回日期,那么任何人都可以上传脚本并在您的服务器中运行它们。

在IIS 7+中禁用它的方法是在父目录中添加配置文件并编辑处理程序的权限,例如假设一个名为" public"您可以删除以下web.config来禁用它:

<configuration>
    <location path="public">
        <system.webServer>
            <handlers accessPolicy="Read" />
        </system.webServer>
    </location>
</configuration>

您可以测试它应该不再执行该文件而是阻止它。如果您想允许下载它们,那么您需要配置静态文件处理程序(和请求过滤)来处理所有内容,但请确保您只为该文件夹执行此操作,因为您不想要人们下载你的源代码。

答案 1 :(得分:1)

运行脚本需要直接或通过利用网站代码中的一些错误(类似于SQL注入)远程访问服务器。这里的风险主要在于托管恶意软件,特别是如果您允许其他用户下载用户上载。虽然将恶意软件放到计算机上并不像将可执行文件重命名为其他文件类型那样简单(例如,它仍然必须作为可执行文件而不是Excel电子表格运行才能运行),但是可以嵌入各种类型的文件中的恶意软件,使得打开该文件的行为导致恶意软件的执行。从这个意义上讲,您实际上无法一眼就知道文件是否是恶意软件。它可能看起来像Excel文件甚至在Excel中正确打开,但仍然破坏了破坏。唯一安全的方法是使用良好的反恶意软件应用程序扫描所有用户上传的文件。

然而,就远程运行某些内容而言,运行脚本所需的服务器访问将为您的上传表单提供更好的恶作剧途径。因此,任何能够管理此类访问权限的人都不会试图通过您的上传表单利用您,任何在没有访问权限的情况下上传恶意内容的人都无法做任何事情。