本文主要是介绍域名/子域名接管漏洞,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
域名/子域名接管漏洞
- 1.域接管
- 2.子域接管
- 子域接管概述
- 使用BBOT扫描可劫持的子域
- 通过DNS通配符生成子域接管
- 3.利用子域接管
- 4.子域名接管防御手段
1.域接管
如果您发现某个域名被某个服务使用,但公司已经失去了对其的所有权,您可以尝试注册它(如果便宜的话),并通知该公司。如果该域名通过GET参数或Referer标头接收到一些敏感信息,比如会话cookie,那么这肯定是一个漏洞。
黑客的攻击描述:
- 公司失去域名所有权:公司的某个域名被其他人注册,或者被公司忘记续费而被别人注册。
- 服务仍在使用该域名:公司的一些服务或应用程序仍然在使用这个域名进行某些操作,比如API请求、静态资源加载等。
- 注册该域名:你发现这个域名可以被注册,并且进行注册。
- 接收到敏感信息:通过该域名的GET参数或Referer标头接收到一些敏感信息,比如会话cookie。
2.子域接管
子域接管概述
子域接管发生在一个组织的子域名指向了一个已不再控制的资源(例如,SaaS服务、云存储、第三方服务等),从而使得攻击者可以注册该资源并接管子域名。这种漏洞可能导致各种安全问题,包括数据泄漏、钓鱼攻击、会话劫持等。
黑客的攻击描述:
1、指向失效的资源:
- 公司有一个子域名(如sub.example.com),该子域名曾经指向某个外部服务(如GitHub Pages、Heroku、AWS S3等)。
- 该服务的资源(例如,GitHub上的一个仓库或Heroku上的一个应用)被删除或失效,但DNS记录仍然存在,指向了该服务的域名(例如,sub.example.com指向了username.github.io或app.herokuapp.com)。
2、攻击者注册资源:
- 攻击者发现子域名sub.example.com指向了一个已不再使用的外部服务。
- 攻击者在该外部服务上创建了同名资源(例如,在GitHub上创建了username.github.io或者在Heroku上创建了名为app的应用)。
3、子域名接管:
- 由于DNS记录仍然存在并指向该服务,攻击者现在可以完全控制sub.example.com。
- 攻击者可以在该子域名上托管任何内容,包括恶意代码、钓鱼页面等。
使用BBOT扫描可劫持的子域
BBOT的默认子域枚举中包含子域接管检查
bbot -t evilcorp.com -f subdomain-enum
通过DNS通配符生成子域接管
DNS通配符记录允许将未明确指定的子域指向一个通用地址。当使用DNS通配符时,任何请求的子域,如果没有明确指定不同的地址,将被解析为相同的信息。可以是一个A记录(IP地址)或CNAME记录(别名)。
假设我们有一个通配符DNS记录*.testing.com
指向1.1.1.1。
- example.testing.com 解析为 1.1.1.1
- subdomain.testing.com 解析为 1.1.1.1
- anything.testing.com 解析为 1.1.1.1
如果管理员将通配符记录指向一个第三方服务(通过CNAME),比如一个GitHub Pages子域,例如sohomdatta1.github.io
,情况会有所不同。
假设*.testing.com
的CNAME记录指向sohomdatta1.github.io:
- example.testing.com 解析为 sohomdatta1.github.io
- subdomain.testing.com 解析为 sohomdatta1.github.io
- anything.testing.com 解析为 sohomdatta1.github.io
当CNAME通配符指向第三方服务时,会存在一个严重的安全风险。攻击者可以创建自己的第三方页面并控制这些子域。
1、攻击者在GitHub Pages上创建了一个页面,例如attacker.github.io。
2、由于*.testing.com指向sohomdatta1.github.io,攻击者可以利用这一点。于是攻击者注册了attacker.github.io,并将其配置为托管一个恶意页面。
3、攻击者可以创建一个任意子域,如something.testing.com,并使其解析到attacker.github.io。
4、因为*.testing.com的CNAME记录指向sohomdatta1.github.io,DNS会将something.testing.com解析到attacker.github.io。
5、造成的后果
- something.testing.com 现在指向攻击者控制的页面。任何用户访问something.testing.com都会看到攻击者创建的内容。
- 攻击者可以利用这个子域进行钓鱼攻击、传播恶意软件等。
3.利用子域接管
子域接管本质上是互联网上特定域的DNS欺骗,允许攻击者为一个域设置A记录,导致浏览器显示来自攻击者服务器的内容。这种浏览器中的透明性使域容易受到钓鱼攻击。
1、使用SSL证书增加可信
如果攻击者通过生成SSL证书,将增加这些虚假域的合法性,使钓鱼攻击更具说服力。
2、电子邮件和子域接管
子域接管的另一个方面涉及电子邮件服务。攻击者可以操纵MX记录以从合法子域接收或发送电子邮件,增强钓鱼攻击的效果。
3、NS记录接管
如果攻击者控制了一个域的一个NS记录,他们可能会将部分流量引导到他们控制的服务器。如果攻击者为DNS记录设置了较高的TTL(生存时间),则这种风险会加剧,延长攻击的持续时间。
4、Cookie安全和浏览器透明性
Cookie通常用于管理会话和存储登录令牌,可以通过子域接管来利用。攻击者可以通过将用户重定向到一个受损的子域来收集会话cookie,危及用户数据和隐私。
4.子域名接管防御手段
缓解策略包括:
- 删除易受攻击的DNS记录 - 如果不再需要子域。
- 声明域名 - 在相应的云提供商注册资源或重新购买过期的域名。
- 定期监控漏洞 - 像aquatone这样的工具可以帮助识别易受攻击的域。组织还应审查其基础设施管理流程,确保DNS记录创建是资源创建的最后一步,也是资源销毁的第一步。
对于云提供商,验证域所有权对于防止子域接管至关重要。一些提供商,如GitLab,已经意识到了这个问题,并实施了域验证机制。
这篇关于域名/子域名接管漏洞的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!