freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

如何绕过CloudFlare的Bot保护机制
2021-03-29 21:47:08

HW期间,为防范钓鱼,即日起FreeBuf将取消投稿文章的一切外部链接。给您带来的不便,敬请谅解~

写在前面的话

几个月前,我向CloudFlare的漏洞奖励计划提交了一个貌似漏洞的东西。但根据他们的说法,我提交的并不算是一个安全问题,并表示对我“不予理睬”!

CloudFlare提供了一个JavaScript Worker系统,可以帮助开发人员在CloudFlare服务器端执行代码。这个功能对于静态站点和维护页面来说是非常常用有的,而且对于渗透测试人员来说,也是一个大大的“宝藏”(无服务器C&C、简易网络钓鱼代理等)。在这篇文章中,我们将跟大家探讨如何绕过CloudFlare的Bot保护机制。

直奔主题

如果你曾尝试使用Tor来访问类似shodan.io这样的网站,你就知道验证码会有多么烦人了!

首先,我们需要注册一个域名,比如说免费的.tk域名就足够了,然后用它来创建一个CloudFlare账号。CloudFlare验证了域名的有效性之后,我们还需要添加至少一条有效的DNS记录并启用代理模式。

接下来,我们需要创建一个JavaScript Worker来充当方向代理的角色(GitHub上提供了完整的代码:https://github.com/jychp/cloudflare-bypass)。创建一个新的Worker,然后将copy/paste worker.js的内容拷贝进去,你可以自定义配置TOKEN_HEADER、TOKEN_VALUE、HOST_HEADER和IP_HEADER的值。

然后将路径添加至你的Worker:proxy.domain.com/*。

现在,如果你尝试访问proxy.domain.com,你将会接收到“Welcome to NGINX.”。这里的JavaScript代码其实很好理解,它将会查找特定的Header,然后将你的请求转发至给定的域名。

代理的使用也非常简单,我已经在我的【https://github.com/jychp/cloudflare-bypass】上给大家提供了一个Python封装器,我们可以这样使用它:

>>> from cfproxy import CFProxy

>>> proxy = CFProxy('proxy.domain.com', 'A random User-Agent', '1.2.3.4')

>>> req = proxy.get('https://icanhazip.com')

>>> print(req.status_code)

200

>>> print(req.text)

108.162.229.50

你可以尝试对结果执行WHOIS查询,你将会发现它是一个CloudFlare IP,很可能就是运行Worker的服务器。

此时,如果你尝试通过Tor来向你的代理发送请求的话,你将会被屏蔽掉。因此,我们需要向我们的CloudFlare防火墙添加一条规则:

现在,你就可以使用Tor并在不需要任何验证码的情况下向你的代理发送请求了。

此时,你可以向任何使用了CloudFlare的网站发送请求。你还可以尝试请求一个显示了你Header的网站,你将会看到如下所示的信息:

ACCEPT: */*

ACCEPT-ENCODING: gzip

CDN-LOOP: cloudflare; subreqs=1

CF-CONNECTING-IP: 2a06:98c0:3600::103 (could be any Cloudflare IP)

CF-EW-VIA: 15

CF-RAY: [REDACTED]

CF-REQUEST-ID: [REDACTED]

CF-VISITOR: {"scheme":"https"}

CF-WORKER: yourdomain.com (OPSEC Warning !)

CONNECTION: Keep-Alive

HOST: www.whatismybrowser.com

USER-AGENT: My Random User-Agent

X-FORWARDED-FOR: 1.2.3.4 (yes, we can override this header with whatever we want !)

X-FORWARDED-PROTO: https

正如你所见,X-FORWARDED-FOR可以用来发送任何的值,因此你可以在进行网络资源爬取或者IP验证的时候绕过服务器端的IP地址请求限制。源IP不会被转发给目标站点,因此屏蔽你服务器发送请求的唯一方法就是过滤掉请求中的CF-WORKER Header。

不过根据CloudFlare的说法,这并不能算是一个安全漏洞:

因此,你将能够使用免费的CloudFlare账号每天发送无数次请求来爬取你所需要的资源了,好好享受吧!

本文作者:, 转载请注明来自FreeBuf.COM

# CloudFlare攻击 # CloudFlare # 验证码绕过
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
评论 按热度排序

登录/注册后在FreeBuf发布内容哦

相关推荐
  • 0 文章数
  • 0 评论数
  • 0 关注者
文章目录
登录 / 注册后在FreeBuf发布内容哦
收入专辑