绕过cdn查找网站真实ip借助网络空间搜索引擎

绕过cdn查找网站真实ip借助网络空间搜索引擎

什么是CDN?

CDN的全称是Content Delivery Network,即内容分发网络。CDN是构建在现有网络基础之上的智能虚拟网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。CDN的关键技术主要有内容存储和分发技术。

雨苁:说白了就是本地仓

为什么网站需要CDN?

性能很重要,如果网站不使用CDN,则所有用户都应将其请求发送到单个服务器,因为这会给服务器带来很多负担,网站的性能会降低。如今,大多数网站都使用CDN,因为它可以帮助他们提高加载速度,降低带宽成本,提高安全性等
CDN还为不同类型的企业和组织提供了许多特殊的好处,例如:

  • 电子商务 
  • 政府
  • 金融 
  • 媒体/出版
  • 行动应用程式 
  • 技术与SaaS

使用CDN有什么好处?

  1. 提高网站速度和加载时间。
  2. 降低带宽成本。
  3. 改善网站安全性。
  4. SEO优势
  5. 流量高峰和可扩展性
  6. 更高的转化率
  7. 可靠性
  8. 等等

因此,如果您想拥有一个性能可靠的可靠网站,则应考虑使用CDN。 

使用CDN之后,所有请求网站内容的用户都将从最近的CDN边缘服务器上获取其缓存版本,因此内容加载速度更快,并且网站的性能得到改善。

CDN反向代理

反向代理是接收客户端请求并将其转发到后端服务器的服务器。它是客户端和原始服务器本身之间的中间服务器。CDN反向代理通过缓存来自原始服务器的返回到客户端的响应,使这一概念更进一步。因此,CDN的服务器能够更快地将资产交付给附近的访客。由于以下原因,此方法也是理想的:

  • 负载平衡和可扩展性
  • 网站安全性提高

CDN安全性和WAF

CDN本身不能阻止恶意程序感染网站,CDN本身很容易受到攻击,因此您需要使用WAF。
一个WAFWeb应用防火墙通过过滤和监视Web应用程序和互联网之间的HTTP流量有助于保护Web应用程序。
通常,它可以保护Web应用程序免受跨站点脚本(XSS),文件包含和SQL注入等攻击。

网站来源IP

许多网站都使用上述保护措施来隐藏其原始IP,以防止攻击者遭受DDoS攻击以及攻击者可以执行的其他恶意操作。
这些网站大多使用基于云的安全性,代理或基于DNS的服务,这使得查找原始IP变得有些棘手。

为什么我们需要网站的原始IP?

答案很简单。拥有网站的原始IP后,您就可以绕过CDN提供的所有保护。

查找网站原始IP的方法

https://twitter.com/HolyBugx/status/1343156549162852352?s=20

正如我在Twitter上提到的那样,您应该尝试几种方法来寻找CDN / WAF背后的原始IP。我们将讨论可以用作攻击者的各种方法。

逆向思维

每当您想绕过某些东西时,就置身于对手之外,对思维过程进行逆向工程,以Blue Teamer的身份思考,并尝试找出其安全性实现!

Blue Teamers提供的保护

这是CDN提供商/蓝队成员为隐藏其网站的原始IP所做的常见操作

  • 将所有子域都保留在同一CDN上 

与根域相比,使用其他子域时,它们具有更高的成功机会,因为它们可能会提供可能导致信息泄露漏洞的文件,从而泄漏原始IP。

  • 不根据用户操作启动出站连接

如果我们可以使Web服务器连接到任意地址,则将显示源IP。应该配置允许用户从给定URL上传照片的“从URL上传”之类的功能,以便进行下载的服务器不是网站原始服务器。这很重要,因为如果攻击者可以选择输入的URL,则他们可以专门建立一个网站来监视与谁连接,或者使用监视与唯一URL关联的IP的公共服务。

  • 在配置CDN时更改其原始IP

DNS记录在许多地方存储历史记录。这些历史DNS记录将包含网站Origin IP Using CDN。

  • 限制使用IP直接访问网站 

防御者还有另一个有趣的选择,就是限制试图使用IP地址访问网站的用户,因此仅在提供域名时才加载网站。让我们探索如何在Nginx上做到这一点

要禁用/阻止对端口80的IP的直接访问,我们创建新的服务器配置,如下所示:

server {
 listen 80 default_server;
 server_name _;
 return 404;
}

要禁用/阻止对端口443的IP的直接访问,我们在服务器配置模块之一中使用以下命令:

if ($host != "example.com") {
 return 404;
}

例:

server {
 listen 443 ssl;
 server_name example.com
 
 ssl_certificate /etc/nginx/ssl/example.com.crt;
 ssl_certificate_key /etc/nginx/ssl/example.com.key;

 if ($host != "example.com") {
  return 404;
 }
}

这将阻止所有到https://你的ip的流量

我们将讨论使用一种有趣的方法绕过此限制。

  • 白名单 

