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

132 lines
11 KiB
Markdown
Raw Normal View History

2023-08-03 19:12:22 +00:00
# 揭示CloudFlare
2022-04-28 16:01:33 +00:00
<details>
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
2023-08-03 19:12:22 +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 repo**](https://github.com/carlospolop/hacktricks) **和**[**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **提交PR来分享你的黑客技巧。**
2022-04-28 16:01:33 +00:00
</details>
2023-08-03 19:12:22 +00:00
尝试揭示CloudFlare后面的Web服务器的技术
2020-12-08 12:25:09 +00:00
2023-08-03 19:12:22 +00:00
### 技术
2023-08-03 19:12:22 +00:00
* 您还可以使用一些提供域名的**历史DNS记录**的服务。也许网页是在之前使用的IP地址上运行的。
* 同样可以通过**检查历史SSL证书**来实现这些证书可能指向原始IP地址。
* 还要检查**指向IP地址的其他子域名的DNS记录**因为可能有其他子域名指向同一台服务器也许是为了提供FTP、邮件或其他服务
* 如果在Web应用程序中找到**SSRF漏洞**可以滥用它来获取服务器的IP地址。
*
2023-08-03 19:12:22 +00:00
在Shodan等浏览器中搜索网页的唯一字符串。也许你可以找到包含该内容的IP地址。
2023-08-03 19:12:22 +00:00
* 类似地,您可以使用工具[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
### 工具
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)
2023-08-03 19:12:22 +00:00
* 如果您有一组可能包含网页的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-08-03 19:12:22 +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
```
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
### 缓存
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 解决方案
2023-08-03 19:12:22 +00:00
已经开发了一些 Cloudflare 解决方案:
* [FlareSolverr](https://github.com/FlareSolverr/FlareSolverr)
2023-08-03 19:12:22 +00:00
* [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>
2023-08-03 19:12:22 +00:00
另一个选择是使用经过强化的无头浏览器完成整个抓取工作,使其看起来像是真实用户的浏览器:
2023-08-03 19:12:22 +00:00
* **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>
2023-08-03 19:12:22 +00:00
除了使用开源的 Cloudflare 绕过工具之外,还可以使用开发和维护自己私有的 Cloudflare 绕过功能的智能代理。
2023-08-03 19:12:22 +00:00
这些智能代理通常更可靠,因为 Cloudflare 很难对其进行修补,而且它们由代理公司开发,这些公司有经济动力始终领先于 Cloudflare并在其绕过功能失效的那一刻修复它们。
2023-08-03 19:12:22 +00:00
大多数智能代理提供商([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 绕过功能,其效果和成本各不相同。
2023-08-03 19:12:22 +00:00
然而,最好的选择之一是使用 [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
这种方法是可行的(也是许多智能代理解决方案所采用的方法),但不适合心脏脆弱的人。
2023-08-03 19:12:22 +00:00
**优点:** 这种方法的优点是,如果你需要大规模进行抓取,而且不想运行成本高昂的数百(甚至数千)个完整的无头浏览器实例,你可以开发出资源利用效率最高的 Cloudflare 绕过方法。这种方法专门设计用于通过 Cloudflare 的 JS、TLS 和 IP 指纹测试。
2023-08-03 19:12:22 +00:00
**缺点:** 这种方法的缺点是,你将不得不深入研究一个从外部看起来非常难以理解的反机器人系统,并进行不同技术的分割测试,以欺骗其验证系统。然后,随着 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
2023-08-03 19:12:22 +00:00
* 你在一家 **网络安全公司** 工作吗?想要在 HackTricks 中 **为你的公司做广告**吗?或者想要获得 **PEASS 的最新版本或下载 PDF 格式的 HackTricks** 吗?请查看 [**订阅计划**](https://github.com/sponsors/carlospolop)
* 发现我们的独家 [**NFTs**](https://opensea.io/collection/the-peass-family) 集合:[**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>