如何挖掘子域名接管漏洞

子域名接管漏洞

Posted by 看不尽的尘埃 on September 30, 2019

前言

前几天在T00ls上看到了一篇说子域名接管漏洞的文章,今天就来说一说子域名接管漏洞。

预备知识

图片

  • A记录
    • A记录(Address)是用来指定主机名(或域名)对应的IP地址记录。
  • MX记录
  • Mail Exchanger邮件交换记录,它指向一个邮件服务器,用于电子邮件系统发邮件时根据收信人的地址后缀来定位邮件服务器。
  • CNAME记录
    • 也被称为别名记录,是双线智能解析和使用CDN加速必须用到的解析方法。
  • NS记录
    • 域名DNS服务器记录,全称Name Server记录,用来指定该域名由哪个DNS服务器来对您的域名进行解析。
  • TXT记录
    • 一种文本记录,仅用于对主机名或者域名的记录信息,对解析无实质影响。
  • TTL值
    • 全称是“生存时间(Time To Live)”,简单的说它表示DNS记录在DNS服务器上缓存时间。
  • 泛解析
    • 使用“*”建立二级域名解析到同一独立IP。在域名前添加任何子域名,均可解析到指定的服务器IP地址。

漏洞原理

子域名的cname解析到一个已过期的域名或者是未注册的域名,目标域名可以注册,造成子域名接管漏洞(Subdomain Takeover)。

条件

满足子域名接管漏洞需要满足以下三点要求:

  • 子域名的CNAME记录指向另一个域,比如x.baidu.com的CNAME记录指向vul.com
  • 当vul.com到期,任何人都可以注册的时候
  • x.baidu.com 没有删除CNMAE记录

分类

按照域名解析类型分可以分为4类:

  • CNAME子域名接管
  • NS子域名接管
  • A记录子域名接管
  • MX子域名接管(影响较小,可用于鱼叉式网络钓鱼攻击)

按直接或间接劫持可以分为两类:

  • 一阶子域名劫持漏洞(包括以上四类)
  • 二阶子域名劫持漏洞
    • 网站中有导入第三方资源的情况,也是可能存在被劫持的风险的。比如引用了一个外部的js文件(http://www.baidu.com/main.js )),因此当baidu.com域名过期的时候或者www.baidu.com被劫持的时候,间接的你的网站也就被劫持了。这种情况下可能会导致存储型XSS或者被植入暗链等等。

如何挖掘

  1. 首先进行子域名枚举,获取到尽可能多的子域名;

  2. 对子域名列表进行CNMAE查询,寻找指向另一个域的子域名;
  3. 确认另一个域是否可以被注册;
  4. 如果可以注册的话,就可以购买域名,并搭建Web应用实施钓鱼等漏洞利用;

工具

自动化工具

  • Aquatone

危害

  • 网页钓鱼
  • Cookie盗取

    防御

    1、删除多余的DNS的相关记录; 2、保持对域名的所有权