子域名泄露分析(AI生成)
2025/9/21大约 4 分钟
好的,这是一个非常经典且在漏洞赏金中极受欢迎的漏洞类型。
子域名接管(Subdomain Takeover)漏洞,简单来说,就是一个“名存实亡”的“幽灵房产”问题。
让我们用一个现实生活中的比喻来彻底理解它。
比喻:一块被遗忘的广告牌
正常的业务:
- 一家公司(比如
example.com
)为了做一次市场营销活动,租用了市中心广场上的一块巨大的广告牌。 - 为了告诉所有人这块广告牌是他们的,他们在公司的**官方地图(DNS记录)**上,添加了一条标注:
"活动广告牌" -> "市中心广场A栋楼顶"
。 - 在DNS世界里,这条记录就是:
event.example.com CNAME some-marketing-service.com
。这里的some-marketing-service.com
就是那个提供广告牌服务的第三方公司。
- 一家公司(比如
“幽灵房产”的产生:
- 市场活动结束了,效果很好。但公司内部负责这件事的员工离职了,交接工作没做好。
- 他只做了半件事:他打电话给广告牌公司,说:“我们的合同到期了,我们不再租用市中心广场A栋楼顶那块广告牌了。” 广告牌公司于是就把上面的内容撤了下来,现在那块广告牌是空的、可供任何人租用的状态。
- 他忘了做最重要的另一半事: 他忘了去更新公司的官方地图(DNS记录)!地图上依然写着:
"活动广告牌" -> "市中心广场A栋楼顶"
。
漏洞的诞生:
- 现在,这个
event.example.com
就成了一个“名存实亡”的子域名。 - 它的**DNS记录(“名”)**还在,并且被
example.com
这个权威的、官方的域名所信任。 - 但它指向的**实际服务(“实”)**已经不存在了,那块广告牌已经空了出来。
- 现在,这个
攻击者(你)的机会 - “鸠占鹊巢”:
- 你作为一个聪明的攻击者,发现了这个情况。你立刻跑到那家广告牌公司,说:“你好,我要租用市中心广场A栋楼顶那块空着的广告牌。”
- 广告牌公司一看,确实是空的,于是就把广告牌租给了你。
- 现在,你可以在这块广告牌上张贴任何你想要的内容。
攻击的实现:
- 当一个无辜的用户访问
event.example.com
时,他会先去查example.com
的官方地图。 - 地图告诉他:“请去市中心广场A栋楼顶。”
- 他到了楼顶,看到的是你张贴的恶意广告(比如,一个钓鱼页面)。
- 因为这个地址是从
example.com
这个官方、可信的来源指向的,用户会完全信任广告牌上的内容,从而上当受骗。
- 当一个无辜的用户访问
这就是子域名接管。
技术上的实现
在技术世界里,“广告牌公司”通常是各种云服务提供商 (Cloud Services)。
CNAME记录: 子域名接管最常发生在使用了
CNAME
记录的子域名上。CNAME
记录的意思就是“别名”,event.example.com CNAME a.herokuapp.com
的意思就是告诉浏览器:“访问event.example.com
,实际上就是访问a.herokuapp.com
”。漏洞发生流程:
- 一个公司的开发者在Heroku(一个云应用平台)上创建了一个叫
my-cool-app
的应用,其默认域名是my-cool-app.herokuapp.com
。 - 为了用自己的品牌域名,他在公司的DNS里添加了一条记录:
app.company.com CNAME my-cool-app.herokuapp.com
。 - 后来,这个项目下线了,开发者在Heroku的后台,删除了
my-cool-app
这个应用。但他忘了删除DNS里的那条CNAME
记录。 - 现在,
app.company.com
就指向了一个在Heroku上不存在的、但名字可被任何人重新注册的应用。 - 攻击者发现了这一点。他立刻登录自己的Heroku账号,创建一个新的应用,并把它命名为
my-cool-app
。 - 接管完成! 现在,任何访问
app.company.com
的用户,其流量都会被导向攻击者在Heroku上创建的恶意应用。
- 一个公司的开发者在Heroku(一个云应用平台)上创建了一个叫
子域名接管的危害
- 钓鱼攻击 (Phishing): 攻击者可以在接管的子域名上部署一个与主站一模一样的钓鱼网站,窃取用户密码和个人信息。因为域名是官方的,浏览器地址栏不会有任何异常,用户极难分辨。
- 会话劫持 (Session Hijacking): 如果主站的Cookie作用域被设置为
*.company.com
,那么攻击者在他接管的子域名上,就可以窃取用户访问主站时的会话Cookie。 - 恶意软件分发: 通过这个可信的域名,分发恶意软件。
- 声誉损害: 在官方子域名上发布不当内容,损害公司声誉。
如何发现?
- 自动化工具: 使用
subzy
,nuclei
(有专门的模板)等工具,可以自动检查大量的子域名,看它们指向的第三方服务是否返回了“服务不存在”的特征性错误页面。 - 手动检查: 访问每一个爆破出的子域名,注意观察那些显示“404 Not Found”, “NoSuchBucket”, “This page is available for purchase”等错误的页面,它们都是潜在的接管机会。