电脑疯子技术论坛|电脑极客社区

微信扫一扫 分享朋友圈

已有 2398 人浏览分享

一次成功的子域劫持

[复制链接]
2398 0
本帖最后由 zhaorong 于 2021-7-3 14:38 编辑

刚才就先介绍一下子域名劫持的文章 但是一直没有遇到过 直到最近的测试中真正遇到了 下面从
什么是目标解析开始 大体一下一下子市场捕捉漏洞的成因 浅思思路 最后通过了一个的案例来将
整个漏洞做一个工具。

域名解析

域名解析也叫DNS解析,是将需要访问域名解析网络中的IP地址。记住繁琐的IP地址 而是可以通过一个通俗易懂
的域名来访问相应的网站。在域名解析中 一个域名只能对应一个IP地址 但是一个IP地址可以对应多个域名。
用于解析域名的协议域名解析协议 也就是DNS协议。

域名解析的过程

1、在浏览器中输入www.ichunqiu.com域名 系统会先检查自己本地的主机文件是否有这个地址
映射关系如果有就先调用这个IP地址映射 完成当前域名的解析。
2、如果主机里没有这个域名的映射,则查找本地DNS解析器缓存 是否有这个网址映射关系 如果有 直接返回 完成域名解析。
3,如果主机与本地DNS解析器缓存都没有相应的网址映射关系 首先会在TCP/IP参数中设置首选的DNS服务器 在我们
叫它本地DNS服务器 这个服务器收到查询时 如果要查询的域名,在本地配置区域资源中 则返回解析结果给客户机
完成域名解析 此解析具有权威性。

4,如果要查询的域名,不由本地DNS服务器区域解析 但该服务器已缓存了此网址映射关系
则调用这个IP地址映射完成域名解析,此解析不具有权威性。
5,如果本地DNS服务器本地区域文件与缓存解析都失效 则根据本地DNS服务器的设置 是否设置转发器 进行查询
如果未用转发模式 本地DNS就把请求发至13台根DNS 根DNS服务器收到请求后会判断这个域名(.com)谁来授权管理
并会返回一个重点该场所市场服务器的一个IP。本地DNS服务器收到IP信息后 将联系负责.com域的这台服务器。这台负
责.com域的服务器收到请求后 如果自己无法解析 就会找一个管理.com域的下一级DNS服务器地址 ichunqiu.com 给本
地DNS服务器。当本地DNS服务器收到这个地址后,就会找ichunqiu.com域服务器 重复上面的动作,进行查询 直到找
到www.ichunqiu.com主机。

6、如果用议论模式 此DNS服务器会把请求转发至上一级DNS服务器 由上一级服务器进行 ​​上一级服务器如果无法
解析或找根DNS或把转请求转至上级 继续循环。不管是本地DNS服务器用的是评论 还是根提示 最终结果返回给
本地DNS服务器 抓住DNS服务器再返回给把。

CNAME解析

在DNS协议中 存在多种记录类型 比如最常见的记录是把某个主机名解析到服务器的IP;NS记录:域名服务器记录如果
需要把子放在其他DNS服务器解析商 就需要添加NS记录;CNAME记录:是主机名到主机名的映射对方你拥有我是猪!.com
和bbb.com 你想对aaa.com的访问权限到bbb.com 就可以通过C记录,当访问aaa.com时,会解析到bbb.com 然后通过
A记录 解析到bbb.com的IP地址。

子域名劫持漏洞成因

子域名劫持的前提解析就是使用CNAME某些时候提供的服务会在提供服务的服务 例如在Shopify上申请了服务它
给你了test.shopify.com作为你的服务的地址  但是你有自己的域名了,希望已经有其他人通过你的域名来访问自
己注册的服务 然后就可以在aa.com 上通上自己的 CNAME 记录来实现 添加了一个商店。 aaa.com的子域 类型
为CNAME 类型记录为test用户访问shop.aa.com会解析到shop.testify.com。

如果开通的服务了 或者是关闭了服务 而不是在域名上删除自己的CNAME记录,指甲攻击者申请一个test.shopify.com
的服务域名 并且不会放上自己的内容,那么当用户访问shop.aaa.com时,访问的就是攻击者的页面。点登录并且cook
ies在整个域中共享,攻击者可以通过引入用户访问具有子域劫持的域名来获取用户的cookies。
综合来看 形成子域劫持需要的前提条件是
子域名shop.aaa.com CNAME记录 并且存在管理域 例如test.shopify.com
test.shopify.com到期或者服务关闭 其他用户可以在服务申请当前域名
shop.aaa.com没有删除之前的CNAME记录

DNS记录查询工具

通过上面成因的解释 可以详细地说明子域名劫持漏洞 首先需要有CNAME记录例如shop.aaa.com可以通过
查看该子域的DNS来记录判断是否具有CNAME记录 这里可以使用的查询命令有nslookup host dig

nslookup 命令

备用查询DNS的记录 查看域名解析情况
可以使用[nslookup子域名dns-server]来直接查询域名的解析情况 例如

