CDN绕过技术总汇

news2024/11/26 23:24:21

本文首发于合天网安实验室

首发链接:https://mp.weixin.qq.com/s/9oeUpFUZ_0FUu6YAhQGuAg

近日HVV培训以及面试,有人问了CDN该如何绕过找到目标真实IP,这向来是个老生常谈的问题,而且网上大多都有,但是有些不够全面,今天把绕过CDN全理一理。术语叫做“深入浅出”。

CDN简介

定义

内容分发网络(英语:Content Delivery Network或Content Distribution Network,缩写:CDN)是指一种透过互联网互相连接的电脑网络系统,利用最靠近每位用户的服务器,更快、更可靠地将音乐、图片、视频、应用程序及其他文件发送给用户,来提供高性能、可扩展性及低成本的网络内容传递给用户。

CDN是利用缓存技术,解决如何将数据快速可靠从源站传递到用户的问题。用户获取数据时,不需要直接从源站获取,通过CDN分发,用户可以从一个较优的服务器获取数据,从而达到快速访问,并减少源站负载压力的目的(负载均衡)

工作过程

  1. 用户在浏览器输入域名,先向DNS服务器发送请求
  2. DNS服务器将域名解析权交(通过CNAME)给CDN专用DNS服务器
  3. 客户端根据返回的ip访问CDN负载均衡设备
  4. 负载均衡设备根据当前的负载情况和用户所需内容,返回合适的ip
  5. 客户端最后根据ip访问对应的CDN缓存服务器

优点

  1. 缓解原服务器访问压力
  2. 解决互联互通难题
  3. 解决网站突发流量的问题
  4. 合理利用互联网资源
  5. 全面预防单点故障
  6. 改善用户的访问的质量和体验
  7. 提供全面、准确、和详细的数据统计
  8. 有效的防治黑客攻击源站

适用范围

一般来说以资讯、内容等为主的网站,具有一定访问体量的网站

  • 静态内容(html、js、css、image等,如图床)
  • 视音频、大文件下载,分发加速:哔哩哔哩、腾讯等视频,百度云盘、蓝奏云等
  • 视频直播加速:斗鱼、淘宝、虎牙直播
  • 移动应用加速:移动app内图片、页面、短视频、UGC等内容,小程序等

像直播这一类必有CDN,因为一个网站直播流涌入大量用户,现在任何一家直播平台都没有直接负载的服务器能力。看直播再快的网速都有一定延迟的原因之一就是,需要在CDN里缓存一部分,用户从CDN里观看。

判断是否存在CDN

方法一:PingPingPing

不同地区对应着不同的CDN中心,所以使用不同站点的ping服务可分配到不同的CDN。这很简单,使用各种多站点ping服务来检查对应的IP地址是否唯一。如果不是唯一的,则使用大多数 CDN。多站Ping网站为:

http://ping.chinaz.com/
http://ping.aizhan.com/
http://tools.ipip.net/ping.php (强烈推荐这个,这个默认多站ping,真的很多)

方法二:nslookup

使用 nslookup 进行检测,原理同上,如果返回域名解析对应多个 IP 地址多半是使用了 CDN。

有 CDN 的示例:

> ctfking.com
服务器:  public1.alidns.com
Address:  223.5.5.5

非权威应答:
名称:    d831e3eec87f7d3c02a6-mini-l2.qcloudzygj.com
Addresses:  106.55.85.170
          106.55.85.167
          106.55.86.71
Aliases:  ctfking.com
          d14ca549ac628ef817e7beaa5095976f.qcloudwzgj.com

无CDN的示例:

> nbufe.edu.cn
服务器:  public1.alidns.com
Address:  223.5.5.5

名称:    nbufe.edu.cn

方法三:工具

CDN Finder

CDN绕过

方法一:查询DNS解析记录

1.查看IP与域名绑定的历史记录。使用 CDN 之前可能有记录。相关查询网站为:

Dnsdb

微步在线

Netcraft

IPIP(没错又是这个网站,它太猛了)

