摘要
现有的很多网站为了提高用户访问的效率和安全性,会采用CDN(内容分发网络)来加速。CDN解决的是如何将数据快速可靠从源站传递到用户的问题。用户获取数据时,不需要直接从源站获取,通过CDN对于数据的分发,用户可以从一个较优的服务器获取数据,从而达到快速访问,并减少源站负载压力的目的。同时CDN都有很强的防护措施,正面很难突破,因此可以尝试绕过CDN找到真实的网站IP,直接通过IP访问真实服务器寻找各种漏洞以实现攻击。
什么是CDN
CDN(Content Delivery Network)是构建在网络之上的内容分发网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。CDN的关键技术主要有内容存储和分发技术。
CDN的基本原理是广泛采用各种缓存服务器,将这些缓存服务器分布到用户访问相对集中的地区或网络中,在用户访问网站时,利用全局负载技术将用户的访问指向距离最近的工作正常的缓存服务器上,由缓存服务器直接响应用户请求。
CDN解析过程
无CDN情况下解析过程
- 用户浏览器输入域名
- 浏览器请求DNS服务器解析IP地址返回给用户
- 浏览器访问该IP请求服务器内容返回给浏览器
有CDN情况下解析过程
- 用户浏览器输入域名
- 浏览器请求DNS服务器解析域名。由于有CDN,因此DNS服务器会将域名的最终解析权交由CDN专用的DNS服务器来完成
- CDN的DNS服务器会返回CDN的负载均衡设备的IP地址
- 用户向该IP发起请求,CDN负载均衡会选择合适的缓存服务器将数据返回给用户
想要绕过CDN首先得判断网站是否存在CDN
判断网站是否有CDN
多地ping
如果存在CDN的话,DNS解析出的IP地址为CDN缓存服务器的地址,因此可能存在多个IP
nslookup
返回的域名解析有多个IP地址,可能存在CDN
网站指纹
- 浏览器插件:Wappalyzer
使用CDN查询工具
IP判断
如果域名解析的ip地址的归属地与公司所在地不同,而且IP归属地为云服务或者CDN厂商的地址,说明有可能有CDN。
绕过CDN查找真实IP
域名历史解析记录
查看IP与域名绑定的历史记录,有可能会存在使用CDN前的记录信息
1 | https://dnsdb.io/zh-cn/ |
查询子域名
很多站长也许只会对主站或者流量大的子站点加 CDN,很多小站点又跟主站在同一台服务器或者同一个C段内,此时就可以通过子域名查询对应的 IP 来辅助查找网站的真实IP。
利用网络空间搜索引擎查找
- fofa: https://fofa.info/
- shodan: https://www.shodan.io/
- censys: https://censys.io/
- zoomeye:https://www.zoomeye.org
这种方法有时候可以找到真实的网站IP,但有时候解析出的IP地址是CDN的地址,有一定的误差,注意仔细甄别。
利用HTTP标头查找
如果原始服务器IP也返回了网站的内容,那么可以在网上搜索大量的相关数据。
浏览网站源代码,寻找独特的代码片段。在JavaScript中使用具有访问或标识符参数的第三方服务(例如Google Analytics,reCAPTCHA)是攻击者经常使用的方法。
利用国外主机解析域名
国内很多 CDN 厂商因为各种原因只做了国内的线路,而针对国外的线路可能几乎没有,此时我们使用国外的主机直接访问可能就能获取到真实IP。
利用SSL证书寻找真实IP
证书颁发机构(CA)必须将他们发布的每个SSL/TLS证书发布到公共日志中,SSL/TLS证书通常包含域名、子域名和电子邮件地址。因此SSL/TLS证书成为了攻击者的切入点,可以通过网络空间搜索引擎查找。
通过网站漏洞查找
- 目标敏感文件泄露,例如:phpinfo之类的探针、GitHub信息泄露等。
- XSS盲打,命令执行反弹shell,SSRF等。
- 无论是用社工还是其他手段,拿到了目标网站管理员在CDN的账号,从而在从CDN的配置中找到网站的真实IP。
利用工具查找
HatCloud
由ruby语言所写,概率查询目标cloudflare节点的真实ip。
CloudFail
一种战术侦察工具,试图在Cloudflare WAF后面找到原始IP地址
bypass-firewalls-by-DNS-history
该工具尝试查找防火墙后面的服务器的直接IP地址并尝试绕过下载地址:https://github.com/vincentcox/bypass-firewalls-by-DNS-history
CloudFlair
CloudFlair是一种工具,用于查找受CloudFlare保护的网站的源服务器下载地址:https://github.com/christophetd/CloudFlair
防范措施
之所以可以绕过CDN来实现攻击,主要是由于网站服务器支持通过IP地址直接访问,因此需要配置只允许域名进行访问就可以防范被绕过。
Nginx配置:
1 | #添加一个server,在原server里绑定域名 |
Apache配置:
1 | #在httpd.conf最后面加上 |