161819gtpju1jbt3paa9ty.png

使用[nslookup -qt=type 子域名dns-server]来查询特定类型的记录 例如查询CNAME记录

9998.png

上面命令自己的dns-server是使用的DNS服务器 不加的时候是使用默认的DNS
服务器 可以指定 例如使用8.8.8.8

9997.png


主机命令

主机命令是常用的分析域名查询工具 是一个DNS查找实用程序 用于查找域名的IP地址
它还执行反向查找 查找与IP地址关联的域名。
语法格式
  1. host [OPTIONS] {name} [server]
复制代码


  1. host: illegal option -- h
  2. Usage: host [-aCdilrTvVw] [-c class] [-N ndots] [-t type] [-W time]
  3.             [-R number] [-m flag] [-p port] hostname [server]
  4.        -a is equivalent to -v -t ANY
  5.        -A is like -a but omits RRSIG, NSEC, NSEC3
  6.        -c specifies query class for non-IN data
  7.        -C compares SOA records on authoritative nameservers
  8.        -d is equivalent to -v
  9.        -l lists all hosts in a domain, using AXFR
  10.        -m set memory debugging flag (trace|record|usage)
  11.        -N changes the number of dots allowed before root lookup is done
  12.        -p specifies the port on the server to query
  13.        -r disables recursive processing
  14.        -R specifies number of retries for UDP packets
  15.        -s a SERVFAIL response should stop query
  16.        -t specifies the query type
  17.        -T enables TCP/IP mode
  18.        -U enables UDP mode
  19.        -v enables verbose output
  20.        -V print version number and exit
  21.        -w specifies to wait forever for a reply
  22.        -W specifies how long to wait for a reply
  23.        -4 use IPv4 query transport only
  24.        -6 use IPv6 query transport only
复制代码

查询www.baidu.com的DNS记录并显示过程详细信息
  1. $ host -a www.baidu.com
  2. Trying "www.baidu.com"
  3. ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 49888
  4. ;; flags: qr rd; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
  5. ;; QUESTION SECTION:
  6. ;www.baidu.com.                 IN      ANY
  7. ;; ANSWER SECTION:
  8. www.baidu.com.          0       IN      CNAME   www.a.shifen.com.
  9. Received 74 bytes from 172.27.224.1#53 in 20 ms
复制代码

查询指定类型的DNS记录
  1. $ host -t CNAME www.baidu.com
  2. www.baidu.com is an alias for www.a.shifen.com.
复制代码

挖掘命令

挖掘命令是解决
单个主机的信息挖掘命令默认的输出信息丰富 大概可以分为5个部分。
dig 命令的版本和输入的参数。
服务返回的一些技术详情 比较重要的是状态。如果状态的值为NOERROR 则说明本次查询成功结束。
“QUESTION SECTION”显示我们要查询的域名。
“ANSWER SECTION”是查询到的结果。
本次查询的一些统计信息 比如用了很多时间 有哪些DNS服务器 在什么时间进行的查询等等。

9996.png

默认情况下挖掘命令只查询一张记录 可以在下面添加类型来特定的查询
  1. $ dig www.baidu.com CNAME

  2. ; <<>> DiG 9.16.6-Debian <<>> www.baidu.com CNAME
  3. ;; global options: +cmd
  4. ;; Got answer:
  5. ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 53008
  6. ;; flags: qr rd ad; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
  7. ;; WARNING: recursion requested but not available

  8. ;; QUESTION SECTION:
  9. ;www.baidu.com.                 IN      CNAME

  10. ;; ANSWER SECTION:
  11. www.baidu.com.          0       IN      CNAME   www.a.shifen.com.

  12. ;; Query time: 30 msec
  13. ;; SERVER: 172.27.224.1#53(172.27.224.1)
  14. ;; WHEN: Sun Jun 13 22:16:34 CST 2021
  15. ;; MSG SIZE  rcvd: 74
复制代码

挖掘命令可以设置使用特定的DNS服务器来进行查询
  1. $ dig @8.8.8.8 www.baidu.com

  2. ; <<>> DiG 9.16.6-Debian <<>> @8.8.8.8 www.baidu.com
  3. ; (1 server found)
  4. ;; global options: +cmd
  5. ;; Got answer:
  6. ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 30073
  7. ;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1

  8. ;; OPT PSEUDOSECTION:
  9. ; EDNS: version: 0, flags:; udp: 512
  10. ;; QUESTION SECTION:
  11. ;www.baidu.com.                 IN      A

  12. ;; ANSWER SECTION:
  13. www.baidu.com.          442     IN      CNAME   www.a.shifen.com.
  14. www.a.shifen.com.       39      IN      CNAME   www.wshifen.com.
  15. www.wshifen.com.        39      IN      A       103.235.46.39

  16. ;; Query time: 90 msec
  17. ;; SERVER: 8.8.8.8#53(8.8.8.8)
  18. ;; WHEN: Sun Jun 13 22:19:20 CST 2021
  19. ;; MSG SIZE  rcvd: 111
