利用源服务器IP地址绕过Cloudflare WAF

VSole2021-07-06 08:59:27

Cloudflare是一个应用广泛的web应用防火墙(WAF)的提供商。如果能在一秒内绕过所有防护措施,让WAF毫无用处,会怎么样呢?这篇文章会教你利用源服务器的IP地址绕过Cloudflare WAF。注意,以下方法可能适用于绕过任何类型的WAF。

简介

Cloudflare WAF是目前最流行的web应用防火墙之一,防护着超过1600万个网络资产。一年前Cloudflare发布了一个快速DNS resolver,并很快成为它们最受欢迎的产品。WAF作为一个反向代理服务器,不仅可以抗DDoS攻击,还可以在检测到攻击时触发告警。付费版本的用户还可以选择开启防护SQL注入、XSS、CSRF等常见漏洞攻击,但必须要手动启动。免费版本不支持这个功能。

虽然该WAF很擅长于阻挡基础的攻击载荷,但已经有很多绕过Cloudflare WAF的方法,而且每天都会出现新的,所以持续测试Cloudflare防火墙的安全性十分重要。就在我写这篇文章的时候:

很明显绕过防火墙是一件有意思的事情。基本上你有三种选择:

1.自定义攻击载荷来绕过防火墙规则。这可以提高你的防火墙绕过技术,但这是一个沉闷且耗时的过程,对于bug赏金猎人来说这是划不来的,因为时间就是金钱!如果你选择这种方法,最好尝试些PayloadsAllTheThings上列出的载荷,或者在百度上搜索下。

2.以适当的方式更改请求来破坏服务器。和第一种选择一样,这会很耗时,还要有耐心和良好的fuzzing技术。

3.通过查找Web服务器的原始IP来绕过Cloudflare。这也许是最简单的方法,不需要专业技术,作为侦察阶段的一部分也不会浪费时间。一旦你掌握了这个方法,你就再也不用担心WAF或DDoS保护(速率限制)。

本文中,我将重点介绍最后一种方法,以及如何根据获得的提示来实现它。

提示:Cloudflare是一个必须由人设置的工具,通常是研发或系统管理员。通过使用下文的方式导致配置错误产生的有效攻击,Cloudflare不会负责。

首先,侦察!

开始正常的侦察过程,获得尽可能多的IP地址(主机、nslookup域名解析服务器、whois服务器、BGP路由),然后检查哪些服务器有可用的web服务(netcat、nmap、masscan等工具)。一旦你有了web服务器的IP地址列表,下一步就是检查这些服务器是否配置了保护域作为虚拟主机。如果没有,你将会获得默认服务器页面或默认网站配置,这样你就找到了入口!使用Burp:

这是我想要的子域名,但是IP地址不正确:


这是错误的子域名,但有合适的IP地址:


这是我想要的子域名,而且有合适的IP地址——完美!

一些可以自动侦察的工具:

https://pentest-tools.com/information-gathering/find-virtual-hosts
https://github.com/jobertabma/virtual-host-discovery
https://github.com/gwen001/vhost-brute

Censys

如果你的攻击目标使用了SSL证书(使用SSL是必须的),而且是在Censys数据库已注册的(我强烈建议去买一个)。在Censys选择输入时选择“证书”,提供你目标服务器的域名,点击回车。

你会看到适用于你目标的证书列表:


点击每个结果显示详细信息,在最右侧的搜索菜单中选择“IPv4主机”:


可以看到使用该证书的服务器IP地址:


从这里开始,获取所有你可以获取的IP,然后回到上一章,尝试通过所有IP访问你的目标。

邮件头

下一步,检查你的目标服务器发出的邮件头:订阅新闻,创建用户,使用“忘记密码”功能,订购……尽你所能从测试网站获得一封邮件(提醒一下可以使用Burp)。

得到邮件后,检查邮件源文件,特别是邮件头。记录可以找到的所有可能属于一个服务器的IP和子域名。再一次,尝试通过这些访问你的目标。

我在邮件头Return-Path里找到了一些信息:

用Curl测试:

另一个技巧是将邮件从你自己的邮箱发送到不存在的电子邮件地址@yourtarget.com。如果发送失败,你应该会收到一个通知。

XML-RPC广播

XML-RPC(远程过程调用)是一个在WordPress博客平台很有名的工具——允许管理员使用XML请求远程管理其博客。ping包是ping命令的响应包。A发送ping请求到B,B回复A收到了请求,即回复一个ping包。

访问https://www.target.com/xmlrpc.php可以轻松知道目标服务器是否启用了XML-RPC广播,启用的情况下会返回信息:XML-RPC server accepts POST requests only。

根据WordPress XML-RPC Pingback API文档,该功能有sourceUri和targetUri两个参数。在Burp Suite中可以看到:


以前的发现

