揭露 CloudFlare

Tip

学习和实践 AWS 黑客技术:HackTricks Training AWS Red Team Expert (ARTE)
学习和实践 GCP 黑客技术:HackTricks Training GCP Red Team Expert (GRTE) 学习和实践 Azure 黑客技术:HackTricks Training Azure Red Team Expert (AzRTE)

支持 HackTricks

揭露 Cloudflare 的常见技术

  • 你可以使用一些提供该域名 历史 DNS 记录 的服务。也许该网页之前运行在某个已被使用过的 IP 地址上。
  • 同样可以通过 检查历史 SSL 证书 来实现,这些证书可能指向源服务器的 IP 地址。
  • 还要检查 其他子域的 DNS 记录是否直接指向 IP,因为其他子域可能指向同一台服务器(例如提供 FTP、mail 或其他服务)。
  • 如果你在 web 应用中发现 SSRF,可以滥用它来获取服务器的 IP 地址。
  • 在像 shodan 这样的搜索引擎中搜索网页中的唯一字符串(也许还有 google 等类似的?)。也许你能找到包含该内容的 IP 地址。
  • 类似地,与你搜索唯一字符串不同,你也可以用工具搜索 favicon 图标: https://github.com/karma9874/CloudFlare-IPhttps://github.com/pielco11/fav-up
  • 这类方法不常奏效,因为服务器在通过 IP 访问时必须返回相同的响应,但也说不准。

Tools to uncover Cloudflare

# You can check if the tool is working with
prips 1.0.0.0/30 | hakoriginfinder -h one.one.one.one

# If you know the company is using AWS you could use the previous tool to search the
## web page inside the EC2 IPs
DOMAIN=something.com
WIDE_REGION=us
for ir in `curl https://ip-ranges.amazonaws.com/ip-ranges.json | jq -r '.prefixes[] | select(.service=="EC2") | select(.region|test("^us")) | .ip_prefix'`; do
echo "Checking $ir"
prips $ir | hakoriginfinder -h "$DOMAIN"
done

从云基础设施发现 Cloudflare

请注意,虽然这是在 AWS 机器上完成的,但同样适用于任何其他云提供商。

如需更详细的流程说明,请查看:

https://trickest.com/blog/cloudflare-bypass-discover-ip-addresses-aws/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks

# Find open ports
sudo masscan --max-rate 10000 -p80,443 $(curl -s https://ip-ranges.amazonaws.com/ip-ranges.json | jq -r '.prefixes[] | select(.service=="EC2") | .ip_prefix' | tr '\n' ' ') | grep "open"  > all_open.txt
# Format results
cat all_open.txt | sed 's,.*port \(.*\)/tcp on \(.*\),\2:\1,' | tr -d " " > all_open_formated.txt
# Search actual web pages
httpx -silent -threads 200 -l all_open_formated.txt -random-agent -follow-redirects -json -no-color -o webs.json
# Format web results and remove eternal redirects
cat webs.json | jq -r "select((.failed==false) and (.chain_status_codes | length) < 9) | .url" | sort -u > aws_webs.json

# Search via Host header
httpx -json -no-color -list aws_webs.json -header Host: cloudflare.malwareworld.com -threads 250 -random-agent -follow-redirects -o web_checks.json

Bypassing Cloudflare through Cloudflare

Authenticated Origin Pulls

该机制依赖于 client SSL certificates 来对 Cloudflare’s reverse-proxy 服务器与 origin 服务器之间的连接进行认证,称为 mTLS

客户可以不配置自己的证书,而是简单地使用 Cloudflare 的证书来允许来自 Cloudflare 的任何连接,不考虑租户

Caution

因此,攻击者可以在 Cloudflare 中设置一个 domain 并使用 Cloudflare 的证书,然后将其指向 victim domain 的 IP 地址。这样,攻击者将其 domain 完全置于未保护状态,Cloudflare 将无法保护发送的请求。

More info here.

Allowlist Cloudflare IP Addresses

这会 拒绝不来自 Cloudflare 的 IP 地址范围的连接。该做法也容易受到前述场景的影响——攻击者只需在 Cloudflare 中 将自己的 domain 指向 victim 的 IP 地址并对其发起攻击。

More info here.

Bypass Cloudflare for scraping

Cache

有时你只想绕过 Cloudflare 以便仅抓取网页。可以使用以下选项:

  • Use Google cache: https://webcache.googleusercontent.com/search?q=cache:https://www.petsathome.com/shop/en/pets/dog
  • 使用其它缓存服务,例如 https://archive.org/web/

Tools

下面这些工具可以绕过(或曾经能够绕过)Cloudflare 对 scraping 的防护:

Cloudflare Solvers

已经开发出若干 Cloudflare solvers:

Fortified Headless Browsers

使用不会被检测为自动化的 headless browser(可能需要为此进行定制)。一些选项包括:

  • Puppeteer: 适用于 puppeteerstealth plugin
  • Playwright: stealth plugin 将很快支持 Playwright。进展请关注 herehere
  • Selenium: SeleniumBase 是一个现代的浏览器自动化框架,具有内置的 stealth 能力。它提供两种模式:UC Mode,基于 [undetected-chromedriver] 的优化 Selenium ChromeDriver 补丁;以及 CDP Mode,可以绕过 bot 检测、解决 CAPTCHAs,并利用 Chrome DevTools Protocol 的高级方法。

Smart Proxy With Cloudflare Built-In Bypass

Smart proxies 由专门公司持续更新,旨在对抗 Cloudflare 的安全措施(这是它们的业务所在)。

其中一些包括:

对于寻求优化解决方案的用户,ScrapeOps Proxy Aggregator 是一个突出选择。该服务将 20 多个代理提供商集成到单一 API 中,会自动为目标域选择最佳且性价比最高的代理,从而为应对 Cloudflare 防护提供了更优选项。

Reverse Engineer Cloudflare Anti-Bot Protection

对 Cloudflare 的 anti-bot 措施进行逆向工程是 smart proxy 提供商常用的策略,适用于大规模的 web scraping,且无需为运行大量 headless browsers 承担高昂成本。

优势: 该方法可以针对 Cloudflare 的检测机制创建极其高效的绕过方案,适合大规模操作。

劣势: 缺点是需要复杂的工作来理解并欺骗 Cloudflare 那些刻意模糊的 anti-bot 系统,需持续测试不同策略并在 Cloudflare 加强防护时不断更新绕过方法。

更多实施细节请参见原始文章: https://scrapeops.io/web-scraping-playbook/how-to-bypass-cloudflare/

References

Tip

学习和实践 AWS 黑客技术:HackTricks Training AWS Red Team Expert (ARTE)
学习和实践 GCP 黑客技术:HackTricks Training GCP Red Team Expert (GRTE) 学习和实践 Azure 黑客技术:HackTricks Training Azure Red Team Expert (AzRTE)

支持 HackTricks