信息收集——绕过CDN寻找真实IP
最近工作使用了很多CDN查询的网站工具之类的,为了以防以后忘记了,小小的总 (ban) 结 (yun) 一下。
以下是参考到的文章,感谢大佬们。
参考文章:
https://www.cnblogs.com/qiudabai/p/9763739.html
http://blog.leanote.com/post/snowming/CDN
https://www.lsablog.com/networksec/penetration/some-ways-to-check-cdn-and-find-real-ip/
https://www.lstazl.com/cdn%E6%A3%80%E6%B5%8B%E4%B8%8E%E7%BB%95%E8%BF%87/
首先我们要了解什么是CDN:
CDN 即
content delivery network
,内容交付网络,通过在网络各处放置节点服务器所构成的在现有的互联网基础之上的一层智能虚拟网络,CDN系统能够实时地根据网络流量和各节点的连接、负载状况以及到用户的距离和响应时间等综合信息将用户的请求重新导向离用户最近的服务节点上。开了CDN 之后,会智能匹配当地最近的节点来的,所以请求的实际 IP 不同。
对用户来说CDN的存在能够使你访问网站的响应速度更快,用户体验更好。
对网站所有者来说,CDN的存在减轻了服务器的压力,同时也将真实服务器IP隐藏了起来,降低被黑客入侵的风险。
验证是否存在CDN
nslookup
使用nslookup查询,如果查询结果是多个IP,则很大可能使用了CDN,如果返回一个IP也不一定是真实IP。
下面这种就是使用了CDN的:
下面这种是没有使用CDN的:
多地ping
使用各种多地 ping 的服务,查看返回的IP 地址是否唯一,如果返回的IP不是唯一的,那么很有可能使用了CDN。
多地 Ping 网站有:
http://ping.chinaz.com/
http://ping.aizhan.com/
https://www.17ce.com/
https://wepcc.com/
响应头
Accept-Ranges: bytes
null: HTTP/1.1 200 OK
X-Cache: HIT from cache.51cdn.com
X-Via: 1.1 zib232:4 (Cdn Cache Server V2.0), 1.1 xz115:6 (Cdn Cache Server V2.0)
Connection: keep-alive
Last-Modified: Fri, 24 Oct 2014 09:24:58 GMT
Content-Length: 1480
Age: 22852
Date: Sat, 14 Oct 2017 04:22:44 GMT
X-Powered-By: Servlet/2.5 JSP/2.1
Content-Type: text/html
从响应头字段可以看出cdn相关信息。
在线分析网站
https://builtwith.com
https://www.cdnplanet.com/tools/cdnfinder/
dig
通过dig命令查看DNS解析记录, 一般有的 CNAME 的大多数是 CDN。
CDN厂商ASN号和CDN段列表
在这篇文章中 ,提到了一中域名批量CDN检测的方式,使用python脚本来进行扫描,脚本来源于 vxscan(Author: al0ne) 。
这个脚本的原理是利用 ASN。ASN 是自治系统号,相同组织的 ASN 是一样的,所以一个 CDN 厂商的 IP 段可能都在一个 ASN 里。
判断逻辑如下:
- 解析域名,获取解析之后的 IP;
- 判断此 IP 是否命中国内外常见 CDN 段,如果命中,说明有 CDN;
- 对此 IP 查询其对应的 ASN 号(通过
response = reader.asn(host)
这一句代码)。如果获取的 ASN 号命中了上面的国内外常见 CDN 厂商的 ASN 号,说明有 CDN;- 如果通过这两次判断都没有命中,那么极有可能说明是真实 IP。
绕过 CDN 查找网站真实 IP
nslookup
使用国外冷门DNS进行域名解析,可能解析到真实IP。
查询历史DNS记录
查看 IP 与 域名绑定的历史记录,可能会存在使用 CDN 前的记录,相关查询网站有:
DNS查询
微步在线
在线域名信息查询
DNS、IP等查询
CDN查询IP
SecurityTrails
利用SecurityTrails平台,攻击者就可以精准的找到真实原始IP。他们只需在搜索字段中输入网站域名,然后按Enter键即可,这时“历史数据”就可以在左侧的菜单中找到。
除了过去的DNS记录,即使是当前的记录也可能泄漏原始服务器IP。例如,MX记录是一种常见的查找IP的方式。如果网站在与web相同的服务器和IP上托管自己的邮件服务器,那么原始服务器IP将在MX记录中。
查询子域名
很多站长可能只会对主站或者流量大的子站点做了 CDN,很多在同一台服务器或者同一个C段内的其他子站点就没有做CDN,此时就可以通过查询子域名对应的 IP 来辅助查找网站的真实IP。
修改host绑定到目标域名,能访问则目标域名和其子域名在同服务器,若不在可尝试c段。
常用的子域名查找的方法和工具:
一个大佬博客的工具:https://phpinfo.me/domain/
微步在线(https://x.threatbook.cn/)
输入要查找的域名(如baidu.com),点击子域名选项就可以查找它的子域名了,但是免费用户每月只有5次免费查询机会。如图:
- Dnsdb查询法。(https://dnsdb.io/zh-cn/)
只需输入baidu.com type:A就能收集百度的子域名和ip了。如图:
Google 搜索
Google site:baidu.com -www 就能查看除www外的子域名,如图:
各种子域名扫描器
子域名挖掘机仅需输入域名即可基于字典挖掘它的子域名,如图:
Subdomainbrute以windows为例,打开cmd进入它所在的目录输入
1 | Python subdomainbrute.py baidu.com --full |
即可收集百度的子域名,如图:
网络空间引擎搜索法
zoomeye 用户手册: https://www.zoomeye.org/doc?channel=user
查询语法在搜索页面即可看到。
搜索语法: https://help.shodan.io/the-basics/search-query-fundamentals
通过这些网络空间搜索引擎, 网站的title关键字或者网站的body特征就可以找出收录的有这些关键字的ip域名,很多时候能获取网站的真实ip
利用SSL证书寻找真实原始IP
转自 https://www.cnblogs.com/qiudabai/p/9763739.html
使用给定的域名
假如你在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
网站漏洞查找
- 目标敏感文件泄露,例如:phpinfo之类的探针、GitHub信息泄露等。
- XSS盲打,命令执行反弹shell,SSRF等。
- 无论是用社工还是其他手段,拿到了目标网站管理员在CDN的账号,从而在从CDN的配置中找到网站的真实IP。
网站邮件订阅查找
RSS邮件订阅,很多网站都自带 sendmail,会发邮件给我们,此时查看邮件源码里面就会包含服务器的真实 IP 了。
也可让服务器发送一些非HTML的数据,比如让服务器发送邮件给你,查看邮件原文即可获得SMTP服务器的真实IP。
注册邮件
密码重置邮件
广告推送邮件
如下图,可以通过显示邮件原文,在原文中可能会有目标站点的IP。
用 Zmap 扫全网
需要找 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。
DOS
打光cdn流量,回溯真实ip。 这种不能轻易尝试,造成严重后果就不好了。
针对CloudFlare
如果目标站点使用的是cloudflare的CDN,可以去crimeflare 碰碰运气,说不定就会又意外的发现哦。
验证真实IP
找到真实 IP 后 先访问 IP 看看和原站是否一样。 如果不能直接访问,可能做了IP访问限制,可以通过修改hosts再访问网站,测试是否成功。