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

167 lines
13 KiB
Markdown
Raw Normal View History

# Uncovering CloudFlare
2022-04-28 16:01:33 +00:00
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
2022-04-28 16:01:33 +00:00
<details>
2022-04-28 16:01:33 +00:00
<summary>Support HackTricks</summary>
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
2022-04-28 16:01:33 +00:00
</details>
{% endhint %}
2022-04-28 16:01:33 +00:00
## Common Techniques to Uncover Cloudflare
* Você pode usar algum serviço que forneça os **registros DNS históricos** do domínio. Talvez a página da web esteja rodando em um endereço IP usado anteriormente.
* O mesmo pode ser alcançado **verificando certificados SSL históricos** que podem estar apontando para o endereço IP de origem.
* Verifique também **registros DNS de outros subdomínios apontando diretamente para IPs**, pois é possível que outros subdomínios estejam apontando para o mesmo servidor (talvez para oferecer FTP, e-mail ou qualquer outro serviço).
* Se você encontrar um **SSRF dentro da aplicação web**, pode abusar disso para obter o endereço IP do servidor.
* Pesquise uma string única da página da web em navegadores como shodan (e talvez google e similares?). Talvez você consiga encontrar um endereço IP com esse conteúdo.
* De maneira semelhante, em vez de procurar uma string única, você poderia procurar pelo ícone favicon com a ferramenta: [https://github.com/karma9874/CloudFlare-IP](https://github.com/karma9874/CloudFlare-IP) ou com [https://github.com/pielco11/fav-up](https://github.com/pielco11/fav-up)
* Isso pode não funcionar com muita frequência porque o servidor deve enviar a mesma resposta quando acessado pelo endereço IP, mas você nunca sabe.
## Tools to uncover Cloudflare
* Pesquise o domínio dentro de [http://www.crimeflare.org:82/cfs.html](http://www.crimeflare.org:82/cfs.html) ou [https://crimeflare.herokuapp.com](https://crimeflare.herokuapp.com). Ou use a ferramenta [CloudPeler](https://github.com/zidansec/CloudPeler) (que usa essa API)
* Pesquise o domínio em [https://leaked.site/index.php?resolver/cloudflare.0/](https://leaked.site/index.php?resolver/cloudflare.0/)
* [**CloudFlair**](https://github.com/christophetd/CloudFlair) é uma ferramenta que irá pesquisar usando certificados Censys que contêm o nome do domínio, em seguida, irá procurar por IPv4s dentro desses certificados e finalmente tentará acessar a página da web nesses IPs.
* [**CloakQuest3r**](https://github.com/spyboy-productions/CloakQuest3r): CloakQuest3r é uma poderosa ferramenta Python meticulosamente elaborada para descobrir o verdadeiro endereço IP de sites protegidos pelo Cloudflare e outras alternativas, um serviço amplamente adotado de segurança e melhoria de desempenho na web. Sua missão principal é discernir com precisão o endereço IP real dos servidores web que estão ocultos atrás do escudo protetor do Cloudflare.
* [Censys](https://search.censys.io/)
* [Shodan](https://shodan.io/)
* [Bypass-firewalls-by-DNS-history](https://github.com/vincentcox/bypass-firewalls-by-DNS-history)
* Se você tiver um conjunto de IPs potenciais onde a página da web está localizada, você poderia usar [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
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
```
## Uncovering Cloudflare from Cloud infrastructure
2022-08-17 12:21:23 +00:00
Note que mesmo que isso tenha sido feito para máquinas AWS, poderia ser feito para qualquer outro provedor de nuvem.
Para uma melhor descrição desse processo, confira:
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
```
## Bypassing Cloudflare through Cloudflare
### Authenticated Origin Pulls
Este mecanismo depende de **client** [**SSL certificates**](https://socradar.io/how-to-monitor-your-ssl-certificates-expiration-easily-and-why/) **para autenticar conexões** entre os servidores **reverse-proxy** da **Cloudflare** e o servidor **origin**, que é chamado de **mTLS**.
Em vez de configurar seu próprio certificado, os clientes podem simplesmente usar o certificado da Cloudflare para permitir qualquer conexão da Cloudflare, **independentemente do inquilino**.
{% hint style="danger" %}
Portanto, um atacante poderia simplesmente configurar um **domínio na Cloudflare usando o certificado da Cloudflare e apontá-lo** para o endereço **IP** do **vítima**. Dessa forma, configurando seu domínio completamente desprotegido, a Cloudflare não protegerá as solicitações enviadas.
{% endhint %}
Mais informações [**aqui**](https://socradar.io/cloudflare-protection-bypass-vulnerability-on-threat-actors-radar/).
### Allowlist Cloudflare IP Addresses
Isso **rejeitará conexões que não se originam dos** intervalos de endereços IP da **Cloudflare**. Isso também é vulnerável à configuração anterior, onde um atacante apenas **aponta seu próprio domínio na Cloudflare** para o endereço **IP** das **vítimas** e o ataca.
Mais informações [**aqui**](https://socradar.io/cloudflare-protection-bypass-vulnerability-on-threat-actors-radar/).
## Bypass Cloudflare for scraping
### Cache
Às vezes, você só quer contornar a Cloudflare para apenas raspar a página da web. Existem algumas opções para isso:
* Use o cache do Google: `https://webcache.googleusercontent.com/search?q=cache:https://www.petsathome.com/shop/en/pets/dog`
* Use outros serviços de cache, como [https://archive.org/web/](https://archive.org/web/)
### Tools
Algumas ferramentas como as seguintes podem contornar (ou foram capazes de contornar) a proteção da Cloudflare contra scraping:
* [https://github.com/sarperavci/CloudflareBypassForScraping](https://github.com/sarperavci/CloudflareBypassForScraping)
### Cloudflare Solvers
Vários solucionadores da Cloudflare foram desenvolvidos:
* [FlareSolverr](https://github.com/FlareSolverr/FlareSolverr)
2023-06-06 18:56:34 +00:00
* [cloudscraper](https://github.com/VeNoMouS/cloudscraper) [Guia aqui](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)
* [cloudflare-bypass](https://github.com/devgianlu/cloudflare-bypass) \[Arquivado]
* [CloudflareSolverRe](https://github.com/RyuzakiH/CloudflareSolverRe)
### Fortified Headless Browsers <a href="#option-4-scrape-with-fortified-headless-browsers" id="option-4-scrape-with-fortified-headless-browsers"></a>
Use um navegador headless que não seja detectado como um navegador automatizado (você pode precisar personalizá-lo para isso). Algumas opções são:
* **Puppeteer:** O [stealth plugin](https://github.com/berstend/puppeteer-extra/tree/master/packages/puppeteer-extra-plugin-stealth) para [puppeteer](https://github.com/puppeteer/puppeteer).
* **Playwright:** O [stealth plugin](https://www.npmjs.com/package/playwright-stealth) está chegando ao Playwright em breve. Acompanhe os desenvolvimentos [aqui](https://github.com/berstend/puppeteer-extra/issues/454) e [aqui](https://github.com/berstend/puppeteer-extra/tree/master/packages/playwright-extra).
* **Selenium:** O [undetected-chromedriver](https://github.com/ultrafunkamsterdam/undetected-chromedriver) é um patch otimizado do Selenium Chromedriver.
### Smart Proxy With Cloudflare Built-In Bypass <a href="#option-5-smart-proxy-with-cloudflare-built-in-bypass" id="option-5-smart-proxy-with-cloudflare-built-in-bypass"></a>
**Smart proxies** são continuamente atualizados por empresas especializadas, visando contornar as medidas de segurança da Cloudflare (já que esse é o seu negócio).
Alguns deles são:
* [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) são conhecidos por seus mecanismos proprietários de contorno da Cloudflare.
Para aqueles que buscam uma solução otimizada, o [ScrapeOps Proxy Aggregator](https://scrapeops.io/proxy-aggregator/) se destaca. Este serviço integra mais de 20 provedores de proxy em uma única API, selecionando automaticamente o melhor e mais econômico proxy para seus domínios-alvo, oferecendo assim uma opção superior para navegar pelas defesas da Cloudflare.
### Reverse Engineer Cloudflare Anti-Bot Protection <a href="#option-6-reverse-engineer-cloudflare-anti-bot-protection" id="option-6-reverse-engineer-cloudflare-anti-bot-protection"></a>
A engenharia reversa das medidas anti-bot da Cloudflare é uma tática usada por provedores de proxy inteligentes, adequada para raspagem extensiva da web sem o alto custo de executar muitos navegadores headless.
**Vantagens:** Este método permite a criação de um contorno extremamente eficiente que visa especificamente as verificações da Cloudflare, ideal para operações em grande escala.
**Desvantagens:** A desvantagem é a complexidade envolvida em entender e enganar o sistema anti-bot deliberadamente obscuro da Cloudflare, exigindo esforço contínuo para testar diferentes estratégias e atualizar o contorno à medida que a Cloudflare aprimora suas proteções.
Encontre mais informações sobre como fazer isso no [artigo original](https://scrapeops.io/web-scraping-playbook/how-to-bypass-cloudflare/).
## References
* [https://scrapeops.io/web-scraping-playbook/how-to-bypass-cloudflare/](https://scrapeops.io/web-scraping-playbook/how-to-bypass-cloudflare/)
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
2022-04-28 16:01:33 +00:00
<details>
<summary>Support HackTricks</summary>
2022-04-28 16:01:33 +00:00
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}