0x00 啥是 CDN?

对于这个问题, 很多大佬已经讲过了, 我就不多 bb 了, 直接上链接: https://www.zhihu.com/question/36514327?rf=37353035

作为一个 web 狗, 只需要知道: CDN 全称内容分发网络, 它会部署很多的缓存服务器, 放在用户访问相对集中的地区或网络中. 当用户访问网站时, 将用户的访问指向距离最近的缓存服务器上, 由缓存服务器响应用户请求, 以达到最终的目的, 即访问加速

0x01 啥时候要绕过 CDN?

有数据交互的时候, 数据都是要到达真正的服务器的, 所以我们在做渗透的过程中, 有些时候可以忽略cdn, 比方说, 上传漏洞, 注入漏洞等.

那啥时候cdn会干扰我们渗透呢? 在爆破(比如端口扫描) 的时候, 因为搞了半天, 只是在搞 cdn的服务器, 根本不是真正的服务器.

0x02 如何判断是否使用了 CDN?

判断是否使用了 CDN, 即判断 ip 是否为网站真实 ip

那如何判断是不是真实 ip 呢? 一般来说有如下几种方法:

1. Nslookup

直接使用nslookup命令进行查询, 若返回域名解析结果为多个ip, 多半使用了CDN.

举个例子, 如下图: 在查fengwenhua.top的时候, 只返回了一个 ip, 说明这个网站没有使用 cdn. 而在查fengwenhua.xyz的时候, 返回了多个 ip, 说明该网站很可能使用了 cdn.

2. 多地 ping 查询

使用多地 ping, 查看 ping 的 ip 结果是否唯一. 若不唯一, 则目标网站可能存在CDN.

可以多地 ping 的网站如下:

爱站:     https://ping.aizhan.com/
站长之家:  http://ping.chinaz.com/

先看爱站的ping: https://ping.aizhan.com/

返回多个 ip 说明存在 cdn

接下来看站长工具的 ping, 打开站长工具, 在网站信息查询找到ping 测试

然后输入要查询的域名, 选择全选, 点击Ping检测即可

可以看到返回了多个 ip, 说明fengwenhua.xyz这个网站用了 cdn

3. 使用工具直接查询

也有可以直接查找 cdn 的, 如下:

https://github.com/turbobytes/cdnfinder
https://www.ipip.net/ip.html

0x03 如何绕过cdn, 找到真实ip呢?

1. 查找子域名

cdn 架设需要钱, 因此一般都是给主域名架设cdn, 一些子域名就可能没有用 cdn.

至于如何查询子域名, 方法就多得多了.

  1. dbsdb, 如用baidu.com type:A来收集百度的子域名和 ip
  2. Google hack, 如用site:baidu.com -www来查看百度除了www外的子域名
  3. 子域名扫描器, 如subDomainsBrute, Layer 子域名挖掘机, Sublist3r等等

2. 让服务器给我们发邮箱或者Mx记录

很多站点都有发送邮件的功能, 比如说忘记密码、注册、RSS 邮件订阅之类的地方. 一般的邮件系统很多都是在内部, 没有经过CDN的解析, 因此可以在邮件源码里面找到服务器的真实 IP.

MX记录也是一种常见的查找IP的方式. 如果网站在与web相同的服务器和IP上托管自己的邮件服务器, 那么原始服务器IP将在MX记录中, 以 163.com 为例子, 用nslookup查 mx 记录

ps: 如果是大站, 会有自己的独立的邮件服务器给你发送, 那么这个邮件服务器的有可能跟目标Web在一个段上, 我们直接一个一个扫, 看返回的HTML源代码是否跟web的对的上。

3. 历史DNS记录

查询ip与域名绑定历史记录,可能会发现使用CDN之前的目标ip。查询网站有:

https://www.ip138.com/
https://dnsdb.io/zh-cn/
https://x.threatbook.cn/
https://sitereport.netcraft.com/
http://viewdns.info/
http://www.17ce.com/

以 ip138 为例子

4. 网络空间搜索引擎

最常见的网络空间搜索引擎有钟馗之眼、shodan、fofa搜索

  1. 钟馗之眼: https://www.zoomeye.org/
  2. Shodan: https://www.shodan.io/
  3. FOFA: https://fofa.so/

这里利用的原理是: 如果目标站点通过 ip 也可以访问并返回相同的内容. 那么我们就可以通过这些网络空间搜索引擎搜索相同的内容, 岂不是轻而易举的找到相同内容对应的 ip?