如果你用上述方法没有找到原始IP,或者之前的目标网站设置了保护措施,记住,有时候你最好的朋友就是目标自己,它会给你想要的信息。

你需要的就是让目标web服务器发送请求到你的服务器。利用SSRF、XXE、XSS等其他类型的漏洞,注入包含你服务器地址的载荷并查看日志。如果命中再检查虚拟主机。

甚至是像重定向或HTML/CSS注入等这些最简单的漏洞,如果被应用web服务器解析就会派上用场。

工具

现在我们已经知道怎样手动寻找IP地址,下面是一些工具可以帮助你节省宝贵的时间。你可以在探测Cloudflare保护机制时用这些工具进行侦察。

记住,没有100%管用的方法,因为攻击目标的不同,适用于某个的不一定适用于另一个。我的建议:都试试。

Cloudsnare.py:censys证书(需要密钥)

HatCloud:crimeflare,pinfo.io
https://github.com/HatBashBR/HatCloud

CrimeFlare:crimeflare,ipinfo.io
https://github.com/vincentcox/bypass-firewalls-by-DNS-history

bypass-firewalls-by-DNS-history:securitytrails,crimeflare
https://github.com/vincentcox/bypass-firewalls-by-DNS-history

CloudFail:dnsdumpster,crimeflare,子域名暴力攻击
https://github.com/m0rtem/CloudFail

CloudFlair:需要censys密钥
https://github.com/christophetd/CloudFlair

CloudIP:nslookup一些子域名(ftp,cPanel,mail,direct,direct-connect,webmail,portal)
https://github.com/Top-Hat-Sec/thsosrtl/blob/master/CloudIP/cloudip.sh

DNS资源

你也许明白,最重要的事是获取尽可能多的IP地址——不论方法,不论地点。DNS服务器当然是主要关注点,特别是其历史信息会一直存在于网络中。下面是一些很好用的DNS资源:

Netcraft::https://toolbar.netcraft.com/site_report?url=
dns-trails:https://securitytrails.com/dns-trails
DNSQueries:https://www.dnsqueries.com/en/domain_check.php
DNSdumpster:https://dnsdumpster.com/
Shodan:https://www.shodan.io/search?query=
以往关于Hackerone的案例报告:
https://hackerone.com/reports/255978
https://hackerone.com/reports/360825
https://hackerone.com/reports/315838

总结

正如我们在安全产业常说的:一根链条的坚固程度取决于它最薄弱的一环。无论你花多少时间去配置Cloudflare,如果它可以被绕过,如果你的web应用可以直接通过服务器IP连接。那么Cloudflare的所有保护机制都将被绕过。

wafcloudflare
本作品采用《CC 协议》,转载必须注明作者和本文链接
Twitter渗透技巧搬运工
2022-08-21 11:21:33
Twitter渗透技巧搬运工
Cloudflare是一个应用广泛的web应用防火墙(WAF)的提供商。如果能在一秒内绕过所有防护措施,让WAF毫无用处,会怎么样呢?这篇文章会教你利用源服务器的IP地址绕过Cloudflare WAF。注意,以下方法可能适用于绕过任何类型的WAF
有研究人员在安全测试时,绕过了 Cloudflare WAF 的 SQLi 过滤器,这意味着Cloudflare 安装没有正确配置,但Cloudflare目前还不认为这是个漏洞。虽如此,安全人员在为其应用程序部署安全保护时需要注意有关问题。对于试图绕过 WAF 的人来说,发现的些许漏洞也可能会派上用场。攻击者可以利用一种或多种技术(具体取决于最终应用程序)绕过某些 WAF 并通过滥用 SQLi 漏
在测试漏洞赏金计划时,我注意到我的html injectionpayload在将其发送到应用程序中反映的每个字段时都有效。然后,我第一次收到弹框的冲动让我失望了。
这意味着如果变量名后面附加了圆括号,PHP 将寻找与变量求值结果同名的函数,并尝试执行它。除其他事项外,这可用于实现回调、函数表等。利用包装函数将这些构造中的任何一个用作变量函数。这可能是另一种规避阻止 PHP 函数名称的规则的方法。
2019 年七月初,Cloudflare 曾经全球中断服务,原因是为了改进内联 JavaScript 屏蔽,
网上安全渗透测试工具整理全集,部分链接可能失效,但可以搜索到
Web Hacking 101 中文版:https://wizardforcel.gitbooks.io/web-hacking-101/content/ 浅入浅出Android安全 中文版:https://wizardforcel.gitbooks.io/asani/content/ Android 渗透测试学习手册 中文
WAF CDN 的识别方法
2021-11-22 07:37:57
CDN 是构建在现有网络基础之上的智能虚拟网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。CDN 的关键技术主要有内容存储和分发技术。
VSole
网络安全专家