子域名接管漏洞,简单来说通过该漏洞可以接管目标子域名,让其显示我设置的页面,主要用于网络钓鱼、如伪造钓鱼页面,还可以利用其盗取Cookie,伪造电子邮件等。
其原理为曾经为了使用某个域名实现某个功能,设置了cname记录(别名记录,该记录允许将多个域名映射到同一个域名,常用于CDN)。比如我们现在设置了a.haochen1204.com指向b.haochen1204.com。那么当我们使用完b.haochen1204.com这个网站后,将其删除,但是我们忘记了删除a.haochen1204.com这个cname记录,那么此时a.haochen1204.com仍会解析到b.haochen1204.com,但是我们的b.haochen1204.com已经被删除了,那么我们此时便可以搭建一个网站,并将其域名设置为b.haochen1204.com,放上我们想要的东西,这样就成功接管了a.haochen1204.com。
可能会出现这种漏洞的网站有很多,如常见的github(也就是github.io)、常见的oss对象存储平台等。我们可以使用subtake工具来快速的检查多种网站是否存在子域名接管漏洞。
https://github.com/jakejarvis/subtake
首先发现一个报错页面,在报错页面发现了HostId和BucketName两个字段,并且通过这两个字段我们知道他是使用阿里云对象存储提供服务的,并且给了oss存储对象的名称。这种接管方式下,两个字段缺一不可。
然后我们进入自己的阿里云,进入oss存储对象,创建一个新的Bucket,这里Bucket名称选择我们刚刚从报错页面中得到的HostId字段,注意下面的地区,我们在HostID或URL中可以得到关于地区的信息,要选择相同的地区。
然后将权限设置为公共读写。
此时我们便完成了对子域名的接管,我们尝试上传一个文件试试。
可以看到已经成功访问到了我们上传的a.txt。
此时便可以任意上传下载文件。
首先在域名解析处创建一个CNAME解析。将github.haochen1204.com指向haochen1204.github.io
然后我们尝试使用浏览器访问域名,发现出现github的404,说明我们已经成功解析到haochen1204.github.io。这里为们还没有配置网站,需要在github上进行操作。
然后在github上创建一个存储库
在其中加入一个页面
打开 Setting,然后点击Code and automation下的Pages 功能,并选择Source为main:
然后输入我们刚刚要解析的域名。
可以看到我们已经可以成功通过cname记录的域名访问我们的存储库内容。
假如我们的cname记录所对应的域名的网站被删除了,但是域名没有删除,那么我们就可以通过上述方法,来接管该域名。
推荐阅读