CDN 2021 完全攻击指南


0x01 常见 CDN 服务商

一、国内 CDN 服务商

阿里云 CDN
百度云 CDN
七牛云 CDN
又拍云 CDN
腾讯云 CDN
Ucloud
360 CDN
网宿科技
ChinaCache
帝联科技

二、国外 CDN 服务商

CloudFlare
StackPath
Fastly
Akamai
CloudFront
Edgecast
CDNetworks
Google Cloud CDN
CacheFly
Keycdn
Udomain
CDN77

0x02 判断网站是否使用了CDN

  • 反查域名 IP,看结果是否有大量不相关的域名存在
  • 观察请求响应的返回数据的头部,是否有 CDN 服务商标识
  • 使用超级 ping,通过不同定位地点的 ping 测试,看返回的 IP 是否不同
  • 判断 IP 是否在常见 CDN 服务商的服务器 IP 段上
  • 若 asp 或者 asp.net 网站返回头的 server 不是 IIS、而是 Nginx,则多半使用了nginx反向代理到 CDN
  • 利用 Nslookup 查询域名,看是否返回多个应答 IP

0x03 如何绕过 CDN 朔源网站真实 IP

一、通过查询 DNS 记录 / IP 历史记录 / 子域名 等数据记录

  • 很多网站只给关键的域名或者主域名做了 CDN,其下很多子域名没有使用 CDN 服务,所以我们可以通过查询目标网站的根域名、二级域名、三级域名甚至多级子域名来获得真实IP。不过有时候查出来的并不是真实 IP,可能仅仅做了 A 记录 ,这种情况下可以继续扫描同 C 段的 IP 和端口,然后逐个探测是否为目标网站。
  • 在网站使用 CDN 服务之前,解析的是真实IP,所以可以查询 DNS 历史记录,看是否能探测到使用 CDN 之前的 IP 。
  • DNS 解析记录中重点关注 TXT 记录和 SPF 记录,是否有泄露真实IP。

1、在线查询平台

