昨天我在 Chrome 中打开了我们的一个 Web 应用程序,它弹出一个大红色提示“警告,此网站包含来自不良 URL 的内容”。我仔细检查了我输入的 URL,然后立即查看了源代码并搜索了文件。果然,底部有一个脚本标签,其中有一个编码的 URL,解码后就是 Chrome 发现的违规 URL。
我很好奇这是怎么发生的,以及我以后如何避免这种情况。我采取的步骤如下,但不确定它们是否是解决方案。
我查看了 IIS,发现该网站允许 IUSR_ComputerName 和 IIS_WPG 用户对整个 webroot 进行写入访问,这原本是为了写入上传和日志文件。我将其限制在需要写入的特定区域,并且仅限于 IIS_WPG。
提前致谢。
答案1
这是个开始。默认情况下,IIS 使用 IUSR_ComputerName 来授予匿名用户的权限。这意味着他们将能够执行匿名 HTTP PUT,从而覆盖任何文件。
IIS_WPG 是用于授予应用程序池运行权限的组。据我了解,提高 .NET 用户对某些目录的权限就足够了。IUSR_ComputerName 应该只需要读取权限。
您的应用程序池设置为使用什么?如果您运行多个站点,则创建特定的用户帐户可以提供一些额外的安全性,而不是向 IIS_WPG 组授予权限。
答案2
这实际上发生在我身上,罪魁祸首是 FTP。
检查受感染文件最后修改日期当天的 IIS 网络日志。如果您的站点启用了 FTP,请检查此日期的 FTP 日志。这是我们能够找出发生了什么的唯一方法。
最后,我们发现网络上的一台机器感染了恶意软件,该恶意软件通过特定的 FTP 客户端列表运行,并将包含未加密密码的 FTP 设置文件下载到多个 FTP 站点。
答案3
你能在任何网页中找到有问题的代码吗?也许这是一种注入攻击,有人在进行中间人攻击并动态注入代码……
这篇文章概述了这一点Neil Carpenter 的博客:
回顾网络跟踪,我们看到大量针对默认网关 IP 地址的免费 arp 数据包。返回的与默认网关对应的 MAC 地址是 Compaq NIC();但是,默认网关是具有不同 MAC 地址的 Cisco 设备。据此,我们确定这台机器正在发起 ARP 缓存投毒攻击 (*) 执行中间人攻击,并将 iframe 插入到 HTTP 通信中,其中响应是一个 html 文档。
答案4
是的,代码确实在文件中,所以我们知道这不是 SQL 注入或中间人攻击