总之,你挖掘漏洞的方法越奇特,详尽,你所能挖到的东西也就越多。

一、理解子域名劫持漏洞

这个分标题只为了回答一个问题:子域名劫持是怎么形成的、怎么理解它?

一个域名对应着一个提供服务的服务器IP,如何对应起来的?很简单,DNS解析,是DNS让域名和IP进行对应的。同样的,子域名对应着一个IP,或者是对应着另外一个域名。
对应这张图,主要解释下几个过程。

  • 递归解析。一次性完成全部名字到地址的转换。比如baidu.com直接解析到8.8.8.8,不需要经过其他步骤来处理。
  • 反复解析。每次请求一个服务器,请求不通过再换其他服务器。这里我需要说下,一个服务器对应的域名是有限的,所以当域名非常多的时候,会出现当前被请求的服务器并没有找到该域名的情况。而这个过程,会和后面的CNAME记录关联起来,后面再进行描述。
  • MX记录。简而言之,就是你发邮件给谁,是由它来决定的。而它是根据收信人的地址后缀来定位邮件服务器的。
  • CNAME。是双线智能解析和使用CDN必须用到的解析方法,这里和前边的反复解析就对应上了。这里描述下它的场景:

    第3步,其中一个DNS服务器A没有找到对应IP,但是它有CNAME记录,告诉索要IP的Recursive DNS resolver,你想要的域名在另外一个DNS服务器B那里。这个就是反复解析,根据CNAME。

好了,有了上面的基础知识,我们就来了解下,子域名劫持是啥,漏洞原理又是什么。

比如,你申请了一个域名,abc.com,主站域名当然是www.abc.com,之后为了快速开辟一个新的业务,你直接买了阿里云对应的服务,并分配了一个二级域名,shop.aliyun.com。虽然这个域名是你独有的,但是你希望顾客可以通过shop.abc.com来访问到你的新服务,所以你必须将shop.abc.com解析到shop.aliyun.com上,这时候就需要用到CNAME了,这是一个再正常不过的业务场景。

但是,如果有一天你的服务器不在使用了,但CNAME没有删除。而别人接管了shop.aliyun.com,当顾客再次访问到shop.abc.com的时候,就直接跳过shop.aliyun.com了,那么换个角度,而接管(劫持)shop.aliyun.com的人是黑客呢。是不是你的顾客的敏感信息就会被黑客盗走?

这就是子域名劫持的场景和原理。

二、漏洞危害(利用)

1、网页钓鱼

由于顾客通过shop.abc.com访问到了shop.aliyun.com。那么攻击者直接仿造shop.abc.com或者主站的界面诱导顾客操作,比如登录表单,密码表单等,由于浏览器显示的是可信域名,即使具有安全意识的人,也很容易分辨是否存在钓鱼。

2、Cookie盗取

可以在页面写入获取cookie的js方法,受害者一经访问,cookie就会被获取。
以下均是hackerone子域名劫持漏洞的例子,评定都是高危等级:
https://hackerone.com/reports/172137
https://hackerone.com/reports/32825
https://hackerone.com/reports/38007
https://hackerone.com/reports/175070

3、拦截电子邮件

安全研究者Rojan Rijal曾发现了Uber基于SendGrid服务的某个可劫持子域名,之后,利用该子域名,他成功拦截了Uber内部的公司电邮通信,获取了Uber官方$10,000美金的奖励。
翻墙演示视频和文字分析。

三、子域名劫持漏洞出现的条件和分类

这类漏洞出现的前提条件:

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

说白了,可以用这个场景来概括:你nslookup一波,发现一个域名指向CDN或者github,但是访问的时候又是404打不开,暂时可以判定为该子域名指向了一个没有服务的地方,那么你就可以尝试去代替它。

这类漏洞的类型:
按照域名解析类型分可以分为4类

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

直接和间接可以分为两类:

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

四、如何挖掘

顶级的白帽会实时关注目标网站的任何变动,所以我们要让这些资产的发现变得自动流程化。

首先是获取到存活的子域名,要让这些过程尽可能地流程化,我会配上相应的工具供大家参考。

子域名的挖掘自动化流程。
子域名有两种方式可以获取,一种是爆破(Bruteforce),另一种是检索。
爆破就不多说了,说说检索。检索是利用DNS解析记录、SSL证书和搜索引擎等外部服务和资源来搜集特定主机的子域名记录。

爆破的话要注意泛域名模式,什么叫泛域名模式?就是所有的子域名都会解析到一个IP地址下,那此时它就拥有了无限的子域名,爆破会有很多误报。如何检查是不是开启了泛域名?输入一个不可能存在的前缀可以判断。比如:

host randomifje8z193hf8jafvh7g4q79gh274.example.com

这里工具推荐SubFinder,它兼具检索和爆破功能。

收集到了子域名,接下来需要判断他们是不是存活着的。
可以考虑子域名截图工具,EyeWitness和msg。
可以对页面进行探测,这里着重推荐meg,它基于go编写,速度快,轻量级。

如何证明其漏洞存在?
1、使用aquatone来初步验证是否存在漏洞,如果存在vulnerable的话。

aquatone-takeover --domain live.txt --threads 500

2、找到了可能会被劫持的子域名,然后打开你的阿里云或者其他服务器进行dns解析,完成CNAME指定到你自己的服务。

如果对方是指向github但是不能访问,那么你就可以在github上创建一个页面,并将它的子域名接管到你这来。
在被劫持的子域名上部署好自己的网页,尽量简单,一个图片即可。

