发现CDNS背后的IP

    上一篇是一篇好文章,当前国外最火程序员的学习路线导图。可能跟国内的热点不太一样,所以学习兴致不高。今天,我翻译了一篇《CDN背后IP的查找办法》文章。查找CDN背后真实IP的帖子已经有了很多,不知道是不是有重复,看文章时间挺新的,就一并看看吧。

目录

一、什么是CDN?

    CDN 允许快速传输加载互联网内容所需的资源,包括 HTML 页面、 Javascript 文件、样式表、图像和视频。CDN 服务的普及程度持续增长,今天大部分的网络流量是通过 CDN 提供的,包括来自 Facebook、 Netflix 和 Amazon 等主要网站的流量。

 

二、为什么网站需要 CDN?

    性能问题---- 如果网站不使用 CDN,所有的用户都应该将他们的请求发送到一台服务器上,因为这会给服务器带来大量的负载,网站的性能会降低。现在大多数网站使用 CDN,因为它可以帮助他们有更好的加载速度,降低带宽成本,提高安全性等等。CDN 还为不同类型的企业和组织提供许多特定的好处,例如:

·  电子贸易

·  政府

·  金融

·  传媒/出版

·  移动应用程序

·  技术和 SaaS

三、使用 CDN 的好处是什么?

1.  提高网站速度和加载时间

2.  降低带宽成本

3. 改善网站安全

4.  搜索引擎优化优势

5. 流量峰值和可扩展性

6. 更好的转化率

7. 可靠性

8.  等等

 

    因此,如果你想有一个可靠的网站与良好的性能,你应该考虑使用 CDN。

    使用 CDN 后,所有要求网站内容的用户将从最近的 CDN 边缘服务器获得一个内容的缓存版本,因此内容将加载得更快,网站的性能得到提高。

    反向代理是一个服务器,它接收客户端请求并将其转发到后端服务器。它是客户机和原始服务器本身之间的中间服务器。CDN 反向代理将这个概念更进一步,缓存从原始服务器返回到客户机的响应。因此,CDN 的服务器能够更快地将资产传递给附近的访问者。由于以下原因,这种方法也是可取的:

· 

· Load balancing and scalability 负载平衡和可伸缩性

· Increased website security

CDN Security and WAFs

    内容发布网络本身不能阻止坏的机器人感染网站,内容发布网络本身就很容易受到攻击,这就是为什么你需要使用 WAF 或 Web 应用层防火墙通过过滤和监控网络应用程序和互联网之间的 HTTP 流量来帮助保护网络应用程序。它通常保护 web 应用程序免受攻击,比如跨网站脚本文件、文件包含、 SQL 注入等等。

 

五、网站来源 IP 地址

    许多网站使用上面提到的保护来隐藏他们的 Origin IP 来防止攻击者受到 DDoS 攻击,以及其他攻击者可以做的恶意事情。这些网站大多使用基于云的安全、代理或基于 dns 的服务,这使得要找到 Origin IP 有点棘手。

1、为什么我们需要一个网站的原始 IP?

    答案是相当简单和简短的; 一旦你有一个网站的起源 IP 你可以绕过所有的保护 CDN 提供。

 

六、查找网站起源 IP 的方法?

正如我在 Twitter 上提到的,有几种方法可以帮助您找到 CDN/WAF 背后的 Origin IP。我们将讨论作为攻击者可以使用的各种方法。

 

逆向工程

    无论何时您想要绕过某些东西,将自己置于对手的位置,并对您的思考过程进行逆向工程,将自己视为一个 Blue 团队成员,并尝试找出他们的安全实现!

(一)蓝队提供的保护

这是 CDN 提供商/蓝队为了隐藏他们网站的原始 IP 地址所做的一些常见的事情: 

将所有子域保持在同一个 CDN 上:

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

不基于用户操作启动出站连接:

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

在配置 CDN 时更改它们的原始 IP:

    DNS 记录是存档历史记录的许多地方。这些历史 DNS 记录将包含使用 CDN 的网站 Origin IP。

限制使用 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;

 }

}

    这会阻塞所有通往 的传输,我们将使用一个有趣的方法来讨论绕过这个限制。

· Whitelisting  白名单

    对于只允许来自 CDN 的请求的一个可能的解决方案是简单地将 CDN 列入白名单,因为这个方法可能看起来很有前途,并且足以让辩护者隐藏他们的 Origin Server,这在实践中是相当具有挑战性的,因为他们只有3个方法,而且只有一个可以工作:

 

