Domain/Subdomain takeover

从零开始学习AWS黑客技术,成为专家 htARTE(HackTricks AWS Red Team Expert)

支持HackTricks的其他方式:

使用Trickest可以轻松构建和自动化工作流程,使用世界上最先进的社区工具。 立即获取访问权限:

域接管

如果您发现某个域名(domain.tld)被某个服务在范围内使用,但公司已经失去了对其的所有权,您可以尝试注册它(如果便宜的话),并通知该公司。如果该域名通过GET参数或Referer头部接收到一些敏感信息,比如会话cookie,那么这肯定是一个漏洞

子域接管

公司的一个子域指向一个未注册名称的第三方服务。如果您可以在这个第三方服务创建一个帐户注册正在使用的名称,则可以执行子域接管。

有几种带有字典的工具可用于检查可能的接管:

使用BBOT扫描可劫持的子域:

BBOT的默认子域枚举中包含子域接管检查。签名直接从https://github.com/EdOverflow/can-i-take-over-xyz获取。

bbot -t evilcorp.com -f subdomain-enum

通过 DNS 通配符生成子域接管

当在一个域中使用 DNS 通配符时,该域的任何请求的子域,如果没有明确指定不同的地址,将被解析为相同的信息。这可以是一个 A ip 地址,一个 CNAME...

例如,如果 *.testing.com 被通配为 1.1.1.1。那么,not-existent.testing.com 将指向 1.1.1.1

然而,如果管理员将其指向一个第三方服务通过 CNAME,比如一个github 子域,例如 (sohomdatta1.github.io)。攻击者可以创建自己的第三方页面(在这种情况下是 Github),并表示 something.testing.com 指向那里。因为,CNAME 通配符将同意攻击者能够为受害者的域生成任意子域指向他的页面

您可以在 CTF write-up 中找到这个漏洞的示例:https://ctf.zeyu2001.com/2022/nitectf-2022/undocumented-js-api

利用子域接管

子域接管本质上是互联网上特定域的 DNS 欺骗,允许攻击者为一个域设置 A 记录,导致浏览器显示来自攻击者服务器的内容。这种浏览器中的透明性使域名容易受到钓鱼攻击。攻击者可以利用typosquattingDoppelganger domains来实现这一目的。特别容易受到影响的是在钓鱼邮件中 URL 看起来合法的域名,欺骗用户并通过域名固有的信任规避垃圾邮件过滤器。

查看这篇文章以获取更多详细信息

SSL 证书

如果攻击者通过像Let's Encrypt这样的服务生成 SSL 证书,将增加这些假域名的合法性,使钓鱼攻击更具说服力。

浏览器透明性还延伸到 cookie 安全,受同源策略等政策的约束。Cookie 经常用于管理会话和存储登录令牌,可以通过子域接管来利用。攻击者可以通过将用户重定向到一个受损的子域来收集会话 cookie,危及用户数据和隐私。

电子邮件和子域接管

子域接管的另一个方面涉及电子邮件服务。攻击者可以操纵MX 记录以从合法子域接收或发送电子邮件,增强钓鱼攻击的效果。

更高级别的风险

进一步的风险包括NS 记录接管。如果攻击者控制了一个域的一个 NS 记录,他们可能会将一部分流量定向到他们控制的服务器。如果攻击者为 DNS 记录设置了较高的TTL(生存时间),则攻击的持续时间会延长,这种风险会加剧。

CNAME 记录漏洞

攻击者可能会利用指向不再使用或已被废弃的外部服务的未声明的 CNAME 记录。这使他们可以在受信任的域下创建一个页面,进一步促进钓鱼或恶意软件分发。

缓解策略

缓解策略包括:

  1. 删除易受攻击的 DNS 记录 - 如果不再需要子域,这是有效的。

  2. 声明域名 - 在相应的云提供商注册资源或重新购买已过期的域名。

  3. 定期监控漏洞 - 像aquatone这样的工具可以帮助识别易受攻击的域。组织还应审查其基础设施管理流程,确保 DNS 记录创建是资源创建的最后一步,也是资源销毁的第一步。

对于云提供商,验证域名所有权对于防止子域接管至关重要。一些提供商,如GitLab,已经意识到了这个问题,并实施了域名验证机制。

参考资料

使用 Trickest 可以轻松构建和自动化工作流程,使用世界上最先进的社区工具。 立即获取访问权限:

从零开始学习 AWS 黑客技术,成为专家 htARTE(HackTricks AWS 红队专家)

支持 HackTricks 的其他方式:

最后更新于