1.SecurityTrails (https://securitytrails.com/

SecurityTrails(前身为 DNS Trails)拥有大约3.5万亿DNS记录,3亿whois记录,8亿SSL证书记录以及超过4.5亿子域的记录数据。自2008年以来,网站每天都收集和更新海量数据。

SecurityTrails 是我最常用的平台之一,免费、精准,数据量极其庞大,足够支撑日常。

DNS 记录:

IP历史:

子域名:

2.Complete DNS(https://completedns.com/

Complete DNS 拥有超过 22 亿个DNS变更记录,提供API,支持同时进行多域名/IP查询。

3.WhoISrequest (https://whoisrequest.com/

WhoISrequest 这个网站自2002年以来一直在跟踪和记录DNS历史变更,数据底蕴很足。

这种时间线设计的UI风格很不戳,点赞。

4.Whoxy(https://www.whoxy.com/

Whoxy 拥有爬取超过 3.65亿个子域数据,该网站 API 调用非常方便,以 XML 和 JSON 格式返回数据。

5.微步Threatbook(https://x.threatbook.cn/

Threatbook 微步在线针对 IP、域名 进行综合查询威胁情报、历史记录、子域名解析、DNS解析等等信息,支持 API 查询,非常方便。

6.Netcraft(https://netcraft.com/

Netcraft 不用多说了吧,很多人都知道,不过仁者见仁智者见智吧,经过时代的变迁,Netcraft 也不是曾经的那个少年了,这里只是提一下,仅供参考。

7.Viewdns(https://viewdns.info/

Viewdns 可以说是非常的简洁直观了,就算你不懂任何英文,我相信你也看的懂,至少你知道在哪里输入对吧。响应速度也是非常快了,首页一目了然,集成了超多的查询功能。

找你需要的功能查询就好,用网站提供的 API 也可以

8.Whoisxmlapi(https://reverse-ip.whoisxmlapi.com/

Whoisxmlapi 数据库包含了超过1.4亿多个域名生态数据,用来反查 IP 和 DNS 数据,在绕过 CDN 时候做反向对比非常有用。网站和 whoxy 一样,也是以 XML 和 JSON 格式返回数据,支持自定义。

9.Dnsdb(https://dnsdb.io/

Dnsdb 功能非常强大,老平台了,也是我常用平台之一。

搜索前可以先简单学习一下搜索语法:

觉得难?不想学?那也没关系,站长已经考虑到你这种懒人情况了,首页就有给懒人准备的搜索构造器,十分友好:

10.SubDomainTools(https://ruo.me/sub

在线子域名查询,支持实时模式和后台模式,不阻塞前端线程,不占CPU,小测试的时候非常方便。

2、IOT 物联网络空间测绘搜索引擎

1.Censys(https://censys.io/

Censys 可帮助安全从业人员发现可从Internet访问的设备,包括 IP 地址、开放端口、物理定位、域名信息、托管服务商、SSL 证书 等等数据,从中发现需要的信息追踪到网站真实的 IP 地址。

2.FOFA(https://fofa.so/

FOFA 可以迅速进行网站资产匹配,加快后续工作进程,如漏洞影响范围分析,应用分布统计,应用流行度排名统计等。FOFA 非常友好,即使免费,也可以查询足够多的数据量,只要你不是商用或者大需求用户,是不需要开会员的。

3.Shodan(https://www.shodan.io/

Shodan 被称为互联网上最强大的搜索引擎,主要是用来搜索网络空间中在线设备的,可以通过 Shodan 搜索指定的设备,或者搜索特定类型的设备,它可以帮助安全研究人员找到有关他们所研究目标的有用信息。

语法特别强大,建议搜索前好好浏览一下筛选器文档,可以达到事半功倍的效果。

4.Zoomeye

Zoomeye,钟馗之眼,知道创宇打造的宇宙级网络空间搜索引擎,Shodan 侧重于主机设备,Zoomeye 则偏向于 Web 发现。

3、工具和脚本

1.SubDomainsBrute

项目地址:https://github.com/lijiejie/subDomainsBrute

SubDomainsBrute 是通过纯 DNS 爆破来寻找子域名,为了最大提升脚本效率,采用协程+多进程的方式进行爆破。Python 3.5 以上需要安装 aiodns 库进行异步查询,python 2 需要安装 dnspython 库和 gevent 协程库。

之前是不支持扫描泛解析域名的,10月份作者更新已经支持泛解析,使用 -w 参数。

如图,我们针对一个泛解析的域名进行爆破,subDomainsBrute 会提示 any-sub 错误,之后使用 -w 参数开启泛解析强制爆破:

2.ESD

项目地址:https://github.com/FeeiCN/ESD

相比于的暴力收集手段,ESD 在很多方面有独特的想法。

基于RSC(响应相似度对比)技术对泛解析域名进行枚举。
基于aioHTTP获取一个不存在子域名的响应内容,并将其和字典子域名响应进行相似度比对,超过阈值则说明是同个页面,否则为可用子域名,并对最终子域名再次进行响应相似度对比。
基于AsyncIO异步协程技术对域名进行枚举。
基于AsyncIO+aioDNS将比传统多进程/多线程/gevent模式快50%以上。
解决各家DNS服务商对于网络线路出口判定不一致问题。
解决各家DNS服务商缓存时间不一致问题。
解决随机DNS问题。
根据网络情况自动剔除无效DNS,提高枚举成功率。
ESD 通过使用文本相似度,判断阈值的方法来过滤泛解析,这种方法现在看来很笨重,我们可以自己修改脚本,否则因此会导致机器的内存、CPU都负荷,对机器性能要求比较高,且不支持 python2。

python3 环境下通过 pip 直接安装:

$ pip install esd

基本用法(项目官方给出):

# 扫描单个域名
esd -d qq.com

# debug模式扫描单个域名
esd=debug esd -d qq.com

# 扫描多个域名(英文逗号分隔)
esd --domain qq.com,tencent.com

# 扫描单个域名且过滤子域名中单个特定响应内容
esd --domain mogujie.com --filter 搜本店

# 扫描单个域名且过滤子域名中多个特定响应内容
esd --domain mogujie.com --filter 搜本店,收藏店铺

# 扫描文件(文件中每行一个域名)
esd --file targets.txt

# 跳过相似度对比(开启这个选项会把所有泛解析的域名都过滤掉)
esd --domain qq.com --skip-rsc

# 使用搜索引擎进行子域名搜索(支持baidu、google、bing、yahoo,使用英文逗号分隔)
esd --domain qq.com --engines baidu,google,bing,yahoo

# 平均分割字典,加快爆破
esd --domain qq.com --split 1/4

# 使用DNS域传送漏洞获取子域名
esd --domain qq.com --dns-transfer

# 使用HTTPS证书透明度获取子域名
esd --domain qq.com --ca-info

但是实际上我们从源码出发,发现很多功能作者目前并未实现:

parser = OptionParser('Usage: python ESD.py -d feei.cn -F response_filter -e baidu,google,bing,yahoo -p user:pass@host:port')
        parser.add_option('-d', '--domain', dest='domains', help='The domains that you want to enumerate')
        parser.add_option('-f', '--file', dest='input', help='Import domains from this file')
        parser.add_option('-F', '--filter', dest='filter', help='Response filter')
        parser.add_option('-s', '--skip-rsc', dest='skiprsc', help='Skip response similary compare', action='store_true', default=False)
        parser.add_option('-S', '--split', dest='split', help='Split the dict into several parts', default='1/1')
        parser.add_option('-p', '--proxy', dest='proxy', help='Use socks5 proxy to access Google and Yahoo')
        parser.add_option('-m', '--multi-resolve', dest='multiresolve', help='Use TXT, AAAA, MX, SOA record to find subdomains', action='store_true', default=False)
        parser.add_option('--skey', '--shodan-key', dest='shodankey', help='Define the api of shodan')
        parser.add_option('--fkey', '--fofa-key', dest='fofakey', help='Define the key of fofa')
        parser.add_option('--femail', '--fofa-email', dest='fofaemail', help='The email of your fofa account')
        parser.add_option('--zusername', '--zoomeye-username', dest='zoomeyeusername', help='The username of your zoomeye account')
        parser.add_option('--zpassword', '--zoomeye-password', dest='zoomeyepassword', help='The password of your zoomeye account')
        parser.add_option('--cuid', '--censys-uid', dest='censysuid', help="The uid of your censys account")
        parser.add_option('--csecret', '--censys-secret', dest='censyssecret', help='The secret of your censys account')
        (options, args) = parser.parse_args()

不难发现 通过 HTTPS 证书透明度、域传送漏洞 等功能均未实现。

ESD 目前仅支持 Linux 系统,这是其源码决定的,不过我们可以 DIY 让它支持 windows

可以看到,engine.py 引擎脚本中,写死了目录是 /tmp/esd ,如果要在 windows 上使用,我们只需要替换这里为 windows 的输出目录即可。

 # write output
        tmp_dir = 'C:\\temp\\'
        if not os.path.isdir(tmp_dir):
            os.mkdir(tmp_dir, 0o777)
        output_path_with_time = '{td}/.{domain}_{time}.esd'.format(td=tmp_dir, domain=self.domain, time=datetime.datetime.now().strftime("%Y-%m_%d_%H-%M"))
        output_path = '{td}/.{domain}.esd'.format(td=tmp_dir, domain=self.domain)
        if len(self.data):
            max_domain_len = max(map(len, self.data)) + 2
        else:
            max_domain_len = 2
        output_format = '%-{0}s%-s\n'.format(max_domain_len)
        with open(output_path_with_time, 'w') as opt, open(output_path, 'w') as op:
            for domain, ips in self.data.items():
                # The format is consistent with other scanners to ensure that they are
                # invoked at the same time without increasing the cost of
                # resolution
                if ips is None or len(ips) == 0:
                    ips_split = ''
                else:
                    ips_split = ','.join(ips)
                con = output_format % (domain, ips_split)
                op.write(con)
                opt.write(con)

3.Layer 子域名挖掘机

项目地址:https://hub.fastgit.org/euphrat1ca/LayerDomainFinder/releases/tag/3

Seay 法师的作品,很早就有了,非常强大的一款 windows 上的 GUI 图形化工具,经历了数个版本的迭代,官方最新版是5.0,当然还有不计其数的网友自定义修改版本在野流传。

4.Xray

项目地址:https://github.com/chaitin/xray

xray 是一款强大的安全评估工具,一款自动化扫描器,我们可以用其自带的 subdomain 子域名发掘功能来针对性探测:

太多了慢慢写,大家不要急

评论

  1. ki9mu
    Windows Chrome 91.0.4472.77
    3月前
    2021-6-15 18:59:28

    该写文章了,天天摸鱼

  2. ki9mu
    Windows Chrome 89.0.4389.90
    6月前
    2021-3-26 17:59:50

    没有arl、ary差评

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