a: 白名单 IP 地址

    白名单化 IP 地址的问题在于,它们必须拥有所有可能访问它们的 CDN 边缘服务器的 IP 地址。这是有点问题的。许多 cdn 并不公布他们的 IP 地址列表,即使他们这样做了,他们也可能添加一个 IP 地址,甚至更改它而忘记通知他们。这些白名单需要定期更新,以免破坏站点。

 

b: 在请求中添加唯一标识符

    这个想法很简单。将在请求中发送一个唯一标识符到原始服务器,他们可以在原始服务器上使用它来识别 CDN 并允许它的请求。然而,这种方法并不完全是万无一失的。攻击者也可以自由地设置请求。也就是说,如果我们知道他们使用的 CDN 提供者,以及如果我们也知道 CDN 提供者如何向原始服务器标识自己。如果攻击者有这些信息,他们可以很容易地欺骗请求。

 

c: 无法猜测的起源主机名

    对于防御者来说,这可能是最可靠的解决方案,因为如果攻击者试图到达 Web 服务器,他们将无法找到它。防御者创建一些随机的、长的字母数字字符集,并将它们用作子域。例如,如果他们的域名是“ HolyBugx.com” ,那么他们就设置一个子域名,比如“2547d0jeid15ma”。HolyBugx.com”。然后,这个主机名将只有他们和他们的 CDN 提供程序知道,他们可以白名单请求有这个主机名。

总结

(二)返回攻击者一方

我们只是对试图保护他们的起源网站的防御者的观点有了一个基本的了解,知道这些信息我们就有了一个思维导图,在我们的思考过程中,我们试图绕过这些限制,找到 Web 服务器的起源 IP。

以上是一个简单的思维导图,关于我们应该尝试的东西,同时测试一个网站的起源 IP 泄漏,让我们深入研究一下。

1、侦察

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

· IP Ranges/CIDRs IP 范围/CIDRs

· Host Related Information 主机相关信息

· DNS Records DNS 记录

· Web Servers 网络服务器

· Vhosts

· Hosted Servers on the same server as the Web Server (Eg Mail Servers) 托管服务器与 Web 服务器在同一台服务器上(例如邮件服务器)

· Information Disclosure Vulnerabilities 信息披露漏洞

2、关于 DNS 记录的一切

DNS 记录是存档历史记录的许多地方。这些历史 DNS 记录很可能包含网站 Origin IP Using CDN.As 我之前提到过,有可能一些网站配置错误的 DNS 记录,我们可以从中收集有用的信息。

1-SecurityTrails

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

我们将对我们的目标进行一个简单的查询,查看它的历史数据,特别是 DNS 记录,因为它可以让您找到 a、 AAAA、 MX、 NS、 SOA 和 TXT 记录的当前和历史数据。这可以很方便地找出真正的服务器的 IP 时,网站是直接运行在服务器的 IP,后来被移动到 CDN。

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

没有任何 DNS 记录应该包含任何提到的原始 IP,仔细查看任何 SPF 和 TXT 记录,以确保他们包含任何关于原始 IP 的信息。只需指向原始服务器的 a、 AAA、 CNAME 或 MX 记录就可以公开原始 IP。

 

2- 挖掘

您可以使用 dig 为您执行一些简单的查询,并查明目标是否使用著名的提供程序,如 Cloudflare。

这就是 Cloudflare IP Range,为了确认我们可以使用 whois 对我们找到的 a 记录 IP 地址:

另外,还有另外一个方法可以确定目标是否在 Cloudflare 背后,那就是使用 curl:

3、关于 MX 记录的一切

    MX 记录是最受欢迎的方法之一,因为有时要找到源 IP 是多么容易。如果邮件服务器的 IP 地址与 Web 服务器的 IP 地址相同,那么攻击者就可以从发出的邮件中找到这个 IP 地址。

1- 邮件标题及重设密码

如果邮件服务器的 IP 地址与网络服务器的 IP 地址相同,那么我们另一个有趣的选择就是使用“重置密码”功能,这样我们就可以在目标网站上创建一个帐户,然后使用重置密码,即收到的邮件,可能会显示原始服务器 IP 地址。

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

 

2- 发出电邮

还有一个有趣的方法可以使用,将电子邮件发送到一个不存在的电子邮件地址“ non-existing@target. com”将导致退回; 因为用户不存在,传递将失败,您应该收到一个通知,其中包含发送电子邮件给您的服务器的 Origin IP。

4、虚拟主机发现

