Domain/Subdomain takeover

Tip

学习和实践 AWS 黑客技术:HackTricks Training AWS Red Team Expert (ARTE)
学习和实践 GCP 黑客技术:HackTricks Training GCP Red Team Expert (GRTE) 学习和实践 Azure 黑客技术:HackTricks Training Azure Red Team Expert (AzRTE)

支持 HackTricks

Domain takeover

如果你发现某个域名 (domain.tld) 被范围内的某个服务使用,但该公司已经失去了该域名的所有权,你可以尝试注册它(如果价格可接受)并通知公司。如果该域名正在接收敏感信息,例如通过 GET 参数或 Referer 头传递的 session cookie,那么这肯定是一个漏洞。

Subdomain takeover

公司的某个子域指向一个未注册名称的第三方服务。如果你能在该第三方服务中创建一个账户并注册正在被使用的名称,就可以执行子域接管。

有多种带字典的工具可以用于检测可能的接管:

Subdomain Takeover Generation via DNS Wildcard

当域名使用 DNS 通配符时,该域名下任何没有显式不同地址的请求子域都会被解析为相同的信息。这可能是一个 A ip address、一个 CNAME 等等。

例如,如果 *.testing.com 被通配符解析到 1.1.1.1,那么 not-existent.testing.com 将指向 1.1.1.1

但是,如果不是指向一个 IP 地址,而是通过 CNAME 指向一个第三方服务,比如一个 GitHub 子域(例如 sohomdatta1.github.io),攻击者就可以在该第三方(此处为 GitHub)上创建自己的页面,并让 something.testing.com 指向它。由于 CNAME 通配符的存在,攻击者将能够为受害者域生成任意子域并指向自己的页面。

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

Exploiting a subdomain takeover

Subdomain takeover 本质上是在互联网上对特定域名进行的 DNS 欺骗,允许攻击者为该域设置 A records,从而使浏览器展示来自攻击者服务器的内容。浏览器的这种“透明性”使域名容易被用于 phishing。攻击者可能会使用 typosquattingDoppelganger domains 来实现这一目的。尤其脆弱的是那些在钓鱼邮件中 URL 看起来合法、能够欺骗用户并绕过垃圾邮件过滤器的域名。

Check this post for further details

SSL Certificates

SSL certificates,如果攻击者通过像 Let’s Encrypt 这样的服务生成,会增加这些假冒域名的可信度,使 phishing 攻击更具欺骗性。

浏览器的透明性也延伸到 cookie 安全,由像 Same-origin policy 这样的策略管理。cookie 常用于管理会话和存储登录令牌,可能被子域接管滥用。攻击者可以通过将用户引导到被接管的子域来收集 session cookies,从而危及用户数据和隐私。

CORS Bypass

可能存在这样的情况:每个子域都被允许访问来自主域或其他子域的 CORS 资源。攻击者可以利用这一点,通过 CORS 请求访问敏感信息。

CSRF - Same-Site Cookies bypass

可能存在这样的情况:子域被允许向域或其他子域发送 cookie,而这些发送本应被 cookies 的 Same-Site 属性阻止。然而,如果 anti-CSRF tokens 实现得当,它们仍会阻止此类攻击。

OAuth tokens redirect

被攻陷的子域可能被允许用作 OAuth 流程中的 redirect_uri。攻击者可以利用这一点窃取 OAuth token。

CSP Bypass

被攻陷的子域(或所有子域)可能被允许用于 CSP 的例如 script-src 等配置。攻击者可以利用这一点注入恶意脚本并利用潜在的 XSS 漏洞。

Emails and Subdomain Takeover

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

Higher Order Risks

进一步的风险包括 NS record takeover。如果攻击者控制了域名的一个 NS 记录,他们可能将部分流量定向到其控制的服务器。如果攻击者为 DNS 记录设置了较高的 TTL (Time to Live),会进一步放大该风险,延长攻击持续时间。

CNAME Record Vulnerability

攻击者可能利用指向外部服务但未被声称或已退役的 CNAME 记录。这样他们就可以在受信任的域下创建页面,进一步促成 phishing 或恶意软件分发。

Mitigation Strategies

缓解策略包括:

  1. Removing vulnerable DNS records - 如果子域不再需要,删除相关的 DNS 记录是有效的。
  2. Claiming the domain name - 向相应的 cloud provider 注册该资源或重新购买已过期的域名。
  3. Regular monitoring for vulnerabilities - 像 aquatone 这样的工具可以帮助识别易受攻击的域。组织还应审查其基础设施管理流程,确保 DNS 记录的创建是资源创建的最后一步,同时也是资源销毁的第一步。

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

Detection techniques

  • Find dangling DNS records: 查找指向不存在资源(已删除的 buckets、apps、pages、load balancers)的 CNAME/A/AAAA/ALIAS/ANAME 记录。
  • Check provider error signatures: 将 HTTP 响应、TLS 证书或 DNS 错误与已知接管模式匹配(参见 can-i-take-over-xyz)。
  • Look for orphaned cloud assets: 验证 S3/CloudFront、Azure Websites、GCP App Engine/Storage、GitHub Pages、Heroku、Fastly、Netlify、Vercel、Zendesk、Shopify、Atlassian 以及类似服务是否存在孤立资源。
  • Passive DNS and historical records: 旧的 CNAME 常常揭示以前使用过但可能仍易受攻击的第三方服务。
  • Wildcard pitfalls: 确认是通配符 DNS 还是显式记录以避免误报并理解接管放大的可能性。

APIs and data sources

References

Tip

学习和实践 AWS 黑客技术:HackTricks Training AWS Red Team Expert (ARTE)
学习和实践 GCP 黑客技术:HackTricks Training GCP Red Team Expert (GRTE) 学习和实践 Azure 黑客技术:HackTricks Training Azure Red Team Expert (AzRTE)

支持 HackTricks