子域名劫持漏洞详解、挖掘和防护相关推荐

  1. DNS劫持与路由器DNS劫持漏洞详解(附防护方法)

    一.DNS劫持介绍 何为DNS劫持,这恐怕还要从DNS的功能说起 (一)DNS功能 DNS中文全称为域名系统(英文:DomainNameSystem,缩写:DNS)是互联网的一项服务.它作为将域名和I ...

  2. 89.网络安全渗透测试—[常规漏洞挖掘与利用篇5]—[文件包含漏洞详解实战示例]

    我认为,无论是学习安全还是从事安全的人,多多少少都有些许的情怀和使命感!!! 文章目录 一.文件包含漏洞详解 1.文件包含漏洞相关概念 2.PHP文件包含漏洞相关概念 3.PHP文件包含漏洞利用:`构 ...

  3. OWASP-TOP10漏洞详解以及防护方案

    OWASP TOP 10 漏洞详解以及防护方案 OWASP介绍 官网:http://www.owasp.org.cn/ OWASP TOP10 指出了 WEB 应用面临最大风险的 10 类问题,是目前 ...

  4. XSS(跨站脚本)漏洞详解之XSS跨站脚本攻击漏洞的解决

    XSS(跨站脚本)漏洞详解 XSS的原理和分类 跨站脚本攻击XSS(Cross Site Scripting),为了不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆, ...

  5. android WebView详解,常见漏洞详解和安全源码(下)

    上篇博客主要分析了 WebView 的详细使用,这篇来分析 WebView 的常见漏洞和使用的坑.  上篇:android WebView详解,常见漏洞详解和安全源码(上)  转载请注明出处:http ...

  6. 墨者学院SQL手工注入靶场漏洞详解

    墨者学院SQL手工注入靶场漏洞详解 目录 靶场地址 步骤详解 目录 靶场地址 该靶场由墨者学院安全工程师"墨者"所搭建,靶场环境为Nginx+PHP+MySQL,启动靶场只需1墨币 ...

  7. Pikachu靶场之文件上传漏洞详解

    Pikachu靶场之文件上传漏洞详解 前言 文件上传漏洞简述 什么是文件上传漏洞? 文件上传的原理 文件上传漏洞有哪些危害 文件上传漏洞如何查找及判断 文件上传如何防御 文件上传漏洞绕过的方式有哪些 ...

  8. android WebView详解,常见漏洞详解和安全源码(上)

    这篇博客主要来介绍 WebView 的相关使用方法,常见的几个漏洞,开发中可能遇到的坑和最后解决相应漏洞的源码,以及针对该源码的解析.  由于博客内容长度,这次将分为上下两篇,上篇详解 WebView ...

  9. linux 子域dns,linux下搭建DNS子域及相关授权详解

    linux下搭建DNS子域及相关授权详解forward功能是本地无法解析的域名,转发给指定DNS服务器 forward only; 所有无法解析的域名,都转发给指定DNS服务器,必须有解析结果 for ...

  10. mybatis获取表名_mybatis plus 的动态表名的配置详解

    mybatis plus简介 详见mybatis plus的官网 业务要求 业务上要求存储数据的时候根据某个字段动态的选择数据要存储的表. 如根据code字段: code->[1001,1002 ...

最新文章

  1. 硬件基础:电阻作用及产品应用
  2. Serendipity解决IE缓存为0
  3. Ubuntu20.04 编译运行apue.3e 避坑指南
  4. [react] 说说react diff的原理是什么
  5. 文件管理系统源码_基于Spring Cloud微服务构建多平台功能完善小说弹幕网站源码分享...
  6. Linux DVD 转 MP4 – HandBrake – Copy a DVD to MP4 or MKV file
  7. sql azure 语法_Azure SQL数据同步–在Azure SQL数据库之间复制数据和架构更改
  8. 服务器性能低下时正确的处理方法
  9. 【原创】Mac 工作协同之文件共享问题
  10. win10如何做到在指定目录下打开cmd命令窗口
  11. 挑战华为社招:java工程师都要掌握哪些技术
  12. 计算机网络不同层中用于将网络互连的中间设备——转发器、网桥(桥接器)、路由器、网关
  13. 为知笔记Markdown笔记里的插入代码怎么实现/为知笔记怎怎么插入代码段
  14. IEC60870-5-104的解析方法
  15. 不同场所最低疏散净宽度汇总
  16. 右键新建没有Word怎么办?右键新建添加Word方法!
  17. 成为明星程序员的独特秘密
  18. WooCommerce Bookings 电子商务预订系统评测 – 创建WordPress预订系统有多好?
  19. Linux下实现Mysql的本地备份,异地备份
  20. 打造自己的安卓Metro界面

热门文章

  1. 文言计算机语言,文言文考试也编程,文言语言!!!(附c/c++自译)
  2. 多年来我的创业感悟,穷人与富人的赚钱思维模式丨国仁猫哥
  3. 基于眼电信号(EOG)的眨眼检测算法
  4. python+vue+elementui健身房网站管理系统django-pycharm项目
  5. rrd文件导入mysql_RRDtool 系列连载-5 :查询 RRD 数据库信息
  6. c c 语言写的四六级词汇系统,2020年6月英语四级考试大纲词汇:C
  7. nginx下的一级域名跳转到二级域名的配置
  8. 打地鼠游戏的制作与心得
  9. 计算机有的应用连不上网络设置,电脑应用程序错误连不上网
  10. CF1380D Berserk And Fireball 题解