CDN如何绕过
参考文献
本文只是对参考文献的一个概念性总结,具体方法还请阅读参考文献。下面的文献作为拓展内容。
什么是CDN
Content Delivery Network,内容分发网络,简称为CDN。
使用 CDN 技术可以有效的提高网站的访问速度和安全性,因此目前互联网上,部分网站部署在 CDN 网络后面,所有请求网站内容的用户都将从最近的 CDN 代理服务器获取其缓存版本,因此内容加载速度更快,网站的性能得到改善。
判断网站是否使用了CDN
反查域名 IP,看结果是否有大量不相关的域名存在
观察请求响应的返回数据的头部,是否有 CDN 服务商标识
使用超级 ping,通过不同定位地点的 ping 测试,看返回的 IP 是否不同
判断 IP 是否在常见 CDN 服务商的服务器 IP 段上
若 asp 或者 asp.net 网站返回头的 server 不是 IIS、而是 Nginx,则多半使用了nginx反向代理到 CDN
利用 Nslookup 查询域名,看是否返回多个应答 IP
如何绕过CDN溯源网站真实IP
一、通过查询DNS记录/IP历史记录/子域名 等数据记录
很多网站只给关键的域名或者主域名做了 CDN,其下很多子域名没有使用 CDN 服务,所以我们可以通过查询目标网站的根域名、二级域名、三级域名甚至多级子域名来获得真实IP。不过有时候查出来的并不是真实 IP,可能仅仅做了 A 记录 ,这种情况下可以继续扫描同 C 段的 IP 和端口,然后逐个探测是否为目标网站。
在网站使用 CDN 服务之前,解析的是真实IP,所以可以查询 DNS 历史记录,看是否能探测到使用 CDN 之前的 IP 。
DNS 解析记录中重点关注 TXT 记录和 SPF 记录,是否有泄露真实IP。
1. 在线查询平台
2. IOT物联网络空间测绘搜索引擎
3. 工具和脚本
bypass-firewalls-by-DNS-history
二、通过Email邮局
一般大型网站自己部署架设的邮件服务器如果向外部用户发送邮件的话,如果中间未经任何数据处理和防护措施,那么邮件头部的源码中会包含此邮件服务器的真实 IP 地址。常见的邮件触发点有:
RSS 订阅
邮箱注册、激活处
邮箱找回密码处
产品更新的邮件推送
某业务执行后发送的邮件通知
员工邮箱、邮件管理平台等入口处的忘记密码
另外这里还有一个技巧,通过发送邮件给一个不存在的邮箱地址,比如 000xxx@domain.com,因为该用户不存在,所以发送将失败,并且还会收到一个包含发送该电子邮件给你的服务器的真实 IP 通知。
很多大型网站的邮件服务器不止一台,并不是所有都做了防护处理。
三、通过SSL证书
证书颁发机构 (CA) 必须将他们发布的每个 SSL/TLS 证书发布到公共日志中,SSL/TLS 证书通常包含域名、子域名和电子邮件地址。因此可以利用 SSL/TLS 证书来发现目标站点的真实 IP 地址。
CDN 运营商在给服务器提供保护的同时,也会与其服务器进行加密通信(ssl),这时当服务器的 443 端口接入域名时也会在 443 端口暴露其证书,我们通过证书比对便可发现网站的真实 IP 地址。
根据域名指纹,搜索SSL证书指纹,然后再反查IP。
四、通过海外DNS查询
针对国内市场用户,大部分的 CDN 服务商并没有做海外市场的 CDN ,所以可以通过寻找小众、冷门的海外 DNS 查询,看是否能获得真实 IP 。
也可以使用海外的超级ping类的平台在线多国家多地区测试
五、通过敏感文件泄露
包括但不限于:
服务器日志文件
探针文件,例如 phpinfo
网站备份压缩文件
.DS_Store
.hg
.git
SVN
Web.xml
字典非常重要,往往疏忽的点就在一台边缘服务器。
六、通过变更的域名
很多网站在发展的过程中,会更换域名。
网站在更换新域名时,如果将 CDN 部署到新的域名上,而之前的域名由于没过期,可能未使用 CDN,因此可以直接获得服务器 IP,所以,历史域名也是一个很重要的点。
七、 通过 APP 移动端应用
如果网站存在 APP ,可以通过抓包分析其 APP 的数据流量,看是否能找到网站真实 IP 地址,记得关注 APP 的历史版本,里面会有很多 surprise 。
八、通过 F5 LTM 解码
LTM 是将所有的应用请求分配到多个节点服务器上。提高业务的处理能力,也就是负载均衡。
当服务器使用 F5 LTM 做负载均衡时,通过对set-cookie
关键字的解码,可以获取服务器真实 ip 地址。
九、通过 CDN 标头特征值
很多网站启用 CDN 后,配置了拒绝直接访问真实 IP 。因此可以通过匹配特征标头的方法,去缩小范围。
十、通过 XML-RPC PINGBACK 通信
XML-RPC 是支持 WordPress 与其他系统之间通信的规范,它通过使用 HTTP 作为传输机制和 XML 作为编码机制来标准化这些通信过程。
在 WordPress 的早期版本中,默认情况下已关闭 XML-RPC,但是从3.5版本开始,默认情况下开启。
XML-RPC 支持 trackback 和 pingback。
虽然 WordPress 启用了 REST API 来代替 XML-RPC ,虽然 XML-RPC 这个技术很老了,但依然可以通杀很多网站。
配置好 dnslog,POST 请求 XML-RPC。得到响应后。刷新一下 dnslog ,获得了真实服务器 IP。
十一、通过 FTP/SCP 协议
在很多情况下,网站需要将数据流从外部传输到内部服务器上,最安全的做法肯定是在用户和服务器之间建立虚拟专用网络(V*P+N 防和谐)。
但实际上,仍然有大量可从外部访问的 FTP / SCP 服务,从而容易被抓住机会找到源 IP 地址。
十二、利用 Websocket 协议
CloudFlare 等 CDN 服务商其实早就支持对 Websocket 的保护了,但太多的站长,不管大站小站,他们很多人都不知道,或者没有针对 Websocket 进行部署。
另一种原因是因为业务上的需求,毕竟 Websocket 要求客户端和服务器之间保持长久的连接,所以很有可能没有进行 CDN 部署。
十三、 通过社会工程学
十四、通过网站漏洞
如果目标网站本身存在漏洞的话,比如 SSRF、XXE、XSS、文件上传、命令执行等漏洞,或者我们找到的其他突破口,注入我们自己的带外服务器地址,然后在服务器上检查 HTTP 日志记录。
应用本身的错误会造成当传递一些错误的参数值或者错误的地址时,内部会抛出异常,也就是日常所说的报错,关注报错点,经常会泄露一些真实的 IP 地址或者内网 IP 段。
十五、通过全网扫描
不建议,过时
十六、通过 virtual-host 碰撞
当我们收集了目标足够多的可能的真实 IP 时,可以通过 IP 和子域的碰撞,来批量获得命中目标以及目标哪些的子域。
十七、通过 favicon.ico 哈希特征
favicon.ico 是现代浏览器在网页标题的左侧显示的一个小图标。
该图标数据通常是从 https://anywebsite/favicon.ico处获取的,浏览器会在浏览任何网站时自动请求它。
因为可以通过计算 favicon.ico 的指纹哈希,然后去 shodan 等搜索引擎搜索与之相同的主机结果,从而进一步探测是否能挖掘出目标网站的真实 IP 地址。
十八、通过网页源码特征值
在服务器源 IP 地址允许访问并且返回的也是类似的网站内容情况下,可以通过侦察页面源码中 JS 、CSS 、HTML 等一系列静态特征值,然后用 Shodan 、Zoomeye 、Censys 等搜索引擎进行匹配搜索,从而定位 IP 。
十九、通过网站远程资源业务
多找一下目标网站上支持远程图片、远程文件等被动连接的业务地方,通过注入我们自己服务器的资源文件,然后查看 HTTP 日志来定位目标服务器的连接。
常见的比如加载远程头像处。
二十、通过 CDN 机器
有些网站是自搭建 CDN 机器做负载均衡的,很难保证每一台 CDN 机器都做到 100% 安全。没有办法的情况下,可以尝试针对这些 CDN 机器进行渗透测试,如果能拿下一台,就什么都有了,目标主站的安全性好并不代表所有的生产边路都不存在缺陷,安全不在于真正强的地方有多强,而在于薄弱的地方有多弱。
二十一、通过流量耗尽、流量放大攻击
CDN 是收费的,那么其流量一定是有限的,对一些不是超大型目标网站在进行测试时,注意,一定要在项目方授权允许的情况下,可以尝试进行 ddos 流量测试。
CDN 流量耗尽了,就不存在内容分发了,直接就可以拿到源 IP 。
但是,CDN 是流量穿透的,别流量耗尽前,目标网站先 gg 了。
另一种比较古老的做法是通过 CDN 设置中的自身缺陷,将要保护的源站 IP 设置成为 CDN 节点的地址,致使 CDN 流量进入死循环,一层层放大后,最终自己打死自己。不过大多数的 CDN 厂商早已限制禁止将 CDN 节点设置成 CDN 节点 IP ,并且启用了自动丢包保护机制。
二十二、通过域名备案信息广域探测(成功率高)
针对目标域名,目标二级域名,如果都做了 CDN 的情况下,是不是就思路中断了呢?
网站需要服务器,但是再土豪的公司,也不可能一个域名一台服务器,大多数情况下,都是多个域名业务,共用一台服务器。
那么如果目标网站存在备案,可以查询其备案信息,收集该单位或者个人备案的其他网站域名以及其他子域,然后再进行一轮广域的探测,很有可能其中的某个边缘子域,没有做 CDN,就直接暴露了真实服务器的 IP 地址,然后再进一步验证该 IP 是否也是目标网站的真实 IP 。
二十三、利用 CDN 服务商默认配置
不同的 CDN 服务商,产品默认配置不同。
例如 CloudFlare ,默认配置 direct.domain.com 二级子域指向服务器源 IP。但是很多公司或者个人使用 CDN 保护的时候并没有修改默认配置,导致 IP 泄露风险。
其他一些高风险的子域如 ftp、mail、cpanel、direct-connect 等也可以重点关注,方便快速定位。
二十四、通过 SSH 指纹
跑题了,SSH 指纹一般应用于匿名 Tor 网络追踪
二十五、使用 CloudFair 工具
如果你的目标是 CloudFlare 保护的,建议先上这款工具跑。
0x04 找到真实 IP 后如何使用
通过修改 hosts 文件,将域名和 IP 绑定。
如使用 burpsuite 测试,可以在 Project options ——> Connections ——> Hostname Resolution 中增加域名和 IP 记录。