hacktricks/network-services-pentesting/pentesting-web/uncovering-cloudflare.md

152 lines
12 KiB
Markdown
Raw Normal View History

# 揭示 CloudFlare
2022-04-28 16:01:33 +00:00
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks 云 ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
2022-04-28 16:01:33 +00:00
* 你在一家**网络安全公司**工作吗?你想在 HackTricks 中看到你的**公司广告**吗?或者你想获得**PEASS 的最新版本或下载 HackTricks 的 PDF**吗?请查看[**订阅计划**](https://github.com/sponsors/carlospolop)
* 发现我们的独家 NFT 收藏品[**The PEASS Family**](https://opensea.io/collection/the-peass-family)
* 获取[**官方 PEASS & HackTricks 商品**](https://peass.creator-spring.com)
* **加入**[**💬**](https://emojipedia.org/speech-balloon/) [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**telegram 群组**](https://t.me/peass),或者**关注**我在**Twitter**上的[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
* **通过向**[**hacktricks 仓库**](https://github.com/carlospolop/hacktricks) **和**[**hacktricks-cloud 仓库**](https://github.com/carlospolop/hacktricks-cloud) **提交 PR 来分享你的黑客技巧。**
2022-04-28 16:01:33 +00:00
</details>
尝试揭示 CloudFlare 后面的 Web 服务器的技术:
2020-12-08 12:25:09 +00:00
2023-08-03 19:12:22 +00:00
### 技术
* 你也可以使用一些提供域名的**历史 DNS 记录**的服务。也许网页正在运行之前使用过的 IP 地址上。
* 同样可以通过**检查历史 SSL 证书**来实现,这些证书可能指向原始 IP 地址。
* 还要检查**指向 IP 地址的其他子域名的 DNS 记录**,因为可能有其他子域名指向同一台服务器(也许是为了提供 FTP、邮件或其他服务
* 如果在 Web 应用程序中找到了**SSRF 漏洞**,可以滥用它来获取服务器的 IP 地址。
*
在 shodan也许是 Google 和类似的搜索引擎)等浏览器中搜索网页的唯一字符串。也许你可以找到包含该内容的 IP 地址。
* 类似地,你可以使用工具 [https://github.com/karma9874/CloudFlare-IP](https://github.com/karma9874/CloudFlare-IP) 或 [https://github.com/pielco11/fav-up](https://github.com/pielco11/fav-up) 来搜索 favicon 图标。
* 这种方法不会经常起作用,因为服务器在通过 IP 地址访问时必须发送相同的响应,但你永远不知道。
2023-08-03 19:12:22 +00:00
### 工具
* 在 [http://www.crimeflare.org:82/cfs.html](http://www.crimeflare.org:82/cfs.html) 或 [https://crimeflare.herokuapp.com](https://crimeflare.herokuapp.com) 中搜索域名。或使用工具 [CloudPeler](https://github.com/zidansec/CloudPeler)(使用该 API
* 在 [https://leaked.site/index.php?resolver/cloudflare.0/](https://leaked.site/index.php?resolver/cloudflare.0/) 中搜索域名
* [**CloudFlair**](https://github.com/christophetd/CloudFlair) 是一个工具,它将使用包含域名的 Censys 证书进行搜索,然后在这些证书中搜索 IPv4并尝试在这些 IP 上访问网页。
* [Censys](https://search.censys.io/)
* [Shodan](https://shodan.io/)
* [Bypass-firewalls-by-DNS-history](https://github.com/vincentcox/bypass-firewalls-by-DNS-history)
* 如果你有一组可能包含网页的 IP 地址,你可以使用 [https://github.com/hakluke/hakoriginfinder](https://github.com/hakluke/hakoriginfinder)
2022-08-17 12:21:23 +00:00
```bash
2022-08-19 16:13:59 +00:00
# You can check if the tool is working with
prips 1.0.0.0/30 | hakoriginfinder -h one.one.one.one
2022-08-17 12:21:23 +00:00
# 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
2023-08-03 19:12:22 +00:00
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"
2022-08-17 12:21:23 +00:00
done
```
2023-08-03 19:12:22 +00:00
### 从AWS机器上揭示Cloudflare
2022-08-17 12:21:23 +00:00
要了解此过程的更详细描述,请查看:
2023-02-16 14:44:06 +00:00
{% embed url="https://trickest.com/blog/cloudflare-bypass-discover-ip-addresses-aws/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
2023-01-11 16:53:45 +00:00
```bash
# Find open ports
2023-01-12 12:11:28 +00:00
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
2023-01-11 16:53:45 +00:00
# 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
2023-01-11 16:57:23 +00:00
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
2023-01-11 16:53:45 +00:00
```
## 通过 Cloudflare 绕过 Cloudflare
### 验证的源拉取
这种机制依赖于**客户端**的[**SSL 证书**](https://socradar.io/how-to-monitor-your-ssl-certificates-expiration-easily-and-why/)来验证**Cloudflare 的反向代理**服务器与**源**服务器之间的连接,这被称为**mTLS**。
客户可以简单地使用 Cloudflare 的证书来允许来自 Cloudflare 的任何连接,**无论租户如何**。
{% hint style="danger" %}
因此,攻击者可以使用 Cloudflare 的证书在 Cloudflare 中设置一个**域名,并将其指向**受害者的域名**IP**地址。这样攻击者的域名将完全不受保护Cloudflare 将不会保护发送的请求。
{% endhint %}
更多信息[**在这里**](https://socradar.io/cloudflare-protection-bypass-vulnerability-on-threat-actors-radar/)。
### 允许 Cloudflare IP 地址
这将**拒绝不是来自 Cloudflare 的** IP 地址范围的连接。这也容易受到前面设置的攻击,攻击者只需将自己的域名在 Cloudflare 中指向受害者的 IP 地址并对其进行攻击。
更多信息[**在这里**](https://socradar.io/cloudflare-protection-bypass-vulnerability-on-threat-actors-radar/)。
2023-08-03 19:12:22 +00:00
## 绕过 Cloudflare 进行网页抓取
2022-04-28 16:01:33 +00:00
2023-08-03 19:12:22 +00:00
### 缓存
有时您只想绕过 Cloudflare 来抓取网页。有一些选项可以实现这一点:
2023-08-03 19:12:22 +00:00
* 使用 Google 缓存:`https://webcache.googleusercontent.com/search?q=cache:https://www.petsathome.com/shop/en/pets/dog`
* 使用其他缓存服务,如[https://archive.org/web/](https://archive.org/web/)
2023-08-03 19:12:22 +00:00
### Cloudflare 解决方案
已经开发了许多 Cloudflare 解决方案:
* [FlareSolverr](https://github.com/FlareSolverr/FlareSolverr)
* [cloudscraper](https://github.com/VeNoMouS/cloudscraper) [这里有指南](https://scrapeops.io/python-web-scraping-playbook/python-cloudscraper/)
* [cloudflare-scrape](https://github.com/Anorov/cloudflare-scrape)
* [CloudflareSolverRe](https://github.com/RyuzakiH/CloudflareSolverRe)
* [Cloudflare-IUAM-Solver](https://github.com/ninja-beans/cloudflare-iuam-solver)
2023-08-03 19:12:22 +00:00
* [cloudflare-bypass](https://github.com/devgianlu/cloudflare-bypass) \[已存档]
* [CloudflareSolverRe](https://github.com/RyuzakiH/CloudflareSolverRe)
2023-08-03 19:12:22 +00:00
### 强化的无头浏览器 <a href="#option-4-scrape-with-fortified-headless-browsers" id="option-4-scrape-with-fortified-headless-browsers"></a>
另一种选择是使用已经强化以模拟真实用户浏览器的无头浏览器来完成整个抓取工作:
* **Puppeteer**[puppeteer](https://github.com/puppeteer/puppeteer)的[stealth 插件](https://github.com/berstend/puppeteer-extra/tree/master/packages/puppeteer-extra-plugin-stealth)。
* **Playwright**[stealth 插件](https://www.npmjs.com/package/playwright-stealth)即将添加到 Playwright 中。请在[这里](https://github.com/berstend/puppeteer-extra/issues/454)和[这里](https://github.com/berstend/puppeteer-extra/tree/master/packages/playwright-extra)关注最新动态。
* **Selenium**[undetected-chromedriver](https://github.com/ultrafunkamsterdam/undetected-chromedriver)是一个经过优化的 Selenium Chromedriver 补丁。
2023-08-03 19:12:22 +00:00
### 带有内置 Cloudflare 绕过功能的智能代理 <a href="#option-5-smart-proxy-with-cloudflare-built-in-bypass" id="option-5-smart-proxy-with-cloudflare-built-in-bypass"></a>
与使用开源 Cloudflare 绕过方法相比,另一种选择是使用开发和维护自己私有 Cloudflare 绕过方法的智能代理。
这些通常更可靠,因为 Cloudflare 很难为它们开发补丁,而且它们是由代理公司开发的,这些公司有经济动力始终领先于 Cloudflare并在其绕过方法失效的那一刻修复它们。
大多数智能代理提供商([ScraperAPI](https://www.scraperapi.com/?fp\_ref=scrapeops)、[Scrapingbee](https://www.scrapingbee.com/?fpr=scrapeops)、[Oxylabs](https://oxylabs.go2cloud.org/aff\_c?offer\_id=7\&aff\_id=379\&url\_id=32)、[Smartproxy](https://prf.hn/click/camref:1100loxdG/\[p\_id:1100l442001]/destination:https%3A%2F%2Fsmartproxy.com%2Fscraping%2Fweb))都有某种形式的 Cloudflare 绕过方法,其效果和成本各不相同。
然而,最好的选择之一是使用[ScrapeOps 代理聚合器](https://scrapeops.io/proxy-aggregator/),因为它将超过 20 个代理提供商集成到同一个代理 API 中,并为您的目标域名找到最佳/最便宜的代理提供商。
2023-08-03 19:12:22 +00:00
### 反向工程 Cloudflare 反机器人保护 <a href="#option-6-reverse-engineer-cloudflare-anti-bot-protection" id="option-6-reverse-engineer-cloudflare-anti-bot-protection"></a>
2023-08-03 19:12:22 +00:00
这种方法是可行的(也是许多智能代理解决方案所采用的方法),但不适合心脏脆弱的人。
**优点:**这种方法的优点是,如果您要进行大规模的抓取,并且不想运行成本高昂的数百(甚至数千)个完整的无头浏览器实例,您可以开发出最节约资源的 Cloudflare 绕过方法。这种方法仅设计用于通过 Cloudflare 的 JS、TLS 和 IP 指纹测试。
**缺点:**这种方法的缺点是,您将不得不深入研究一个从外部看起来非常难以理解的反机器人系统,并进行不同技术的分割测试以欺骗其验证系统。然后,随着 Cloudflare 继续开发其反机器人保护,您还需要维护此系统。
2023-08-03 19:12:22 +00:00
## 参考资料
* [https://scrapeops.io/web-scraping-playbook/how-to-bypass-cloudflare/](https://scrapeops.io/web-scraping-playbook/how-to-bypass-cloudflare/)
2023-01-11 16:53:45 +00:00
<details>
2022-04-28 16:01:33 +00:00
2023-08-03 19:12:22 +00:00
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks 云 ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
2022-04-28 16:01:33 +00:00
* 您在**网络安全公司**工作吗?您想在 HackTricks 中看到您的**公司广告**吗?或者您想获得最新版本的 PEASS 或下载 PDF 格式的 HackTricks 吗?请查看[**订阅计划**](https://github.com/sponsors/carlospolop)
* 发现我们的独家 NFT 收藏品[**The PEASS Family**](https://opensea.io/collection/the-peass-family)
* 获取[**官方 PEASS 和 HackTricks 商品**](https://peass.creator-spring.com)
* **加入** [💬](https://emojipedia.org/speech-balloon/) [Discord 群组](https://discord.gg/hRep4RUj7f) 或 [telegram 群组](https://t.me/peass) 或 **关注**我的 **Twitter** [🐦](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[@carlospolopm](https://twitter.com/hacktricks\_live)**。**
* **通过向** [hacktricks 仓库](https://github.com/carlospolop/hacktricks) **和** [hacktricks-cloud 仓库](https://github.com/carlospolop/hacktricks-cloud) **提交 PR 来分享你的黑客技巧。**
2022-04-28 16:01:33 +00:00
</details>