如何绕过 Cloudflare, Incapsula, SUCURI 和其它的 WAF
2021-05-23 10:40:00 Author: www.4hou.com(查看原文) 阅读量:160 收藏

Web应用程序防火墙(WAF)是Web服务器(例如Apache的mod_security)或服务(例如Cloudflare,Incapsula,SUCURI)的附加组件(模块),它们是在向用户发送从用户收到的请求到Web服务器之前,对其进行分析,如果有危险,则阻止或修改它。

应用防火墙还可以执行攻击检测和防御功能。

如果WAF是Web服务器模块,则此软件在同一服务器(计算机)上运行。如果WAF是一项单独的服务,则工作方案如下:

1.要保护的网站在同一服务器上运行而不受保护。

2. DNS record A提供Web应用程序防火墙的IP地址,即Cloudflare,Incapsula,SUCURI或其他一些IP地址,而不是此网站的IP地址。Cloudflare提供的安全服务是帮助网站阻止来自网络的黑客攻击、垃圾邮件等,并提升网页的浏览速度,这和一般的安全软件往往会影响网页的运行速度大相径庭。目前Cloudflare在全球拥有152个数据中心,如果用户使用了其服务,那么网络流量将通过Cloudflare的全球网络智能路由。

Incapsula由一群安全行业资深人士于 2009 年创办,他们在 Web 应用程序安全、在线安全和身份盗用等方面具有很强的技术专长。与CloudFlare不同,Sucuri不提供免费计划。

3.之后,当用户向受保护的网站发出请求时,所有请求都将发送到Cloudflare,Incapsula,SUCURI或类似服务。

4.该服务接收请求,对其进行处理,然后向源服务器(让我提醒你,源服务器甚至没有受到保护)发出请求,从源服务器接收必要的页面/数据,并将其重定向到发出请求的用户。

对于连接到网站的普通访问者而言,没有任何区别,一切都是自然而然进行的。但是出于审核网站的目的,Web应用程序防火墙可能会成为问题。 WAF阻止恶意请求并防御DoS攻击。同时,来自脚本(木马)的请求不能被接受,它们在初始阶段或验证码通过阶段就被过滤掉了,这使得无法使用WPScan,sqlmap等工具来搜索网站的漏洞。如果在服务器中嵌入WAF的情况下(例如mod_security),只有一个绕过选项是可能的,则构造此类请求以绕过基于规则的模式,那么对于WAF服务,可能有两个选项:

1.与普通WAF相同,即试图超越规则;

2.绕过WAF将请求直接发送到服务器;

在绝大多数情况下,源服务器(它们正在尝试借助外部WAF服务加以保护)仍被配置为接受和处理来自任何人(而不仅仅是来自充当代理的WAF)的请求。因此,如果你只知道网站的真实IP,则可以完全抵消他们使用WAF服务进行保护的尝试。

1.png

因此,Cloudflare以及Incapsula,SUCURI等的绕过策略,可以归结为找到了一个真正的IP网站。这个主题(搜索一个真实的IP站点)已经在miloserdov.org网站上讨论过好几次了,因为出于其他目的也需要真实IP:信息收集、边界研究、在同一服务器上搜索其他网站,等等。顺便说一下,关于这些问题,请参阅以下文章:

如何查找一个IP上的所有网站

解剖诈骗者网站(案例)

如何在Cloudflare中查找网站的真实IP

如何确定网站是否在CloudFlare之后

这个任务是专门为专用工具而设计的,比如CloudFail。在前面提到的文章中,我经常使用这种方法,即查看域的DNS记录的SecurityTrails历史记录,并检查(使用cURL并指定主机名)找到的哪个IP地址将正确响应。

通过绕过DNS历史记录脚本(这是程序的名称),该技术以及其他一些技术在绕过防火墙中是自动进行的。

工作中使用了以下服务:

Securitytrails;

CrimeFlare;

Certspotter;

DNSDumpster;

IPinfo;

ViewDNS;

该脚本尝试通过不同的方法找出真正的IP:

DNS历史分析;

搜索子域并分析子域的IP地址;

查询所有找到的IP地址以进行验证;

通过在Kali Linux上滥用DNS历史记录来安装以绕过防火墙:

2.png

通过滥用BlackArch中的DNS历史记录来安装以绕过防火墙:

3.png

使用该程序非常简单:只有一个强制性-d选项,之后你需要指定要分析的域:

4.png

结果,为anti-malware.ru域找到了服务器的真实IP地址:

5.png

[IP]列是可绕过WAF直接访问的地址,绕过WAF. [Confidence] 是地址数据正确的置信度(可能有几个具有不同置信度的IP变体),[Organization]:拥有找到的IP的人。

该程序将收集IP列表,并将仅在主域中对其进行检查。如果要检查找到的IP是否与检测到的子域匹配,请使用-a选项:

6.png

7.png

要将结果保存到文件中,请使用-o选项,然后你需要指定文件名,例如:

8.png

只会把找到的IP保存到文件中。

在更复杂的情况中,当程序无法确定实际IP地址时,可以提供帮助。事实上,尽管bypass-firewall-dns-history脚本使用了快速的子域搜索服务,但它们并不总是显示最完整的结果。你可以使用其他工具和服务构建自己的子域列表。例如,使用Amass:

9.png

找到的子域将被保存到subdm.txt文件中。现在使用-l选项,你可以指定文件的路径和附加的子域,它也将用于搜索真正的IP网站:

10.png

在这种情况下,即使没有外部程序进行子域搜索,也可以确定真正的IP,这仅仅是针对困难情况采取行动的算法的一个示例。

如何使用发现的IP(后利用)

当找到一种绕过Web应用程序防火墙的方法(找到网站的真实IP)时,就会有两种选择:

第一种选择:编辑主机文件,这样任何来自你的操作系统和程序的请求都会绕过防火墙直接发送到网站。在Linux/Mac系统上,这是/etc/hosts文件,在Windows系统上,这是c:\Windows\System32\Drivers\etc\hosts,将添加如下内容:

11.png

第二个选择:设置Burp Suite。参照截图进行配置:

12.png

从现在开始,你的HTTP流量将直接转到原始Web服务器。现在,你可以按照通常的方式执行渗透测试,你的请求将不会在WAF中被阻止。

如何防范此脚本?

如果使用的是Web应用程序防火墙,请确保仅接受通过防火墙的流量。排除所有直接来自互联网的流量。例如,Cloudflare有一个IP列表,你可以将其添加到iptables或UFW的白名单中,并阻止所有其他流量。

首先,请确保没有可通过全局网络访问且仍接受连接的旧服务器。

其次,在线搜索Cloudflare, Incapsula, SUCURI和其他WAF的真实IP网站。

在本文中,我展示了如何使用一个相当简单的程序通过滥用DNS历史记录绕过防火墙。此外,一个基于此脚本的服务已经添加到SuIP.biz网站:https://suip.biz/?act=bypass-waf

13.png

本文翻译自:https://miloserdov.org/?p=2960如若转载,请注明原文地址:


文章来源: https://www.4hou.com/posts/pBny
如有侵权请联系:admin#unsafe.sh