仅允许来自CDN的请求的可能解决方案只是将CDN列入白名单,因为此方法似乎很有希望,并且足以使防御者隐藏其Origin Server,这在实践中颇具挑战性,因为他们只有3种方法,并且只有一种他们可能会工作:

选项A:将IP地址列入白名单

将IP地址列入白名单的问题在于,它们必须具有其所有可以访问其来源的CDN边缘服务器的IP地址。 
这有些问题。许多CDN并没有给出IP地址列表,即使这样做,他们也可能添加IP地址甚至更改它,而忘记通知它们。这些白名单需要定期更新,以免破坏站点。

选项B:将请求中的唯一标识符列入白名单

这个想法很简单。CDN将在其请求中向源服务器发送一个唯一的标识符,他们可以在源服务器上使用该标识符来标识CDN并允许其请求。但是,此方法并非完全安全。攻击者还可以自由设置请求。也就是说,如果我们知道他们使用的CDN提供程序,并且我们也知道CDN提供程序如何向原始服务器标识自己。如果攻击者拥有此信息,则可以轻易地欺骗该请求。

选项C:无法猜测的原始主机名

对于防御者来说,这可能是最可靠的解决方案,因为攻击者尝试访问Web服务器时,他们将无法找到它。防御者会创建一些随机的长字母数字字符集,并将其用作子域。例如,如果他们的域名是“ HolyBugx.com”,则他们设置一个子域名,例如“ 2547d0jeid15ma.HolyBugx.com”。
这样,该主机名将仅对他们及其CDN提供程序是已知的,并且他们可以将具有该主机名的请求列入白名单。

结论

回到进攻方

我们只是基本了解了防御者试图保护其原始网站的观点,知道了这些信息后,我们便在思考过程中了解了我们将要做的事情的思维导图,同时尝试绕过这些限制并找到了原始IP。 Web服务器。

上面是一个简单的思维导图,介绍了在测试网站的原始IP泄漏时应该尝试的事情,让我们深入研究一下。

侦察

https://medium.com/bugboun/..econ-728c5242a115

最重要的部分是做一些基本的侦查以获得尽可能多的信息。我们的想法是找到有用的信息,例如:

  • IP范围/ CIDR
  • 主机相关信息
  • DNS记录
  • 网络服务器
  • 虚拟主机
  • 与Web服务器位于同一服务器上的托管服务器(例如,邮件服务器)
  • 信息泄露漏洞

关于DNS记录的所有信息

DNS记录在许多地方存储历史记录。这些历史DNS记录可能包含网站Origin IP Using CDN。
如前所述,有些网站可能配置了错误的DNS记录,我们无法从中收集有用的信息。

1- SecurityTrails

SecurityTrails使您能够浏览任何互联网资产的完整当前和历史数据。IP和DNS历史记录,域,SSL和开放端口情报。

我们将对目标执行简单的查询以查看其历史数据,特别是DNS记录,因为它使您可以找到A,AAAA,MX,NS,SOA和TXT记录的当前和历史数据。 
当网站直接在服务器的IP上运行并随后移至CDN时,这很容易找出真实服务器的IP。

然后,我们将单击“历史数据”并查看有关目标的有用信息。

DNS记录中都不应包含任何有关原始IP的信息,请仔细查看任何SPF和TXT记录,以确保它们是否包含有关原始的任何信息。
指向原始服务器的简单A,AAA,CNAME或MX记录将公开原始IP。

2-dig

您可以使用dig为您执行一些简单的查询,还可以确定目标是否正在使用Cloudflare等著名的提供程序。

这就是Cloudflare IP范围,确认我们可以在发现的A记录IP地址上使用whois

另外,还有另一种方法可以确定目标是否在Cloudflare之后,即使用curl:

关于MX记录的所有信息

MX记录是最受青睐的方法之一,因为有时可以很容易地找到原始IP。如果邮件服务器由与Web服务器相同的IP托管,则攻击者可以从外发电子邮件中找到IP地址。

1-邮件标题和重置密码

如果邮件服务器由与Web服务器相同的IP托管,那么我们还有另一个有趣的选择是使用“重置密码”功能,因此我们只需在目标网站上创建一个帐户,然后使用重置密码,收到的电子邮件,可能会显示原始服务器IP。

请注意,您应该收集在收到的电子邮件中可以看到的所有IP地址,并手动尝试它们,以查看它是否是服务器的原始IP。例如,有时“返回路径”的值会变得很方便。

2-外发电子邮件

您可以使用另一种有趣的方法,将电子邮件发送至不存在的电子邮件地址至“ non-existent@target.com ”将导致邮件退回;因为该用户不存在,所以传递将失败,并且您应该收到一个包含向您发送该电子邮件的服务器的原始IP的通知。

虚拟主机发现

找到Web服务器之后,您将获得一个Web服务器及其IP地址的列表,您应该找出目标服务器是否在这些服务器上配置为虚拟主机

