0x01 IP?IP!
公网IP的作用:可以在任意上网地方通过公网IP进行访问连接。
用户需要架设网站,可直接输入公网IP就可以访问到他的网站。
用户需要远程连接,直接利用公网IP进行远程桌面,就可以连接到对应的主机进行管理。
网络之间通信是以公网IP地址进行识别,所以互联互通的跨网联网必须使用公网IP地址。
0x02 CDN概述
内容分发网络(content delivery network或content distribution network,缩写作CDN)指一种通过互联网互相连接的电脑网络系统,利用最靠近每位用户的服务器,更快、更可靠地将音乐、图片、视频、应用程序及其他文件发送给用户,来提供高性能、可扩展性及低成本的网络内容传递给用户。
CDN节点会在多个地点,不同的网络上摆放。这些节点之间会动态的互相传输内容,对用户的下载行为最优化,并借此减少内容供应者所需要的带宽成本,改善用户的下载速度,提高系统的稳定性。
百度百科:
CDN的全称是Content Delivery Network,即内容发布网络。CDN是构建在现有网络基础之上的智能虚拟网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。CDN的关键技术主要有内容存储和分发技术。
0x03 国内外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
0x04 设置CDN的意义
跨运营商加速:我们自己的网站常常只属于一个运营商(比如:电信),而加速节点遍布每家运营商,于是和网站不同运营商(比如:联通)的用户访问起来就不会那么慢了。
缓存加速:很多的静态资源以及一部分页面更新都是比较慢的(比如首页),这个时候CDN就会根据浏览器的max-age和last-modified值以及管理员的预设值来进行缓存,于是很多流量CDN节点就不会每次都来向网站请求,CDN节点可以直接自作主张地将命中的缓存内容返回。
恶意流量过滤:这是CDN非常重要的一个作用,也是很多网站会用CDN的原因,因为CDN能为我们抵挡攻击大流量攻击、普通的攻击(比如注入等),只有正常流量才会转发给网站。
0x05 域名解析过程
传统访问:用户访问域名-->解析IP-->访问目标主机
简单模式:用户访问域名-->CDN节点-->真实IP-->目标主机
WAF:用户访问域名-->CDN节点(云WAF)-->真实IP-->目标主机
0x06 CDN配置方法
1、将域名的NS记录指向CDN厂商提供的DNS服务器。
2、给域名设置一个cname记录,将它指向CDN厂商提供的另一个域名
0x07 CDN存在判断方式
nslookup
nslookup 命令主要用来诊断域名系统 (DNS) 基础结构的信息。
nslookup 命令通常用来查询DNS的记录,查询域名解析是否正常,在网络故障时用来诊断网络问题。
nslookup 命令的两种模式:
nslookup 命令是一个能够查询互联网域名服务器信息的程序。他有两种工作模式,即《交互模式》和《非交互模式》。
在《交互模式》下,用户可以向域名服务器查询各类主机、域名的信息,或者输出域名中的主机列表。
而在《非交互模式》下,用户可以针对一个主机或域名仅仅获取特定的名称或所需信息。
通过 man nslookup 可以看到对于nslookup命令的官方解释是“query Internet name servers interactively”。
查看域名解析对应的IP地址,如下解析到多个IP地址则说明使用了CDN
解析到的IP地址只有一个,则说明没有使用CDN网络
多地ping
多地ping检测服务借助全球分布的节点网络,来模拟用户从不同地理位置对网站进行访问时的网络延迟状况,实时反馈目标网站的响应速度与连接稳定性,如果出现多个解析IP地址,那么说明使用了CDN进行内容分发。
http://ping.chinaz.com/
http://ping.aizhan.com/
http://ce.cloud.360.cn/
以下为存在CDN情况
以下为不存在CDN情况
Ping目标主域
通常通过ping目标主域,观察域名的解析情况,以此来判断其是否使用了CDN
发现回应域名明显不同,则可以判断对方使用cdn
腾讯同样使用了CDN
工具查询
一般而言无需使用工具,只起到辅助作用,且存在误报几率,可以作为参考
https://www.cdnplanet.com/tools/cdnfinder/
0x08 CDN绕过技术
历史 DNS 记录
查看 IP 与 域名绑定的历史记录,可能会存在使用 CDN 前的记录
https://dnsdb.io/zh-cn/ DNS查询
https://x.threatbook.cn/ 微步在线
http://toolbar.netcraft.com/site_report?url= 在线域名信息查询
http://viewdns.info/ DNS、IP等查询
https://tools.ipip.net/cdn.php CDN查询IP
发现一个存在cdn的网站
www.zju.edu.cn
查询历史dns解析
https://viewdns.info/iphistory/?domain=www.360.net
假如某个时间点之前都是同一个ip,我们可以大概确定该网站真实ip
实测该方法效果并不好
子域名IP
毕竟 CDN 还是不便宜的,所以很多站长可能只会对主站或者流量大的子站点做了 CDN,而很多小站子站点又跟主站在同一台服务器或者同一个C段内,此时就可以通过查询子域名对应的 IP 来辅助查找网站的真实IP。
更换为子域名查询
网络空间引擎搜索法
常见的有以前的钟馗之眼,shodan,fofa搜索。以fofa为例,只需输入:title:“网站的title关键字”或者body:“网站的body特征”就可以找出fofa收录的有这些关键字的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,即整个互联网,他们就可以在端口443上获取在xyz123boot.com上的有效证书,进而获取提供给你的Web服务器IP。
目前Censys工具就能实现对整个互联网的扫描,Censys是一款用以搜索联网设备信息的新型搜索引擎,安全专家可以使用它来评估他们实现方案的安全性,而黑客则可以使用它作为前期侦查攻击目标、收集目标信息的强大利器。Censys搜索引擎能够扫描整个互联网,Censys每天都会扫描IPv4地址空间,以搜索所有联网设备并收集相关的信息,并返回一份有关资源(如设备、网站和证书)配置和部署信息的总体报告。
而攻击者唯一需要做的就是把上面用文字描述的搜索词翻译成实际的搜索查询参数。
xyz123boot.com证书的搜索查询参数为:parsed.names:xyz123boot.com
只显示有效证书的查询参数为:tags.raw:trusted
攻击者可以在Censys上实现多个参数的组合,这可以通过使用简单的布尔逻辑来完成。
组合后的搜索参数为:parsed.names: xyz123boot.com and tags.raw: trusted
Censys将向你显示符合上述搜索条件的所有标准证书,以上这些证书是在扫描中找到的。
要逐个查看这些搜索结果,攻击者可以通过单击右侧的“Explore”,打开包含多个工具的下拉菜单。What's using this certificate? > IPv4 Hosts
此时,攻击者将看到一个使用特定证书的IPv4主机列表,而真实原始 IP就藏在其中。
你可以通过导航到端口443上的IP来验证,看它是否重定向到xyz123boot.com?或它是否直接在IP上显示网站?
使用给定的SSL证书
如果你是执法部门的人员,想要找出一个隐藏在cheesecp5vaogohv.onion下的儿童色情网站。做好的办法,就是找到其原始IP,这样你就可以追踪到其托管的服务器,甚至查到背后的运营商以及金融线索。
隐藏服务具有SSL证书,要查找它使用的IPv4主机,只需将"SHA1 fingerprint"(签名证书的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('create','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 了。
扫全网
需要找 xiaix.me 网站的真实 IP,我们首先从 apnic 获取 IP 段,然后使用 Zmap 的 banner-grab 扫描出来 80 端口开放的主机进行 banner 抓取,最后在 http-req 中的 Host 写 xiaix.me。
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。
配置不当导致绕过
在配置CDN的时候,需要指定域名、端口等信息,有时候小小的配置细节就容易导致CDN防护被绕过。
案例1:为了方便用户访问,我们常常将www.test.com 和 test.com 解析到同一个站点,而CDN只配置了www.test.com,通过访问test.com,就可以绕过 CDN 了。
案例2:站点同时支持http和https访问,CDN只配置 https协议,那么这时访问http就可以轻易绕过。
AJAX网站前后端
应用架构 前后端分离, bp返回html 新架构采取前后端分离 返回包, json{} ajax 调用后端的API , js源码当
中javascript指定后台的地址
可以使用的工具
工具:
host
cat 1.txt |xargs -n1 host
allin
python AlliN.py -f AllIP.txt -m cdnscan
评论区