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

164 lines
13 KiB
Markdown

# Descubriendo CloudFlare
<details>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Otras formas de apoyar a HackTricks:
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén el [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Comparte tus trucos de hacking enviando PRs a** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>
## Técnicas Comunes para Descubrir Cloudflare
* Puedes utilizar algún servicio que te proporcione los **registros DNS históricos** del dominio. Tal vez la página web esté alojada en una dirección IP utilizada anteriormente.
* Lo mismo se puede lograr **verificando certificados SSL históricos** que podrían apuntar a la dirección IP de origen.
* Verifica también los **registros DNS de otros subdominios que apunten directamente a IPs**, ya que es posible que otros subdominios estén apuntando al mismo servidor (quizás para ofrecer FTP, correo u otro servicio).
* Si encuentras un **SSRF dentro de la aplicación web**, puedes abusar de él para obtener la dirección IP del servidor.
* Busca una cadena única de la página web en buscadores como shodan (¿y tal vez en Google y similares?). Tal vez puedas encontrar una dirección IP con ese contenido.
* De manera similar, en lugar de buscar una cadena única, podrías buscar el icono de favicon con la herramienta: [https://github.com/karma9874/CloudFlare-IP](https://github.com/karma9874/CloudFlare-IP) o con [https://github.com/pielco11/fav-up](https://github.com/pielco11/fav-up)
* Esto no funcionará muy frecuentemente porque el servidor debe enviar la misma respuesta cuando se accede mediante la dirección IP, pero nunca se sabe.
## Herramientas para descubrir Cloudflare
* Busca el dominio en [http://www.crimeflare.org:82/cfs.html](http://www.crimeflare.org:82/cfs.html) o [https://crimeflare.herokuapp.com](https://crimeflare.herokuapp.com). O utiliza la herramienta [CloudPeler](https://github.com/zidansec/CloudPeler) (que utiliza esa API)
* Busca el dominio en [https://leaked.site/index.php?resolver/cloudflare.0/](https://leaked.site/index.php?resolver/cloudflare.0/)
* [**CloudFlair**](https://github.com/christophetd/CloudFlair) es una herramienta que buscará certificados de Censys que contengan el nombre de dominio, luego buscará direcciones IPv4 dentro de esos certificados y finalmente intentará acceder a la página web en esas IPs.
* [**CloakQuest3r**](https://github.com/spyboy-productions/CloakQuest3r): CloakQuest3r es una potente herramienta en Python meticulosamente diseñada para descubrir la verdadera dirección IP de sitios web protegidos por Cloudflare y otras alternativas, un servicio ampliamente adoptado de seguridad web y mejora de rendimiento. Su misión principal es discernir con precisión la dirección IP real de servidores web que están ocultos detrás del escudo protector de Cloudflare.
* [Censys](https://search.censys.io/)
* [Shodan](https://shodan.io/)
* [Bypass-firewalls-by-DNS-history](https://github.com/vincentcox/bypass-firewalls-by-DNS-history)
* Si tienes un conjunto de IPs potenciales donde se encuentra la página web, podrías utilizar [https://github.com/hakluke/hakoriginfinder](https://github.com/hakluke/hakoriginfinder)
```bash
# 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
```
## Descubriendo Cloudflare desde la infraestructura en la nube
Tenga en cuenta que aunque esto se haya hecho para máquinas de AWS, podría hacerse para cualquier otro proveedor de servicios en la nube.
Para obtener una mejor descripción de este proceso, consulte:
{% embed url="https://trickest.com/blog/cloudflare-bypass-discover-ip-addresses-aws/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
```bash
# 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
```
## Saltando Cloudflare a través de Cloudflare
### Extracciones de origen autenticadas
Este mecanismo se basa en **certificados SSL del cliente** para autenticar las conexiones entre los servidores de **proxy inverso de Cloudflare** y el servidor de **origen**, lo que se llama **mTLS**.
En lugar de configurar su propio certificado, los clientes pueden simplemente usar el certificado de Cloudflare para permitir cualquier conexión desde Cloudflare, **independientemente del inquilino**.
{% hint style="danger" %}
Por lo tanto, un atacante podría simplemente configurar un **dominio en Cloudflare usando el certificado de Cloudflare y apuntarlo** a la dirección IP del dominio de la **víctima**. De esta manera, al configurar su dominio completamente desprotegido, Cloudflare no protegerá las solicitudes enviadas.
{% endhint %}
Más información [**aquí**](https://socradar.io/cloudflare-protection-bypass-vulnerability-on-threat-actors-radar/).
### Permitir direcciones IP de Cloudflare en la lista blanca
Esto **rechazará las conexiones que no provengan de las** gamas de direcciones IP de Cloudflare. Esto también es vulnerable a la configuración anterior donde un atacante simplemente **apunta su propio dominio en Cloudflare** a la dirección IP de la **víctima** y la ataca.
Más información [**aquí**](https://socradar.io/cloudflare-protection-bypass-vulnerability-on-threat-actors-radar/).
## Saltar Cloudflare para hacer scraping
### Caché
A veces solo quieres saltar Cloudflare para hacer scraping de la página web. Hay algunas opciones para esto:
* Usa la caché de Google: `https://webcache.googleusercontent.com/search?q=cache:https://www.petsathome.com/shop/en/pets/dog`
* Usa otros servicios de caché como [https://archive.org/web/](https://archive.org/web/)
### Herramientas
Algunas herramientas como las siguientes pueden saltar (o pudieron saltar) la protección de Cloudflare contra el scraping:
* [https://github.com/sarperavci/CloudflareBypassForScraping](https://github.com/sarperavci/CloudflareBypassForScraping)
### Solucionadores de Cloudflare
Se han desarrollado varios solucionadores de Cloudflare:
* [FlareSolverr](https://github.com/FlareSolverr/FlareSolverr)
* [cloudscraper](https://github.com/VeNoMouS/cloudscraper) [Guía aquí](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) \[Archivado]
* [CloudflareSolverRe](https://github.com/RyuzakiH/CloudflareSolverRe)
### Navegadores headless fortificados <a href="#option-4-scrape-with-fortified-headless-browsers" id="option-4-scrape-with-fortified-headless-browsers"></a>
Utiliza un navegador headless que no sea detectado como un navegador automatizado (es posible que necesites personalizarlo para eso). Algunas opciones son:
* **Puppeteer:** El [plugin stealth](https://github.com/berstend/puppeteer-extra/tree/master/packages/puppeteer-extra-plugin-stealth) para [puppeteer](https://github.com/puppeteer/puppeteer).
* **Playwright:** El [plugin stealth](https://www.npmjs.com/package/playwright-stealth) llegará pronto a Playwright. Sigue los desarrollos [aquí](https://github.com/berstend/puppeteer-extra/issues/454) y [aquí](https://github.com/berstend/puppeteer-extra/tree/master/packages/playwright-extra).
* **Selenium:** El [undetected-chromedriver](https://github.com/ultrafunkamsterdam/undetected-chromedriver) es un parche optimizado de Selenium Chromedriver.
### Proxy inteligente con bypass integrado de Cloudflare <a href="#option-5-smart-proxy-with-cloudflare-built-in-bypass" id="option-5-smart-proxy-with-cloudflare-built-in-bypass"></a>
Los proxies inteligentes se actualizan continuamente por empresas especializadas, con el objetivo de superar las medidas de seguridad de Cloudflare (ya que ese es su negocio).
Algunos de ellos son:
* [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) son conocidos por sus mecanismos de bypass de Cloudflare propietarios.
Para aquellos que buscan una solución optimizada, el [Agregador de Proxies de ScrapeOps](https://scrapeops.io/proxy-aggregator/) se destaca. Este servicio integra más de 20 proveedores de proxy en una sola API, seleccionando automáticamente el proxy mejor y más rentable para sus dominios objetivo, ofreciendo así una opción superior para navegar por las defensas de Cloudflare.
### Ingeniería inversa de la protección anti-bot de Cloudflare <a href="#option-6-reverse-engineer-cloudflare-anti-bot-protection" id="option-6-reverse-engineer-cloudflare-anti-bot-protection"></a>
La ingeniería inversa de las medidas anti-bot de Cloudflare es una táctica utilizada por proveedores de proxies inteligentes, adecuada para el scraping web extensivo sin el alto costo de ejecutar muchos navegadores headless.
**Ventajas:** Este método permite la creación de un bypass extremadamente eficiente que se dirige específicamente a las verificaciones de Cloudflare, ideal para operaciones a gran escala.
**Desventajas:** La desventaja es la complejidad involucrada en comprender y engañar al sistema anti-bot deliberadamente oscuro de Cloudflare, lo que requiere un esfuerzo continuo para probar diferentes estrategias y actualizar el bypass a medida que Cloudflare mejora sus protecciones.
Encuentra más información sobre cómo hacer esto en el [artículo original](https://scrapeops.io/web-scraping-playbook/how-to-bypass-cloudflare/).
## Referencias
* [https://scrapeops.io/web-scraping-playbook/how-to-bypass-cloudflare/](https://scrapeops.io/web-scraping-playbook/how-to-bypass-cloudflare/)
<details>
<summary><strong>Aprende hacking de AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Otras formas de apoyar a HackTricks:
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén la [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Comparte tus trucos de hacking enviando PRs a** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>