asp.net - 启用 Web 的文件存储和授予 IIS_IUSRS 删除权限的安全隐患

标签 asp.net security iis file-upload file-permissions

这个问题我已经有很多年了,每次出现这个问题我都会去研究,但始终找不到明确的答案。不知何故,强大的 Internet、MSDN、社区论坛对此要么保持沉默,要么含糊其辞。在成千上万与发展相关的不确定因素中,这是唯一一个难以捉摸的因素。

要点:为了使用户能够在共享托管环境中上传和管理博客文章中使用的图像(和其他文件),我可以考虑使用 SQL Server 二进制数据类型(性能影响),或文件系统。要使用后者,需要为存储目录上的 IIS_IUSRS 角色设置必要的权限:创建/写入、读取和删除。我的问题 - 如果我这样做,安全隐患是什么?有人能以某种方式利用这一点,绕过 ASP.NET 请求管道并在不向相应的 ASP.NET 处理程序(检查权限、验证上传等)发出请求的情况下操纵文件夹内的文件吗?

我开发了几个允许文件上传的系统,这一直困扰着我。现在,希望有人能够让我放心,最好能解释该过程背后的机制。


更新

查看最新答案后(非常感谢),问题的另一种表述方式:

客户端是否有可能以某种方式绕过请求管道并在允许它的目录中创建/删除文件(假设此人知道目录结构)?还是只有处理请求的代码才能做到?任何潜在的漏洞利用?

最佳答案

主要问题是能够上传一个脚本,一个 aspx 页面,在这个目录中包含照片文件,并运行它。

这是一个案例:I've been hacked. Evil aspx file uploaded called AspxSpy. They're still trying. Help me trap them‼

解决方案是在允许上传文件但不允许运行任何 aspx 页面的目录中添加这个额外的 web.config 文件。还要仔细检查以仅允许您允许的扩展名,并且如果他们有机会进行重命名,则不允许更改文件名。

<configuration>
    <system.web>
      <authorization>
        <deny users="*" />
      </authorization>
    </system.web>
</configuration>

此外,在您允许上传文件的目录上,不允许运行任何其他脚本,如简单的 asp、php 或 exe 或任何其他脚本。

一般来说

您的所有页面都有权在服务器上运行和操作许多内容。您现在提供的是在某些目录上写入 的能力,也可以使用一些 aspx 页面。 asp.net 现在有一个额外的权限可以在照片文件夹上写入文件。还要注意这里,你的 asp.net 页面有这个控件,而不是用户。你在那里用你的代码所做的可以写在这个目录上,所以必须小心仔细检查你写的地方并且不允许任何其他目录,不允许用户操作可以写入的目录。

所以这是薄弱环节。能够上传更多可以控制服务器的脚本,至少是该池的 asp.net 用户可以访问的部分。

关于asp.net - 启用 Web 的文件存储和授予 IIS_IUSRS 删除权限的安全隐患,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13169589/

相关文章:

javascript - 如何在用户进入 asp.net 站点一段时间后生成弹出窗口

jquery - dotnetbrowser只能在iis上运行吗?

security - 处理 Web 应用程序的身份验证

wcf - 为什么 WCF 将并发连接数限制为 5?

c# - 对于在控制台应用程序中使用 Microsoft.Web.Administration,是否需要任何额外的引用资料?

asp.net - 当输出数据相当大时,为什么我的 WCF Web 服务会结束响应?

asp.net - 如何创建 ASP.NET Recaptcha Control 自定义模板

签署 jar 后 Java 小程序仍然出现安全错误

security - Delphi:安全/加密从互联网下载更新

wcf - 如何让 WCF 网站保持在线?