子域名接管是一条指向外部服务的记录没跟着服务一起删掉,别人把那个服务上的同名资源重新注册,就能在属于你的子域名上放内容。
第 23 期介绍过子域名。给它配一条 CNAME 记录指向云服务或建站平台,是常见做法。麻烦出在收尾:服务停了、账号注销了,那条记录还留在域名系统里。它指向的资源已经空了,但记录本身照样把访问者导过去——谁在同一个平台上把那个资源名重新注册,谁就接手了这个子域名。
这就是子域名接管。攻击者不用碰到你的服务器,也不用登录你的域名后台,只要在第三方平台上抢一个空出来的名字。之所以能得手,是因为这类平台分配资源的方式:账号注销后,原来的资源标识往往可以被下一位用户占用。
拿到子域名之后能做的事不少。访问者看到的地址还是你的子域名,页面可信度跟着提高;作用域设在主域名上的登录凭证,浏览器也会一并发送;有些配置里发信权跟着域名走,垃圾邮件能借你的名义发出去。有安全公司统计过一次大规模活动,被这样劫持的子域名涉及八千多个域名。
判断一条记录有没有风险,要看三件事:指向的资源还在不在、平台是否允许别人占用这个名字、平台有没有做归属校验。有的平台在销毁资源时会把名字永久保留,或者要求先验证域名归属才允许绑定,这类情况下记录虽然多余,但接不了管。
处理办法很直接:下线一个服务之前,先删对应的记录,等缓存过期、确认不再解析过去,再关服务,顺序反了就会留下空档。不容易发现的原因是域名记录和第三方服务归不同的人管,一边删了,另一边忘了。