内容分发网络(CDN)的初衷是为了加速网站访问和提升响应速度,随后其功能扩展至安全防御领域。
在渗透测试的信息搜集阶段,绕过CDN主要旨在两个方面:
1、规避CDN层的Web应用防火墙(WAF)防御机制;
2、挖掘同服务器下的更多脆弱资产信息。
然而,由于CDN配置日益完善和各种第三方历史数据库API的收费措施,导致自动化分析绕过CDN变得愈发难以实现,手动分析又耗时费力,还可能一无所获。
最终导致许多安全工具选择忽略来自CDN域名的 IP解析结果,而专注于识别非CDN域名。
为了有效开展渗透测试,首先需要准确识别目标是否使用了CDN服务。以下是一些常用的鉴别方法:
1. CNAME指纹分析
大部分使用了CDN的域名对应的DNS解析结果存在较强的特征,如xxxcdn、xxxwaf,可以通过维护一个CNAME指纹字典对进行对比识别。
缺点:不适用于新增的和无特征的CDN供应商和CDN域名。
2. IP范围与ASN号
大部分CDN提供商都存在固定的CDN IP范围,通过检查IP地址是否属于已知CDN服务节点的IP段或ASN(自治系统编号),可以判断出域名或IP是否为CDN资产。
缺点:不适用于新增的和自建的CDN供应商和IP范围。
3. HTTP头分析
少部分CDN提供商的HTTP响应头存在较强的特征,如(xxxcdn、xxxwaf)可以通过维护一个响应头部字典对进行对比识别。
缺点:不适用于新增的和无特征的CDN供应商。
4. 多地Ping
CDN的用途是为了给不同地区的客户端返回最近的服务器IP,加速客户端的访问响应速度。因此,可以使用多地Ping服务对目标域名进行检测,根据返回的IP是否一致判断是否存在CDN。
缺点:由于自建多地服务器成本非常高,因此一般都是通过网上的多地ping服务实现。公共多地Ping服务,响应延迟大且存在调用限制导致结果异常。
5. DNS解析
通过轮询使用全球各地的 DNS 服务器对域名进行 A 记录解析,而后根据结果 IP 数量来进行判断,当解析同一域名得到多个不同IP结果,认为目标域名存在CDN。该技术理论上是可行的,只需要和其他识别技术进行综合,就能较准确地鉴别目标域名是否为CDN。
缺点: 实践中可能受限于部分DNS服务稳定性和返回一致结果问题。
6. CDN API查询(补充)
近年存在一种新的CDN域名识别方案,通过调用各大CDN云厂商的对应API,查询IP是否为该厂商的CDN节点。
缺点:1、需要分别注册多个API,并受到API请求速率限制影响。 2、基本不适用于小型CDN和自建CDN。
7. 负载均衡场景(补充)
部分情况下,目标服务器提供多个负载均衡服务,导致通过IP数量进行判断的域名解析结果不可靠。因此需要对IP数量结果进行一个阈值规定,再进行IP属性补充,进一步确定是否为CDN。
实践使用中发现多地ping技术更加适用于大小CDN厂商目标,能够进一步增强结果可靠性,但由于多地ping的不稳定性,我开始寻找一种可以替代的技术方案来进行CDN鉴别。
后来在Github找到一种可行方案:
https://github.com/burpheart/cdnlookup
此处首先感谢 @burphearrt 大牛的技术开源分享。
ECS技术:一种新的解决方案
Edns-Client-Subnet (ECS) 是一种DNS扩展机制,允许递归DNS服务器在查询权威DNS服务器时附加上客户端的子网信息。这项技术能够更精确地定位用户所处位置,主要用于优化内容分发网络(CDN)和其他基于地理位置的服务,提升服务性能和用户体验。
当用户的DNS请求到达递归解析器时,递归解析器使用ECS选项将客户端的部分IP地址(通常是/24或/32掩码)附加到对权威DNS服务器的请求中。权威DNS服务器利用这些信息确定最接近用户的资源位置,并返回相应的IP地址。
反向理解ECS技术,可以得知:通过ECS技术,可以只需提供要模拟的客户端IP地址范围,即可获取指定IP地址地理位置的DNS解析结果,并依据返回的不同IP数量可以大致判断是否使用了CDN。
ECS技术与多地Ping技术的对比
相较于传统的多地Ping等技术,ECS具有显著优势:
1、响应速度更快:由于ECS是基于DNS解析的过程,因此其响应速度通常比执行多地Ping测试要快。
2、稳定性更强:DNS域名解析服务器作为互联网基础设施之一,相较于多地ping服务器而言,通过DNS服务获取IP解析结果更稳定。
ECS技术仍然存在缺陷
在实践过程中,存在两种非预期的可能性:
1、CDN供应商只为用户提供极少的IP。如CloudFlare可能只为免费用户提供两个节点。通常对于极少数解析结果的数量,一般是没有超过阀值的,可能被误判断为非CDN域名。
2、目标使用多IP进行负载均衡。IP数量超出阈值,但每个解析IP仍然存在资产收集的价值。
因此,对于提供较少节点的CDN供应商和使用负载均衡技术的服务器,单一技术可能不足以准确判断。为了更加准确地鉴别CDN域名,建议采用多维度的方法,包括但不限于ECS技术、IP信息分析、CNAME属性进行补充验证。
通过单一技术去实现某个功能往往都可能存在缺陷,好的CDN鉴别方案应该从多个角度进行综合:
1、通过ECS进行域名解析IP进行初步判断
2、通过分析IP信息进一步进行结果分析
3、通过CNAME、IP范围等技术补充判断
demo实现:cdnAnalyzer
https://github.com/winezer0/cdnAnalyzer
PS:不积极开发中, 目前通过cdnAnalyzer|nali组合使用
思路参考:cdnlookup
https://github.com/burpheart/cdnlookup
END
如您有任何投稿、问题、需求、建议
请NOVASEC公众号后台留言!
或添加 NOVASEC 联系人
感谢您对我们的支持、点赞和关注
加入我们与萌新一起成长吧!
本团队任何技术及文件仅用于学习分享,请勿用于任何违法活动,感谢大家的支持!!
推荐站内搜索:最好用的开发软件、免费开源系统、渗透测试工具云盘下载、最新渗透测试资料、最新黑客工具下载……
还没有评论,来说两句吧...