授予 ApplicationPoolIdentity 对 Web 应用程序文件夹中的文件夹的写入权限是否(不)安全?

Is it (in)secure to give the ApplicationPoolIdentity write access to a folder inside your web application folder?

最近我们实现了一项功能,可以在我们的 App_Themes 文件夹中动态生成一个 LESS 文件。这是在应用程序启动时完成的。

这需要我们授予@ApplicationPoolIdentity@对App_Themes文件夹的写入权限。

但是,我们的系统管理员不希望我们授予@ApplicationPoolIdentity@ 写入权限。出于安全原因。

这样做不安全吗?有哪些安全风险?

如果您的应用程序、ASP.NET 或 IIS 本身存在任何远程代码执行漏洞,任何通过您的应用程序或 Web 服务器破坏您的系统的人都可能会收到命令 shell,并且登录为例如DefaultAppPool 在您的服务器上。

如果有一个文件夹的写入权限,那么攻击者可以自己写入这个文件夹。

例如,他们可以在您的站点 example.com/App_Themes/index.html 上托管他们自己的内容,或者他们可以上传允许将权限升级到管理员权限的漏洞。在后一种情况下,他们可能也需要可执行权限,除非他们可以通过某种方式让网络服务器执行它,例如通过请求 URL 已删除的漏洞。

当然,漏洞必须首先存在才能发生。也可以将阻止写访问视为 "defence in depth",但是如果您的应用程序需要这样做,那么这可能是一个可以接受的风险。另一种方法是找到另一种方法来实现您想要的功能。