子域名接管漏洞

今天学习了下子域名接管漏洞,通过该漏洞可以接管目标子域名,让其显示我设置的任意页面,造成的危害,主要用于网络钓鱼,包括但不限于伪造钓鱼页面,还可以盗取 Cookie,伪造电子邮件等,具体风险可参考文章:

Subdomain Takeover: Thoughts on Risks

接下来以实战的方式讲解造成这个漏洞的原因,首先在我的域名管理平台,给我域名 blog.xazlsec.com 设置一个 cname 记录:

接下来可以使用浏览器访问域名:

http://blog.xazlsec.com/

 

出现这个页面说明该域名解析已经生效,但是未配置网站,需要在 github 上进行操作, 创建网站项目并绑定域名,具体操作如下:

1、创建一个测试项目

2、新建的项目没有文件,可以创建一个文件内容为 Test by Xazlsec 的 index.html

3、打开 Settings,然后点击 Code and automation 下的 Pages 功能,并选择 Source 为 main:

点击保存之后,可以在 Custom domain出选择自己的域名填入:

保存成功之后,就可以访问域名来查看 github 上的内容:

那么有人开始疑问,这跟子域名接管有啥关系?加入我不想用这个网站了,直接在 github 上把这个项目删除,但是 cname 记录没有一起删掉,会发生什么?

不知道的话,可以测试一下,当我删除新建的项目之后,打开域名,又出现了最开始没有配置时的页面,无论是谁,都可以在自己的 github 创建项目,在最后填写域名 blog.xazlsec.com,让其指向你的项目,从而实现子域名接管。

到这里,子域名接管的原理就应该知道了,因为域名曾经为了实现某个功能,设置了 cname 的记录,但是,当该功能下线后,忘记删除对应的 cname 记录,从而导致漏洞的出现。

我测试了大概一百个网站 cname 到 github.io 的网站,其中有 10 个网站访问已经 404,经最终测试,有三个域名可以实现接管,这么算下来有百分之三的概率成功。

以上是一个子域名接管的案例,有一个不错的项目,专门检测这类问题,应用场景不光是 github,还有其他平台:

GitHub - jakejarvis/subtake: Automatic finder for subdomains vulnerable to takeover. Written in Go, based on @haccer's subjack.

不同服务的利用方式,可以查看下面项目:

GitHub - EdOverflow/can-i-take-over-xyz: "Can I take over XYZ?" — a list of services and how to claim (sub)domains with dangling DNS records.

 

 

除了这种利用知名服务的方式,假如我们 cname 指向的是自己的某个域名,比如 test.com,而这个域名,我们用来一年,后来没有需求,就没有续费,这个时候,如果有人抢注了这个域名,那么是不是也可以实现子域名接管的效果?

至于如何在实际的赏金行动中发现存在问题的子域名,其实也不难,需要收集足够多的子域名并且解析出 cname 记录,然后批量检测这些 cname 指向是否存在问题即可。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值