大家好,我是VoltCary
当我们谈论绕过CDN查找真实IP的时候,不得不提到SSL证书,它确实是我们寻找真实IP的一大利器,至于为什么SSL证书会导致源站IP泄露?很多人或许没有深入了解这个问题。目前好像还没有几篇文章详解过,只是将其作为绕过CDN查找源站IP文章中一部分。
为了安全考虑,或者为了访问速度考虑,重要的域名应该都会加上CDN,也能保护一下源站ip不被泄露,再加上一层SSL证书,表面上,SSL证书看起来安全无比,包含的只是加密通信所需的公钥、域名信息以及证书颁发机构的相关信息,与服务器真实IP毫无关系。
然而,事实真的是这样吗?本文将深入剖析SSL证书如何成为泄露源站IP的关键,并借助Censys工具来揭示其中的秘密。
提到证书查询IP的情况,不得不提到知名的网络搜索引擎Censys,它通过持续扫描全球的IP地址,收集并分析网络设备的信息。其核心能力在于对证书和网络服务的深度解析。
censys工作原理:
对于加密服务(如HTTPS),Censys会在握手过程中收集SSL/TLS证书信息,包括证书的公钥、域名信息(如Common Name和Subject Alternative Name)以及颁发者信息等。
综上所述,Censys扫描全球在线IP,包括端口、证书、元数据,此时censys数据库中已经存储了大量相关数据。攻击者先获取CDN的域名,查询域名的相关SSL证书信息,结合Censys语法进行查询,censys数据库中存储了大量源站IP的证书信息,利用这些信息与攻击者输入的证书信息匹配,存在相关性,那么就把这些IP作为域名的源站IP。
因此,证书是网络中非常可靠的“身份标识”,可以跨域名和IP进行关联。
当源站IP证书与域名证书存在如下场景,CDN很有可能被绕过:
1. 域名证书与源站ip证书完全一致
每个SSL证书都有唯一的指纹(SHA256哈希值)、序列号和序列号有效期,用于标识此证书的唯一性。场景1就是源站IP和域名都共同使用了这个证书。
censys比对证书的公钥和指纹:证书中的公钥用于加密和解密数据,其指纹是公钥的哈希值。Censys通过比对证书的公钥和指纹,可确定证书的唯一性和真实性,若两个证书的公钥或指纹相同,可认定它们存在关联。
2. 域名证书与源站IP证书存在相关性
每个SSL证书都有主题和颁发者信息:包含了域名、组织名称、国家等主题信息,以及颁发者的相关信息。
场景2就是源站与域名证书的这些信息存在相关性的情况。
Censys通过比对这些信息,可直接判断证书之间的关联,如两个证书的主题或颁发者相同或相似,可能存在关联。
3. 通过证书链识别
•验证证书的合法性与完盩性:证书链由终端
实体证书、中间证书和根证书组成,Censys
会检查证书链中的每个证书是否有效且完
整,通过验证证书链上每个证书的签名,确
保其未被篡改,从而确认证书的可信度以及
与根证书的关联关系。
•追溯证书的颁发路径:Censvs 通过分析证书
链中各证书的颁发者和主体信息,明确证书
的颁发路径,若多个域名的证书链最终指向
同一个根证书或中间证书,可推断这些域名
的证书存在关联。
•发现潜在的信任关系:证书链中的根证书通
常由权威的证书颁发机构颁发,被广泛信
任。如果不同域名的证书链共享同一根证书
或中间证书,意味着这些域名在信任层面上
存在一定关联,可能属于同一组织或存在业
务合作关系。
4. 分析协议行为
利用Censys分析目标CDN域名使用的应用层协议行为,通过查找协议中的特定字段、请求头、响应头、服务器标识等信息,结合已知的源站特征或常见的服务器配置,尝试识别与源站IP的关联,使用类似“protocols.http.headers.server: “Server Name””的语法进行搜索。
censys支持过滤输出Hosts、证书,并根据用户输入的关键字,这些关键字如果匹配Hosts、证书中的任意内容,例如Certificate、Fingerprint、Details等内容,就会输出相应的Hosts、证书。
1.查询域名可信任证书
(multipattern.com) and labels=trusted
返回了6个有效可信任的证书
2.查询使用此证书的Hosts
找到IP:66.155.40.24
结果分析:
可以确定的是IP:66.155.40.24是CDN
与前面域名使用的是同一个证书,但是还不能盲目确定它们都是同一家企业的资产。毕竟它们有可能使用的是CDN厂商提供的共享证书,CDN厂商的共享证书,会被多个不同
的用户使用。
下一步查看证书相关信息,如果证书SAN中只包含这一个域名,可以推测该IP与域名存在相关性,有可能是真实IP。
SSL证书并非天衣无缝,它可以在无意间暴露源站IP。借助Censys这样的工具,攻击者能够轻松地从证书信息中获取线索,进而定位源站IP。
安全团队需要更加警惕,通过合理的配置和持续的监控,避免这种隐患的发生。
以下是一些防止 Censys 通过证书链识别出源站 IP 和 CDN 域名关联的方法:
1.配置访问限制:
配置防火墙,禁止公开源站ip
屏蔽 Censys 的 IP 段
屏蔽 Censys 的 UA:在 CDN 的配置中,设置规则屏蔽 Censys 扫描使用的用户代理(UA),如在 Cloudflare CDN 的 “安全性 - WAF - 自定义规则” 中,将 “用户代理” 字段设置为等于 “Mozilla/5.0 (compatible; CensysInspect/1.1; +https://about.censys.io/)” 进行屏蔽。
2.利用服务器特性:
Nginx 特性:如果使用 Nginx 服务器且版本在 1.19.4 及以上,可在配置文件中添加 “ssl_reject_handshake on;” 指令,当通过 IP 访问时会终止 TLS 握手,避免暴露域名。
使用反向代理:在源站和 CDN 之间设置反向代理服务器,对源站 IP 进行隐藏,使 Censys 难以直接获取源站与 CDN 域名的关联。
3.设置虚假站点
生成假证书和假站点:创建一个虚假的网站,生成自签的空白 SSL 证书并应用到该假站点上,将假站点设置为默认站点。
设置返回代码:在假站点的配置文件中,添加返回特定状态码的指令,如 “return 444;”,使通过 IP 访问时返回无法访问的页面,隐藏真实源站。
下一期揭秘:更多技术手段获取真实IP,敬请期待!