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

isnull   ·   发表于 2019-08-03 11:00:31   ·   漏洞文章

前言

CloudFlare是一个被人们广泛使用的Web应用防火墙(WAF)提供商。但是,如果你能在一秒钟内绕过所有这些保护措施,使WAF变得无用,那又会怎样呢?本文是关于绕过具有源站IP地址的Cloudflare WAF的教程。
下面的介绍不单单局限于Cloudflare WAF

介绍

Cloudflare拥有1600多万个互联网属性,现在是最流行的web应用程序防火墙(WAF)之一。一年前,Cloudflare发布了一款快速的DNS解析器,被人们广泛使用。作为反向代理,WAF不仅提供针对DDOS的保护,而且在检测到攻击时还可以触发警报。对于付费订阅,用户可以选择打开针对常见漏洞(如SQLI、XSS和CSRF)的防护,但这必须手动启用,此选项不适用于免费帐户。
虽然WAF非常擅长拦截基本的payload,但绕过Cloudflare WAF的方式还存在,每天都会出现新的WAF,因此继续测试Cloudflare的安全性是很重要的。就在我写这篇文章的时候:


作为一个bug赏金猎人,绕过防火墙非常值得研究。大体上,可以总结为三种绕过姿势:
1.自定义您的有效负载,以便绕过现有的规则。提高你关于防火墙绕过的技能很有意义,但这可能是一项乏味和耗时的过程,尤其当你是一个bug赏金猎人时,时间是非常宝贵的,如果你喜欢DIY payload,你最好尝试一下 PayloadsAllTheThings中列出payload,或者在Twitter上搜索。
2.以适当的方式更改请求以中断服务器。和第一种姿势一样,很耗时,需要耐心和良好的fuzz技巧。Soroush Dalili写了一个很好的文档,它可以通过使用HTTP标准和Web服务器的行为来帮助创建中断服务器的请求。
3.通过查找Web服务器的源IP绕过Cloudflare。这是最简单也是最高效的操作,一旦你得到它,你就不必再担心WAF或DDOS保护(速率限制)。

在本文中,我将重点介绍第三种姿势,以及获得源IP的一切技巧。
CloudFlare是一个必须由人来设置的工具,通常是开发人员或系统管理员。CloudFlare不对使用以下方法成功执行的攻击的错误配置负责。

首先,侦察!

这样做的想法是启动正常的侦察过程,尽可能多地获取IP地址(host,nslookup,whois,ranges…),,然后检查这些服务器中哪些服务器启用了Web服务器(netcat、nmap、mass can)。一旦有了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证书(这个大部分都有),那么它将在Censys数据库中注册。在选择输入中选择“证书”,提供目标的域,然后点击<enter>



单击每个结果显示详细信息,然后在右侧的“Explore”菜单中选择“IPv4 Hosts”:


您应该能够看到使用该证书的服务器的IP地址:



从这里,抓住所有的IP,然后回到上一章,尝试通过所有IP访问您的目标。

邮件头

下一步是检索目标网站发出的邮件中的邮件头:订阅时事通讯,创建帐户,使用“忘记密码”功能,订购…。简而言之,尽你所能从你正在测试的网站获得一封电子邮件(注意,可以使用Burp Collaborator)。
一旦你收到一封电子邮件,检查一下来源,特别是邮件头。记录你可以在那里找到的所有IP,以及可能属于某个托管服务的子域。
标头Return-Path的值里面包含了我想要的地址:


使用curl:


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

XML-RPC Pingback

WordPress中的工具,XML-RPC(远程过程调用),允许管理员使用XML请求远程管理他/她的博客。pingback是ping的响应。当站点A链接到站点B时执行ping,然后站点B响应站点A。这是pingback
您可以通过调用https://www.target.com/xmlrpc.php轻松地检查它是否已启用。你可以发现:XML-RPC服务器只接受POST请求。
根据WordPress XML-RPC Pingback API,函数采用2个参数sourceUri和targetUri。以下是在Burp Suite中的呈现:



以前的发现

如果您无法使用前面的方法找到来源IP,或者是第一次测试时网站没有保护但后来有了WAF保护,你可以直接从目标网站中获得信息。
基本上,您需要的是目标的Web服务器向您的服务器/collaborator执行请求。利用其他漏洞也是一个不错的办法,SSRF、XXE、XSS或您已经找到的任何漏洞,以注入包含您的服务器/collaborator地址的有效负载并检查日志。如果奏效,然后接着检查虚拟主机。
即使是最简单的漏洞,如Open Redirect或HTML/CSS注入,如果由应用程序Web服务器解析,也会很有用。

工具

现在我们已经看到了如何手动查找和检查IP地址,幸运的是,我们的社区中有很好的开发人员。下面就是他们力荐的一些工具,一旦检测到Cloudflare保护,你就可以第一时间使用它们来节省你的宝贵时间。

理论联系实际,没有一成不变的解决方法,将这些工具全部使用一遍,总有一款可以用来查找源IP。
Cloudsnare.py:censys证书(需要密钥)。
HatCloud:crimeflare,ipinfo.io。
CrimeFlare:crimeflare,ipinfo.io。
bypass-firewalls-by-DNS-history:securitytrails,crimeflare。

CloudFail:dnsdumpster,crimeflare,subdomain brute force。
CloudFlair:需要censys密钥。
CloudIP:nslookup一些子域名(ftp,cPanel,mail,direct,direct-connect,webmail,portal)



DNS资源

一句话总结:尽可能多地获取IP地址,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提供的所有保护都将被绕过。
可能还有很多其他的方式来执行这个绕过任务,如果你有idea,请随时在评论中或通过Twitter私信我。我会非常乐意将它们添加到我的博客中。
根据Soroush Dalili的说法,能够绕过Cloudflare可以被认为是安全配置错误,因此值得警惕。

作者

Gwendal Le Coguic
Bug Bounty Hunter

Twitter: @gwendallecoguic
Blog: http://10degres.net

更多关于此类型的博客

https://rhinosecuritylabs.com/cloud-security/cloudflare-bypassing-cloud-security/
http://www.securityidiots.com/Web-Pentest/Information-Gathering/Cloudflare-Bypass/Part-2-Cloudflare-Security-Bypass.html
http://www.chokepoint.net/2017/10/exposing-server-ips-behind-cloudflare.html
https://blog.christophetd.fr/bypassing-cloudflare-using-internet-wide-scan-data/
https://www.cloudflare.com/ips/
https://twitter.com/gwendallecoguic/status/1043484797799223297
https://twitter.com/gwendallecoguic/status/1113777240876228609


原文:https://blog.detectify.com/2019/07/31/bypassing-cloudflare-waf-with-the-origin-server-ip-address/


转自先知社区

打赏我,让我更有动力~

0 条回复   |  直到 2019-8-3 | 1517 次浏览
登录后才可发表内容
返回顶部 投诉反馈

© 2016 - 2024 掌控者 All Rights Reserved.