2.借助Securitytrails平台(https://securitytrails.com/)

攻击者可以查明真实的原始IP。他们只需在搜索字段中输入站点域名并按 ENTER,即可在左侧菜单中找到“历史数据”。

如何找到隐藏在 CloudFlare 或 Tor 背后的真实原始 IP?

除了过去的 DNS 记录,即使是当前的记录也可能泄露原始服务器 IP。例如,MX 记录是查找 IP 的常用方法。如果网站在与 Web 相同的服务器和 IP 上托管自己的邮件服务器,则原始服务器 IP 将在 MX 记录中。

方法二:查询子域名

毕竟CDN还是不便宜,所以很多站长可能只会在主站或者流量大的子站做一个CDN,而很多小站子站跟主站在同一个服务器或者同C段,此时可以通过子域对应的IP查询,帮助找到真实IP站点。

微步在线

上面提到的微步在线功能强大,黑客只需输入域名即可查找(如baidu.com),点击子域选项即可找到其子域,但免费用户每月只有5次免费查询机会。

Dnsdb

黑客只需要输入baidu.com TYPE:A就可以收集到百度的子域名和IP。

Google

谷歌站点:baidu.com-www 可以看到除WWW以外的子域

子域扫描器

Layer子域名挖掘机和lijiejie的subdomain那个工具都很不错

推荐长亭的xray

方法三:网络空间引擎

fofa、鹰图、Zoomeye、shodan、360

推荐鹰图

只需输入:title:“网站的title关键字”或者body:“网站的body特征”就可以找出收录的有这些关键字的ip域名,很多时候能获取网站的真实ip

方法四:使用SSL证书寻找真实原IP

如果您在 xyz123boot.com 上托管服务,则原始服务器 IP 为 136.23.63.44。CloudFlare 将为您提供 DDoS 防护、Web 应用防火墙和其他一些安全服务,以保护您的服务免受攻击。为此,您的 Web 服务器必须支持 SSL 并具有证书。此时,CloudFlare 与您的服务器之间的通信,就像您与 CloudFlare 之间的通信一样,将被加密(即没有灵活的 SSL)。这看起来很安全,但问题是当你直接连接到443端口(https://136.23.63.44:443)上的IP时,会暴露SSL证书。

此时,如果攻击者扫描0.0.0.0/0,整个互联网,就可以在xyz123boot.com的443端口获取有效证书,进而获取提供给你的web服务器IP。

目前,Censys 工具可以扫描整个互联网。Censys 是用于搜索联网设备信息的新搜索引擎。安全专家可以使用它来评估其实施的安全性,黑客可以使用它作为初步调查。攻击目标和收集目标信息的强大武器。Censys 搜索引擎可以扫描整个互联网。Censys每天扫描IPv4地址空间,搜索所有联网设备并收集相关信息,并返回资源(如设备、网站、证书等)配置和部署的整体报告。

攻击者唯一需要做的就是将上述搜索词转换为实际的搜索查询参数。

xyz123boot.com证书的搜索查询参数为:parsed.names: xyz123boot.com

只显示有效证书的查询参数为:tags.raw:trusted

攻击者可以在 Censys 上实现多个参数的组合,这可以通过使用简单的布尔逻辑来完成。

组合的搜索参数是:parsed.names:xyz123boot.com 和 tags.raw:trusted

Censys 将向您显示在扫描中找到的符合上述搜索条件的所有标准证书。

要一一查看这些搜索结果,攻击者可以通过单击右侧的“探索”来打开一个包含多个工具的下拉菜单。什么在使用这个证书?> IPv4 主机

使用给定的 SSL 证书

如果您是执法人员,并且想找到隐藏在 cheesecp5vaogohv.onion 下的儿童色情网站。最好的办法是找到它的原始IP,这样就可以追踪它的托管服务器,甚至可以找出它背后的运营商和财务线索。

隐藏服务具有 SSL 证书。要查找它使用的 IPv4 主机,只需将“SHA1 指纹”(签名证书的 sha1 值)粘贴到 Censys IPv4 主机搜索中即可找到证书。这种方法很容易找到配置错误的Web服务器。

方法五:使用HTTP头找到真正的原始IP

借助 SecurityTrails 这样的平台,任何人都可以在海量的大数据中搜索自己的目标,甚至可以通过比较 HTTP 标头找到原始服务器。

特别是当用户有一个非常特殊的服务器名称和软件名称时,攻击者更容易找到你。

如果要搜索的数据很多,如上所述,攻击者可以在 Censys 上组合搜索参数。假设您正在与 1500 个 Web 服务器共享您的服务器 HTTP 标头,所有这些服务器都发送相同的标头参数和值组合。而且您还使用新的 PHP 框架来发送唯一的 HTTP 标头(例如:X-Generated-Via: XYZ 框架),目前约有 400 位网站管理员使用该框架。最终,在三台服务器的交汇处,通过人工操作即可找到IP,整个过程仅需几秒。

例如,Censys上用于匹配服务器头的搜索参数为80.http.get.headers.server:,查找CloudFlare服务的网站的参数如下:

80.http.get.headers.server:cloudflare

方法六:利用网站返回的内容寻找真实的原IP

如果原服务器IP也返回网站内容,可以在网上搜索很多相关资料。

浏览网站源代码以查找独特的代码片段。在 JavaScript 中使用具有访问权限或标识符参数的第三方服务(例如 Google Analytics、reCAPTCHA)是攻击者经常使用的一种方法。

以下是从 HackTheBox 网站获得的 Google Analytics 跟踪代码示例:

ga(‘创建’,‘UA-93577176-1’,‘auto’);
80.http.get.body 可以使用:参数通过body/source过滤Censys数据。不幸的是,普通搜索字段有局限性。但是您可以在 Censys 请求研究访问权限,这使您可以通过 Google BigQuery 进行更强大的查询。

Shodan 是一个类似于 Censys 的服务,同样提供 http.html 搜索参数。

搜索示例:https://www.shodan.io/search?query=http.html%3AUA-32023260-1

方法七:使用外地主机解析域名

国内很多CDN厂商因为各种原因只做国内线,国外线路可能几乎没有。这时候我们可能会使用外地主机直接访问真实IP。

方法八:网站漏洞搜索

  1. 目标敏感文件泄露,如phpinfo、GitHub信息泄露等探针
  2. XSS盲打、命令执行反向shell、SSRF等
  3. 无论是社会工程还是其他手段,目标网站获取CDN中的管理员账号,在CDN的配置中可以找到网站的真实IP。

方法九:网站邮件订阅搜索

RSS邮件订阅,很多网站都有自己的sendmail,会发邮件给我们。此时,服务器的真实IP将包含在邮件的源代码中。

方法十:用Zmap扫描全网

要找到xiaix.me网站的真实IP,我们首先从apnic获取IP段,然后使用Zmap的banner-grab扫描出开放80端口的主机进行banner抓包,最后在Host中写入xiaix.me http请求。

方法十一:F5 LTM解码方法

服务器使用F5 LTM进行负载均衡时,也可以通过set-cookie关键字解码得到真实ip,例如:Set-Cookie: BIGipServerpool_8.29_8030=487098378.24095.0000,第一个小数部分的十进制数是487098378取出来,然后转换成十六进制数1d08880a,然后从后往前,取出四位数字,就是0a.88.08.1d,最后再转换成十进制数10.136.8.29,也是最后一个真实IP。

方法十二:网页敏感信息

这条思路来源于Jacko

favicon哈希值

根据网站图标哈希值搜索IP

python2脚本

import mmh3
import requests
response = requests.get('https://example.com/favicon.ico')
favicon = response.content.encode('base64')
hash = mmh3.hash(favicon)
print 'http.favicon.hash:'+str(hash)

去fofa或者shodan上搜索该哈希值

查询格式:

  • fofa:icon_hash="xxx"
  • shodan:http.favicon.hash:xxx

HTML源代码检索查找IP

根据网站页面HTML中特有的字符串去搜索引擎中搜索,如目标页面中由HTML标签为<title>的字段比较特殊,那么可以去FOFA中搜索:

title="xxxxxxxxxxxxxxx"

搜索到的结果会显示IP,访问该IP,若能够正常访问则为真正IP,如果打不开则为CDN或虚拟主机服务器

参考文章:

Jacko CDN

How to bypass the CDN to query the real IP of a website

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/331987.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

中国网站安全形式风险报告

声明 本文是学习2017中国网站安全形势分析报告. 而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 网站漏洞检测分析 网站漏洞的整体形势可以从两个角度分析&#xff1a;一是网站安全检测的自动扫描结果统计&#xff0c;二是网站被报告漏洞情况的统计。…

FreeRTOS队列 | FreeRTOS九

目录 说明&#xff1a; 一、队列简介 1.1、什么是队列 1.2、队列的优势 1.3、队列实现功能 1.4、队列使用了解 1.5、队列特点 1.6、队列阻塞处理 1.7、队列出队入队过程 二、队列结构体 2.1、结构体了解 2.2、共同体了解 2.3、队列结构体存储区 三、队列API函数 …

nacos配置中心搭建

网站每次更新版本都有短暂暂停&#xff0c;影响用户使用&#xff0c;返回经常不可用&#xff0c;需要改进 需要实现高可用&#xff0c;搭建负载均衡&#xff0c;实现jenkinsnacos不停机部署 nacos搭建预备环境准备 64 bit OS&#xff0c;支持 Linux/Unix/Mac/Windows&#x…

vue2.0项目第一部分

论坛项目后端管理系统服务器地址&#xff1a;http://172.16.11.18:9090swagger地址&#xff1a;http://172.16.11.18:9090/doc.html前端h5地址&#xff1a;http://172.16.11.18:9099/h5/#/前端管理系统地址&#xff1a;http://172.16.11.18:9099/admin/#/搭建项目vue create . …

JavaScript 变量提升

文章目录JavaScript 变量提升JavaScript 初始化不会提升在头部声明你的变量JavaScript 变量提升 JavaScript 中&#xff0c;函数及变量的声明都将被提升到函数的最顶部。 JavaScript 中&#xff0c;变量可以在使用后声明&#xff0c;也就是变量可以先使用再声明。 以下两个实…

前端面试题汇总

一&#xff1a;JavaScript 1、闭包是什么&#xff1f;利弊&#xff1f;如何解决弊端&#xff1f; 闭包是什么&#xff1a;JS中内层函数可以访问外层函数的变量&#xff0c;外层函数无法操作内存函数的变量的特性。我们把这个特性称作闭包。 闭包的好处&#xff1a; 隔离作用…

三、Linux文件 - Close函数讲解实战,文件权限

目录 1.Close函数 2.Linux文件权限 3.项目实战 3.1Close 项目实战1 3.2 文件权限项目实战 -Open函数设置权限 1.Close函数 参数说明 在Linux系统库的定义&#xff1a; int close(int fd) 包含的头文件 #include <unistd.h> 功能就是简单的关闭文件 注&#x…

荧光素标记PEG衍生物Fluorescein-PEG-Acid,FITC-PEG-COOH

英文名称&#xff1a;FITC-PEG-COOH&#xff0c;Fluorescein-PEG-Acid 中文名称&#xff1a;荧光素-聚乙二醇-羧基 荧光素标记的聚乙二醇PEG衍生物的荧光波长为495 nm&#xff0c;发射大约515 ~ 520 nm处有最大吸收。FITC组可以很容易地从它的黄色和绿色荧光。额外的功能&…

Python算法:深度优先搜索—DFS(模板及其样例)

深度优先搜索搜索 【介绍】 • 沿着一条路径一直搜索下去&#xff0c;在无法搜索时&#xff0c;回退到刚刚访问过的节点。 • 并且每个节点只能访问一次。 • 本质上是持续搜索&#xff0c;遍历了所有可能的情况&#xff0c;必然能得到解。 • 流程是一个树的形式&#xff0c;…

深度学习基础-机器学习基本原理

本文大部分内容参考《深度学习》书籍&#xff0c;从中抽取重要的知识点&#xff0c;并对部分概念和原理加以自己的总结&#xff0c;适合当作原书的补充资料阅读&#xff0c;也可当作快速阅览机器学习原理基础知识的参考资料。 前言 深度学习是机器学习的一个特定分支。我们要想…

项目管理的前路,前辈能给一些意见吗?

什么是项目管理&#xff1f;关于项目管理的解释主要是基于国际项目管理三大体系不同的解释及本领域权威专家的解释!!!! 项目管理就是以项目为对象的系统管理方法&#xff0c;通过一个临时性的、专门的柔性组织&#xff0c;对项目进行高效率的计划、组织、指导和控制&#xff0c…

活动目录(Active Directory)管理,AD自动化

每个IT管理员几乎每天都在Active Directory管理中面临许多挑战&#xff0c;尤其是在管理Active Directory用户帐户方面。手动配置用户属性非常耗时、令人厌烦且容易出错&#xff0c;尤其是在大型、复杂的 Windows 网络中。Active Directory管理员和IT经理大多必须执行重复和世俗…

关于Zebec生态的改进提案,即将上线的 Nautilus 链

概括 在最初作为 Solana 原生应用程序推出一年后&#xff0c;Zebec 团队已经能够通过在 BNB和NEAR区块链上成功部署来扩大其产品的范围。 凭借继续向尽可能多的公司/协议/基金提供薪资工具和基础设施的雄心勃勃的计划&#xff0c;我们决定采用最终将使 Zebec生态系统及其核心…

情人节又到了 程序员高逼格表白套路 附源码

又到了每月都有的情人节了&#xff08;笑&#xff09; 一个相当重要的日子&#xff1a;214&#xff0c;不知道是从啥时候开始兴起来的&#xff0c;单身的羡慕着有对象的&#xff0c;有对象的羡慕着单身的&#xff0c; 但也有很大一部分单身人士等待着表白的好机会&#xff0c;毕…

08.程序环境和预处理

1. 程序的翻译环境和执行环境在ANSI C的任何一种实现中&#xff0c;存在两个不同的环境。第1种是翻译环境&#xff0c;在这个环境中源代码被转换为可执行的机器指令。第2种是执行环境&#xff0c;它用于实际执行代码。2. 详解编译链接2.1 翻译环境 //.obg组成一个程序的每个源文…

力扣方法总结:其他数据结构(单调栈等)

单调栈 单调栈代码模板 找下一个更大&#xff08;不是大于等于&#xff09;元素 vector<int> nextGreaterElement(vector<int>& nums) {int n nums.size();vector<int> res(n, -1);stack<int> s;// 从后向前构建单调栈for (int i n - 1; i >…

在 Eclipse 中创建 Maven 项目

1.在 Eclipse 中配置 MavenEclipse 中默认自带 Maven 插件&#xff0c;但是自带的 Maven 插件不能修改本地仓库&#xff0c;所以通常我们不使用自带的 Maven &#xff0c;而是使用自己安装的&#xff0c;在 Eclipse 中配置 Maven 的步骤如下&#xff1a; 1) 点击 Eclipse 中的 …

C# 引用DLL 静态字段和非静态字段

再讲一下如何引用dll动态链接库&#xff1a;右键项目----添加 --项目引用----选择你要添加的dll即可。在依赖项这里就可以看到。再在要用的项目那里using一下这个dll的命名空间&#xff1a;using 生成dll;然后就可以使用以下所说的两种方法去调用dll里的函数了。切记&#xff0…

KDZD832 智能蓄电池活化仪

一、产品概述 KDZD832 智能蓄电池活化仪&#xff08;2V-24V 一体机&#xff0c;适用于 2V、6V、12V/24V 蓄电池&#xff0c;以下简称活化仪&#xff09;&#xff0c;是专用于日常维护中对落后蓄电池处理的便携式产品&#xff0c;它具有四种独立的使用方式&#xff1a;电池放电…

python爬虫--beautifulsoup模块简介

BeautifulSoup 的引入 我们学习了正则表达式的相关用法&#xff0c;但是一旦正则写的有问题&#xff0c;可能得到的就不是我们想要的结果了&#xff0c;而且对于一个网页来说&#xff0c;都有一定的特殊的结构和层级关系&#xff0c;而且很多标签都有 id 或 class 来对作区分&…