对于Vhosts发现,如果您喜欢GUI,我建议使用Pentest-Tools,如果您喜欢我的CLI工具,则我建议以下工具:

使用这些工具可以找到虚拟主机,如果将目标配置为虚拟主机,则可以找到原始IP。

安全性错误配置

错误配置可以被认为易于利用,例如,要加载的内容的URL指向一个IP,该IP不是可以连接到您的CDN的一部分,例如服务器的实际IP。

问:但是可以设置一个只包含CSS文件而没有其他内容的服务器(例如),您如何说IP是我们正在寻找的实际IP?

答:嗯,实际上,我们并不是在CDN后面寻找服务器的任何真实IP。我们正在寻找可验证的信息,只有在此之后,我们才能得出结论。

基本上,我们正在寻找不属于CDN的IP 

物联网搜索引擎

当我们想对目标及其资产进行基本检查时,IoT搜索引擎是我们最好的朋友。我们可以查询一些物联网搜索引擎,以获取有关目标的有用信息。

1- Censys

Censys是一个平台,可帮助信息安全从业人员发现可从Internet访问的设备。在Censys的帮助下,您可以找到有价值的信息,例如:

  • IP地址
  • 开放端口
  • SSL证书
  • 托管服务商 
  • 等等

“查询我们的文章”主题非常简单,我们只需查询“域名”本身,然后查看是否存在IP泄漏。

使用的另一种方法是使用证书进行搜索,只需从蓝色栏中选择证书,然后搜索目标。

现在打开每个结果以显示详细信息,然后从右侧的“浏览”菜单中选择“ IPv4主机”:

只需分析您的目标,看是否有IP泄漏,然后尝试使用其IP达到目标。

为了向您展示Censys有时如何导致目标的完全IP泄漏,我现在向您展示我最近正在研究的目标,并且通过简单的IPv4查询,我意识到了CDN背后的IP:

正如您在上面看到的,我探索并意识到有一个IP,它是网站的原始IP。

2-Shodan

Shodan是另一个物联网搜索引擎,它可以帮助安全研究人员找到有关他们所接近目标的有用信息。
在Shodan中有很多要搜索的内容,我强烈建议您查看Shodan过滤器指南。为了本文的方便,我们只需查询域并搜索IP。

使用Shodan,您可以查询其他有趣的过滤器:

  • 组织机构
  • 社交网络
  • Favicon哈希
  • SSL证书
  • 等等

3-zoomeye

ZoomEye是另一个物联网搜索引擎,可用于发现:

  • 网络服务器
  • IP和端口
  • 标头和状态码
  • 漏洞
  • 等等

使用IP地址直接访问网站

正如我之前提到的有关此方法的内容:

防御者还有另一个有趣的选择,就是限制试图使用IP地址访问网站的用户,因此仅在提供域名时才加载网站。
我们将讨论使用一种有趣的方法绕过此限制。

让我们跳出框框思考。如果我们扫描目标CDN提供商的IP范围,然后进行一些神奇的卷曲操作,该怎么办?
要找到IP范围,我们可以进行DNS暴力破解,因此,找到IP范围,然后我们可以继续使用以下命令:

如您所见,我们正在扫描目标的IP范围。然后,我们正在使用Httpx查找活动对象。然后,我们使用curl提供包含目标域的Host标头,从而绕过所有限制。

是时候发挥创意:Favicon哈希

网站图标有时对于查找有关网站使用的某些技术的有趣信息非常有用。
Shodan允许通过进行favicon哈希查找http.favicon.hash
哈希表示base64中favicons文件内容的MurmurHash3

用于生成哈希的Python3脚本

import mmh3
import requests
import codecs

response = requests.get('https://<website>/<favicon path>')
favicon = codecs.encode(response.content, 'base64')
hash = mmh3.hash(favicon)
print(hash)

请查看以下Blogpost进行深入研究:Asm0d3us — Favicon哈希 

您可以使用另一种有用的工具是最爱,最多pielco11。使用此工具,您可以从favicon图标开始并使用Shodan查找真正的IP。

XML-RPC Pingback

XML-RPC允许管理员使用XML请求远程管理其WordPress网站
pingback是ping的响应。当站点A链接到站点B时执行ping操作,然后站点B通知站点A它知道该提及。这是pingback。

您可以通过调用轻松检查它是否已启用https://www.target.com/xmlrpc.php。您应该获得以下信息:
XML-RPC server accepts POST requests only.

您还可以使用XML-RPC Validator

根据WordPress XML-RPC Pingback API,这些函数采用2个参数sourceUritargetUri。这是Burp Suite中的外观:

参考文献

Cloudflare.com  
CDN.net
Sitelock.com
knoldus.com
keycdn.com
Imagekit.io作者:Rahul Nanwani
GeekFlare.com作者:Chandan Kumar
Detectify.com作者:Gwendallecoguic
Secjuice.com作者:Paul dannewitz
Nixcp.com作者:Esteban Borges
Pielco11.ovh用户pielco11
WAF规避技术作者Soroush Dalili

from