子域接管

当攻击者获得目标域的子域的控制权时,就会发生子域接管。通常,当子域在域名系统 (DNS) 中具有规范名称 (CNAME),但没有主机为其提供内容时,就会发生这种情况。这可能是因为虚拟主机尚未发布或虚拟主机已被删除。攻击者可以通过提供他们自己的虚拟主机并为其托管自己的内容来接管该子域。

如果攻击者能够做到这一点,他们可能能够读取从主域设置的 cookie,执行 跨站点脚本,或规避 内容安全策略,从而使他们能够捕获受保护的信息(包括登录信息)或向毫无戒心的用户发送恶意内容。

子域就像一个电源插座。如果您将自己的设备(主机)插入其中,一切正常。但是,如果您从插座上拔下设备(或尚未插入设备),则其他人可以插入不同的设备。您必须切断断路器或保险丝盒 (DNS) 的电源,以防止其他人使用该插座。

它们是如何发生的?

如果虚拟主机的供应或取消供应(删除)过程处理不当,攻击者可能会有机会接管子域。

在供应期间

在您开始操作之前,攻击者会在您在托管服务提供商处购买的子域名称上设置一个虚拟主机。

假设您控制着域名 example.com。您想在 blog.example.com 上添加一个博客,并且您决定使用一个维护博客平台的托管服务提供商。(对于“博客”,您可以替换为“电子商务平台”、“客户服务平台”或任何其他“基于云的”虚拟主机场景。)您经历的过程可能如下所示

  1. 您在域名注册商处注册名称“blog.example.com”。
  2. 您设置 DNS 记录以将想要访问 blog.example.com 的浏览器重定向到虚拟主机。
  3. 您在托管服务提供商处创建了一个虚拟主机。

除非托管服务提供商非常小心地验证设置虚拟主机的主体实际上是子域名称的所有者,否则比您更快的攻击者可以使用相同的托管服务提供商,使用您的子域名称创建虚拟主机。在这种情况下,一旦您在步骤 2 中设置了 DNS,攻击者就可以在您的子域上托管内容。

在取消供应期间

您关闭了虚拟主机,但攻击者使用相同的名称和托管服务提供商设置了新的虚拟主机。

您(或您的公司)决定不再维护博客,因此您从托管服务提供商处删除了虚拟主机。但是,如果您不删除指向托管服务提供商的 DNS 条目,则攻击者现在可以创建自己的虚拟主机,声称您的子域,并在该子域下托管自己的内容。

我如何预防它们?

防止子域接管是虚拟主机和 DNS 生命周期管理中操作顺序的问题。根据组织规模的不同,这可能需要跨多个部门进行沟通和协调,这只会增加易受攻击的错误配置的可能性。

  • 为供应和取消供应主机定义标准流程。尽可能地将所有步骤放在一起。
    • 通过声明虚拟主机开始供应;最后创建 DNS 记录。
    • 通过首先删除 DNS 记录开始取消供应。
  • 创建组织所有域及其托管服务提供商的清单,并在情况发生变化时更新它,以确保没有任何内容悬空。
  • 向托管供应商施压以弥合差距;询问他们如何验证声称虚拟主机的人是否确实对域名拥有合法的主张。在您的组织内部努力使这成为供应商资格流程的一部分。

我的子域已被接管。我该怎么办?

如果您发现您的域的子域已被接管,第一步(如果可能)是通过删除子域的 DNS 条目来“切断电源”。如果您的网站有多层虚拟化(例如,除了虚拟主机之外还有 CDN),您可能需要检查每一层以查看攻击者在何处确切地断言了他们的虚拟主机声明以接管您的域名。

了解更多