PHP + IIS 应用程序池标识 Windows\Temp 权限

PHP + IIS 应用程序池标识 Windows\Temp 权限

我当前在 Win2k8 R2 Web Edition Server 上的 IIS 7.5 上运行 PHP(5.3),并且想知道通过为 IUSR 帐户或 %SystemRoot%\Temp 的 IIS_USERS 组分配读取、写入、修改和执行权限,我可能会给系统引入什么问题或安全漏洞(如果有的话)?

我是否应该完全改变该文件夹的权限(因为当我尝试更改它们时,Windows 提醒我可能不应该这样做)?

我应该在其他地方创建一个临时文件夹并相应地设置权限吗?

问题是当我设置匿名身份验证(我猜这是一个更安全的选项???)以使用应用程序池身份时,启动会话时 PHP 陷入循环,因为由于应用程序池用户或 IIS_USERS 组缺乏权限,它无法在 %SystemRoot%\Temp 文件夹中创建会话文件。

另一个问题是 ImageMagick(PHP 扩展)被拒绝访问 %SystemRoot%\Temp 来写入临时文件,因此引发异常。

我尝试过在 Google 上搜索,但没有找到任何具体涉及该主题的内容。

非常感谢您的帮助。

答案1

为匿名 inet 用户分配默认临时文件夹的“修改”权限并不是明智之举。因此,这不是安全故障,但您却让针对 Web 基础架构的某些类型的攻击变得更容易。

一如既往,魔鬼藏在细节中。只要向该文件夹写入的数据都是无害的,就不会存在任何特定风险:该文件夹本身与系统上的许多其他位置并无不同。当然,如果您想在该文件夹上设置 IUSR_ 权限,也意味着您打算使用该分配,以便 Web 应用程序可以写入该文件夹。

风险随之而来: - 拥有该文件夹的“执行”权限会减少一层安全保护:如果攻击者找到一种方法将可执行文件上传到临时文件夹并让系统运行它,它就会运行。如果您拒绝“执行”权限,它根本行不通。 - 该文件夹位于系统最敏感的部分:操作系统文件的位置。这意味着,如果有人设法利用网络应用程序中的目录遍历漏洞来利用临时文件,他将距离系统根目录及其中的所有有趣内容只有一步之遥。

这些本身都不是太危险,但良好的安全性依赖于深度安全性。在这种情况下,我确信您可以让您的 PHP 应用程序使用与系统临时目录不同的文件夹来保存其临时文件。最好将其放在单独的分区上,放在 IUSR_* 具有读/写访问权限但没有执行权限的文件夹中。

相关内容