文章目录
前言
CDN的全称是 Content Delivery Network
,即内容分发网络。开启CDN后的网站,会根据用户所在地的不同访问CDN的节点服务器,并不直接访问源服务器,这样可以减少网站服务器宽带资源,降低服务器压力。这也就是大家都在ping百度,但是不同地区得到的反馈ip不一样的原因。由于CDN节点的阻挡防护,可以更好的保护员服务器的安全。具体来说,CDN其实是充当了一个替身的角色,无论服务器是渗透还是DD0S攻击,攻击的目标都将是CDN节点,这样一来便间接的保护了网站本身。
在渗透测试或者红蓝对抗时,经常遇到网站使用了CDN,找到真实ip对后续渗透有很大帮助,比如直接访问ip可能会绕过云waf,扫描端口等等。
用户访问网站过程:
传统访问:用户访问域名–>解析服务器IP–>访问目标主机
普通CDN:用户访问域名–>CDN节点–>真实服务器IP–>访问目标主机
带WAF的CDN:用户访问域名–>CDN节点(云WAF)–>真实服务器IP–>访问目标主机
1.如何判断是否使用CDN
1.1.直接ping
直接ping
网站域名的时候,如果网站使用cdn
会出现类似下面情况:
~ ping www.syxxx.cn
PING 539b1c6d114eec86.360safedns.com (221.2xx.1xx.1x): 56 data bytes
Request timeout for icmp_seq 0
Request timeout for icmp_seq 1
Request timeout for icmp_seq 2
1.2.多地ping
使用各种多地 ping
的服务,查看对应 IP 地址是否唯一,如果不唯一,多半是使用了CDN
, 多地 Ping 网站有:
http://ping.chinaz.com/
http://ping.aizhan.com/
https://www.17ce.com/
1.3. nslookup
使用 nslookup
进行检测,原理同上,如果返回域名解析对应多个 IP 地址多半是使用了 CDN
。
- 有
CDN
的示例:
~ nslookup www.16xx.com
服务器: public1.114dns.com
Address: 114.114.114.114
非权威应答:
名称: 163.xdwscache.ourglb0.com
Addresses: 58.xxx.xx.86
xxx.75.32.xxx
Aliases: www.16xx.com
www.16xx.com.lxdns.com
- 无 CDN 的示例:
~ nslookup xxxx.com
服务器: public1.114dns.com
Address: 114.114.114.114
非权威应答:
名称: xxxx.com
Address: 192.3.168.172
1.4. 查看响应头中的“X-cache”字段
在浏览器中访问,观察响应头中的“X-cache”字段
- 显示“MISS”,说明没有命中CDN缓存,是回源的
例如:X-cache:MISS Tcp_MISS dirn:-2:-2
- 显示“HIT”说明命中了cdn缓存
例如:X-cache:HIT TCP_HIT dirn:0:402545
2.如何绕过CDN查找真实IP
真实IP不一定能找到
2.1. 空间搜索引擎
- 根据网站特征
a.可以根据网站特定title或者网站body特征,比如在fofa里面使用
title:xxxxx
或者body:xxxx
b. 服务器响应内容指纹,当服务器对请求做出的响应内容(响应头和响应体)具有特殊信息(指纹)时,可以利用这种独有特征在搜索引擎中进行搜索,得到与目标网站关联度很高的ip等信息。
- 搜索域名
直接
domain:xxxx.com
,可以搜索子域名等信息,查找真实ip,ps:学会利用搜索引擎的匹配条件
我常用的搜索引擎:
钟馗之眼:https://www.zoomeye.org
Shodan:https://www.shodan.io
Fofa:https://fofa.so
···
2.2. 网站漏洞
- 目标敏感文件泄露,例如:phpinfo之类的探针、GitHub信息泄露等。
- XSS盲打,命令执行反弹shell,SSRF等,服务器主动向外发起连接,泄露真实IP地址。
2.3. 网站配置不当
在配置CDN的时候,需要指定域名、端口等信息,有时候小小的配置细节就容易导致CDN防护被绕过
- 有些网站常常将www.xxx.com 和 xxx.com 解析到同一个站点,而CDN只配置了www.xxx.com,通过访问xxx.com,就可以绕过 CDN
- 站点同时支持http和https访问,CDN只配置 https协议,那么这时访问http就可以轻易绕过。
2.4. 域名
- 子域名
毕竟 CDN 还是不便宜的,所以很多站长可能只会对主站或者流量大的子站点做了CDN,而很多小站子站点又跟主站在同一台服务器或者同一个C段内,此时就可以通过查询子域名对应的 IP 来辅助查找网站的真实IP。
- 其他域名
网站关联网站可能未使用CDN,有可能关联网站和主站在同一台服务器或者同一个C段内,此时就可以通过查询关联网站域名对应的 IP 来辅助查找网站的真实IP。
2.5. 邮件服务器来源
如果网站不是用的第三方邮箱,可以借用注册或者找回密码以及订阅等功能,让对方邮件服务器主动给自己发邮箱,查看源码(或者信息头),如下图。有可能发现真实ip,如果发现对方邮件服务器是独立的,可以查看一下c段。
2.6. APP客户端
APP客户端有可能部分api接口走的直接是ip接口,此时可以查看服务器IP,也可以查看一下c段。
2.7. DOS(不建议使用)
DDOS耗尽CDN流量、那么就会回源,这样就能得到真实IP,不设防的cdn 量大就会挂,高防cdn 要增大流量。
2.8. 全球ping
大部分 CDN 厂商因为各种原因只做了国内的线路,而针对国外的线路可能几乎没有,此时我们使用国外的DNS查询,很可能获取到真实IP:
https://www.wepcc.com
…
2.9. 历史IP和DNS解析记录
查看 IP 与 域名绑定的历史记录,可能会存在使用 CDN 前的记录,相关查询网站有
- https://dnsdb.io/zh-cn/
- https://x.threatbook.cn/
- http://toolbar.netcraft.com/site_report?url=
- http://viewdns.info/
- https://tools.ipip.net/cdn.php
- https://securitytrails.com/#search
2.10. 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。
2.11. 利用SSL证书寻找真实原始IP
证书颁发机构(CA)必须将他们发布的每个SSL/TLS证书发布到公共日志中,SSL/TLS证书通常包含域名、子域名和电子邮件地址。因此SSL/TLS证书成为了攻击者的切入点。
目前Censys工具就能实现对整个互联网的扫描,Censys是一款用以搜索联网设备信息的新型搜索引擎,安全专家可以使用它来评估他们实现方案的安全性,而黑客则可以使用它作为前期侦查攻击目标、收集目标信息的强大利器。Censys搜索引擎能够扫描整个互联网,Censys每天都会扫描IPv4地址空间,以搜索所有联网设备并收集相关的信息,并返回一份有关资源(如设备、网站和证书)配置和部署信息的总体报告。
xxx.com证书的搜索查询参数为:parsed.names:xxx.com
只显示有效证书的查询参数为:tags.raw:trusted
攻击者可以在Censys上实现多个参数的组合,这可以通过使用简单的布尔逻辑来完成。
组合后的搜索参数为:parsed.names: xxx.com and tags.raw: trusted
Censys将向你显示符合上述搜索条件的所有标准证书,逐个查看这些搜索结果,攻击者可以通过单击右侧的“Explore”,打开包含多个工具的下拉菜单。What’s using this certificate? > IPv4 Hosts,此时,攻击者将看到一个使用特定证书的IPv4主机列表,而真实原始 IP就藏在其中
2.12. 社工CDN账号
可以联系客服小姐姐,想办法拿到目标网站管理员在CDN的账号,从而在从CDN的配置中找到网站的真实IP
2.13. 全网扫描(太浪费时间不建议,反正我没用过)
首先从 apnic
获取 IP 段,然后使用 Zmap 的 banner-grab
扫描出来 80 端口开放的主机进行 banner 抓取,最后在http-req
中的 Host 写 xxx.com。
3.验证找到的ip是否为真实ip
- 找到真实ip之后,与hosts文件绑定,实现能够直接用ip或域名访问目标真实服务器
- 可以直接https://ip,查看证书绑定域名