这里还剩下一个问题, 那个相同的内容选择啥比较好? 为了不会搜错, 所以我们要选择那些独一无二的片段.

  1. 在JavaScript中使用具有访问或标识符参数的第三方服务(例如Google Analytics、reCAPTCHA、百度统计)是攻击者经常使用的方法
  2. 特定的 keyword, 如 title, css, js, url等. 毕竟每个网站的 title 都是独一无二的.
  3. 特定的 http 头部(如 server 类型, 版本, cookie 等信息)

下面以搜 title 和 body 内容为例

搜 title

FOFA

这里推荐使用FOFA

具体操作一般为以下两个步骤:

  1. title="网站 title" 得到IP
  2. 再用 ip=="刚刚找出的ip" , 得到 ip 对应的域名, 看看这个域名是不是我们的目标

ZoomEye
title:网站的 title

SHODAN
http.title:网站的 title

搜 body

又比如 hackthebox 网站, 在查看网页源代码发现 Google Analytics跟踪代码如下:

ga('create', 'UA-93577176-1', 'auto');

此时你就可以在 fofa, shodan中使用搜索关键词分别如下:

fofa:      body="UA-93577176-1"

shodan:    http.html:UA-32023260-1

搜索结果分别如下图:

我没有找到钟馗之眼对于 body 的搜索语法, 如果有哪位表哥知道, 请一定要评论告诉我!

5. 利用SSL证书寻找真实原始IP

打开 https://censys.io/ , 选择Search Censys Data

方法 1

举个例子, 目标是biz.csdn.net, 则搜索关键词如下:

parsed.names: biz.csdn.net AND tags.raw: trusted

其中parsed.names代表要搜索证书, 而tags.raw: trusted代表是有效的证书, 它们之间通过逻辑AND组合起来

Censys 将向你显示符合上述搜索条件的所有标准证书, 结果如下图, 我们要逐个查看这些搜索结果, 先点进去第一个域名

接着查看这个证书 sha1 值对应的 ip 列表, 选择Explore->IPv4 Hosts

如下:

这个只能找到配置错误的 Web 服务器的真实 IP, 所以说, 随缘.

方法 2

直接通过如下语法, 找所有目标站点是该 https 证书的站点

443.https.tls.certificate.parsed.extensions.subject_alt_name.dns_names:biz.csdn.net

6. app抓包

如果网站有app, 可以下载app进行抓包

抓包 app 的工具很多, 比较常用的就是 charles, 可以去不存在的网站下载对应的破解包

7. 利用网站漏洞

如果目标站点存在漏洞, 这就没办法避免了. 例如 phpinfo 敏感信息泄露、Apache status 和 Jboss status 敏感信息泄露、网页源代码泄露、svn信息泄露、github信息泄露等.

若存在web漏洞, 可以让服务器主动向我们发起请求连接, 我们也能获取目标站点真实ip. 例如xss、ssrf、命令执行反弹shell等.

8. 国外请求

使用国外ping检测同样达到效果, 而且可能更好, 因为很多网站对国外访问并没有设置CDN. 当然如果目标网站本身就是使用国外的 cdn, 如 cloudflare 的, 那就算了...

这里提供一个网站

https://asm.ca.com/en/ping.php

9. F5 LTM解码法

当服务器使用F5 LTM做负载均衡时, 通过对 set-cookie 关键字的解码真实 ip 也可被获取

如何解码呢? F5 官方有对应的说明: https://support.f5.com/csp/article/K6917?sr=19342610

例如: Set-Cookie: BIGipServerpool_8.29_8030=487098378.24095.0000, 先把第一小节的十进制数即487098378取出来, 然后将其转为十六进制数1d08880a, 接着从后至前, 以此取四位数出来, 也就是0a.88.08.1d, 最后依次把他们转为十进制数10.136.8.29, 也就是最后的真实ip.

访问绕过cdn

当找到真实ip之后, 修改hosts文件, 将域名和真实ip填入, 这时候访问域名, 即访问真实的ip了

当然, 也可以直接拿真实ip搞

参考

https://zhuanlan.zhihu.com/p/33440472

https://www.cnblogs.com/qiudabai/p/9763739.html

https://www.fujieace.com/penetration-test/cdn-find-ip.html

最后修改:2020 年 05 月 29 日 04 : 56 PM
如果觉得我的文章对你有用,请随意赞赏