复制代码

上面的三个命令是域名信息的唯一命令 子域名劫持漏洞的渗透工具很多都有这三个命令。

子域名劫持思路

想要发现子域名解析漏洞 首先需要收集目标的子域名 可以关注这些子域名的变化 收集子域名的方式很多也需要很多
优秀的工具进行查询,例如可以全部 层子域名解析机 Subdomain3 Sublist3r等 还有一些其他的方法来进行收集例
如在之前的文章介绍。收集完成子域名后 有两种方式来这些子域名是否存在子域名劫持漏洞 一种思路是访问这些域
名根据网页内容进行判断。页面内容时如下 可能存在github子域名劫持。

161821v1ct9qlc1do33t3b.png

对于可能存在子域名劫持的页面 这里有项目已经完成整理和收集 can-i- takeover -xyz对许多可能存在子
域名劫持的页面进行了整理,有其都知道以及相关的文章。
另外一个检测的思路就是检查域名的DNS记录 如果存在可疑的记录 那么就可以通过手工验
证的方法是来检测漏洞是否存在。

钻孔工具

子404

Sub 404是一个使用python写的工具 利用大量的批量检查子劫持漏洞。它会通过404页面的来判断是否具有
子域劫持漏洞 另外它可以通过获取CNAME 来进行检测 这个工具使用的前提是已经安装了 sublist3r 和 subf
inder。如果不想再安装这工具 可以使用 docker 来运行 sub404。

Docker运行方式
  1. https://github.com/r3curs1v3-pr0xy/sub404.git
  2. cd sub404
  3. docker build -t sub404 .
  4. docker run --rm sub404 -h
复制代码

9993.png

  1. docker run --rm sub404 -d xxxxx.com   #这里使用docker方式运行并且只
  2. 测试一个域名的子域名劫持漏洞
复制代码

9992.png

在运行过程中可能会报告一个错误 这是sublist3r的错误 主要是python版本的问题可以导致的 可以忽悠
也可以自己动手改一下 工具是很厉害的 检测速度也很快 如果自己已经收了子域名 可以将子借出一个文
本文件里 使用-f选项来检测文件中的子域名。
NtHiM(https://github.com/TheBinitGhimire/NtHiM )
NtHiM 同样可以针对特定的目标和特殊进行测试


9991.png

国外媒体报道了两个我在国内子劫持漏洞的工具 还有很多其他的漏洞检测工具具有类似的
功能甚至是自己可以根据经验写一个自动化的验证工具。

子域名劫持漏洞实例

声明:明确文章发出时 该漏洞已提交自主并且修复
在一次网络测试过程中 获得了要测试站点的主域 这里就暂且用xxxxxx.com来表示 首先在资产收集的过程中就
收集了一些域名 这里就用了一些比较常见的工具 比如综合层子域名缩小机获取了大量子域名之后再考虑进行一
些域名抢占漏洞 这里就在子子了一些工具测试 其中就有了上面介绍的两个工具 工具测试后发现了一个提示有漏
洞的子域 这里就叫hacker.xxxxxx.com,然后通过访问 发现了一个网页的提示信息如图所示。

9990.png

通过查看can-i-take-over-xyz中介绍的可能存在子域名劫持的页面的提示信息 通过这个提示
[https://github.com/EdOverflow/can-i-take-over-xyz/issues/46 ]可以判断可以对其进行劫持另外
使用dig命令查看hacker.xxxxxx.com的CNAME记录 可以看到具有myshopify的cname记录

999.png

然后对试用hacker.xxxxxx.com进行子域名抢购 首先需要注册一个myshopify的账号 这个网站提供的服务是收费
的先注册可以试用几天。这里创建的域名是test.myshopify.com 这个可以定义自己页面的内容 我只写了一点可
以验证的内容 写好后修改页面的信息,将其连接到hacker.xxxxxx.com

161830k2q9tz7i00sb4xi0.png

这里就将先发现有漏洞的域名查询 它会验证是否可以与该域名连接验证的方式
就是该域名是否具有shops.myshopify.com的cname查询。

998.png

修改保存后,就完成了这些子域的劫持 单独去访问hacker.xxxxxx.com 访问到的就是
创建自己页面的内容。

997.png

总结

本文从领域解析的过程和子域劫持漏洞产生的原因来概括的介绍一些漏洞原理 还可以通过工具的介绍和
抽象思路的介绍来展示的重点该漏洞的方式和 最终通过实例 来对一个漏洞的子域名的验证过程有详细介
绍 子域名劫持的方式还有很多种 甚至有对邮件内容进行劫持,但由于某些接触的,所以没有可以多的介
绍希望有经验的师傅可以一起分享一下经验。

您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

关注

0

粉丝

9021

主题
精彩推荐
热门资讯
网友晒图
图文推荐

Powered by Pcgho! X3.4

© 2008-2022 Pcgho Inc.