一旦您找到 Web 服务器,您就有了 Web 服务器及其 IP 地址的列表,您应该会发现您的目标域是否在这些服务器上配置为虚拟主机。

对于 Vhosts 的发现,如果你喜欢图形用户界面,我建议你使用 Pentest-Tools,如果你像我一样喜欢 CLI 工具,我建议你使用以下工具:

使用这些工具您可以找到 Vhosts,如果您的目标被配置为 Vhost,那么您就有机会找到 Origin IP。

5、安全配置错误

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

问: 但是你可以只用一个 CSS 文件建立一个服务器,没有其他东西(例如) ,你怎么能说 IP 就是我们正在寻找的实际 IP?

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

基本上,我们正在寻找不属于 cdn 的 ip。

 

6、物联网搜索引擎

物联网搜索引擎是我们最好的朋友,当我们想要对我们的目标和它的资产做一些基本的侦查。

1- Censys

Censys 是一个帮助信息安全从业者发现可以从互联网上访问的设备的平台。在 Censys 的帮助下,你可以找到有价值的信息,比如:

· IP Address IP 地址

· Open Ports 开放港口

· SSL Certs SSL 证书

· Hosting Providers  托管服务提供商

· etc. 等等

我们的文章主题的查询非常简单,我们只需要查询域本身,看看是否有任何 IP 泄漏。

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

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

简单地分析你的目标,看看是否有任何 IP 泄漏,并尝试使用他们的 IP 到达你的目标。

 

为了向你展示 Censys 有时候是如何导致目标的完全 IP 泄露的,我现在将向你展示我最近正在研究的一个目标,通过简单的 IPv4查询,我实现了 CDN 背后的 IP:

正如你可以看到上面,有一个 IP,我探索和意识到,这是网站的起源 IP。

 

2-Shodan

“撒旦”是另一个物联网搜索引擎,它可以帮助安全研究人员找到有用的信息,关于他们正在接近的目标。在 Shodan 有很多东西可以搜索,我强烈建议你查看 Shodan Filters guidance,为了这篇文章,我们可以简单地查询域名和搜索 IPs。

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

· Organizations 组织

· ASNs 天冬氨酸

· Favicon Hashes 图标哈希

· SSL Certificates 证书

· etc. 等等

 

3- Zoomeye

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

· Web Server Web 服务器

· IP & Ports IP 和端口

· Headers & Status Codes 头部和状态代码

· Vulnerabilities 漏洞

· etc. 等等

7、使用 IP 地址直接访问网站

正如我前面提到的这个方法:

另一个有趣的,是限制用户试图到达网站使用一个 IP 地址,因此网站只加载时,域名是提供。我们将讨论绕过这个限制使用一个有趣的方法。

让我们跳出框框来思考。如果我们扫描我们的目标 CDN 提供商的 IP 范围,然后做一些神奇的 Curl 的东西会怎么样:

如你所见,我们正在扫描目标的 IP 范围。然后我们找到了使用超文本传输协议的活体。然后,我们使用 curl 提供一个包含目标域的 Host 头,因此绕过了所有限制。

8、Favicon hash

    图标有时候对于查找网站使用的某些技术的有趣信息非常有用。允许通过 http.favicon.hash 查找 favicon hash。哈希指的是图标文件内容在 base64中的 MurmurHash3()。

用于生成散列的脚本:()

import mmh3

import requests

import codecs

 

response = requests.get(;website>/<favicon path>)

favicon = codecs.encode(response.content, base64)

hash = mmh3.hash(favicon)

print(hash)

 

你可以看看下面的博客: Asm0d3us ー Favicon hash()

    你可以使用的另一个有用的工具是 pielco11()的 Fav-Up()。使用这个工具,你可以查找真正的 IP 开始从图标图标和使用 Shodan。

9、Xml-rpcpingback

XML-RPC 允许管理员使用 XML requests 远程管理 WordPress 网站。pingback 是 ping 的响应。当站点 a 链接到站点 b 时执行 ping,然后站点 b 通知站点 a 它知道提到了 ping。这是 pingback。

您可以通过调用 服务器轻松地检查它是否启用。

您还可以使用 xml-rpcvalidator,。

根据 WordPress 的 XML-RPC Pingback API(),该函数采用2个参数 sourceUri 和 targetUri。以下是它在 BurpSuite 中的样子:

    “我尽最大努力写了一篇文章,可以帮助你了解 CDN 如何工作、Blue Teamers POV和攻击者选择的完整过程,试图找到 web 服务器的 Origin IP”。