mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-26 22:52:06 +00:00
131 lines
12 KiB
Markdown
131 lines
12 KiB
Markdown
# Descubriendo CloudFlare
|
|
|
|
<details>
|
|
|
|
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</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>
|
|
|
|
* ¿Trabajas en una **empresa de ciberseguridad**? ¿Quieres ver tu **empresa anunciada en HackTricks**? ¿O quieres tener acceso a la **última versión de PEASS o descargar HackTricks en PDF**? ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
|
|
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
|
* Obtén el [**swag oficial de PEASS y HackTricks**](https://peass.creator-spring.com)
|
|
* **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **sígueme** en **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
|
* **Comparte tus trucos de hacking enviando PRs al** [**repositorio de hacktricks**](https://github.com/carlospolop/hacktricks) **y al** [**repositorio de hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
|
|
|
</details>
|
|
|
|
Técnicas para intentar descubrir servidores web detrás de Cloudflare:
|
|
|
|
### Técnicas
|
|
|
|
* También puedes usar algún servicio que te dé los **registros históricos de DNS** del dominio. Tal vez la página web se esté ejecutando en una dirección IP utilizada anteriormente.
|
|
* Lo mismo se puede lograr **comprobando los certificados SSL históricos** que podrían estar apuntando a la dirección IP de origen.
|
|
* Comprueba también **los registros DNS de otros subdominios que apuntan directamente a IPs**, ya que es posible que otros subdominios estén apuntando al mismo servidor (tal vez para ofrecer FTP, correo electrónico o cualquier 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 navegadores como Shodan (y tal vez Google y similares). Tal vez puedas encontrar una dirección IP con ese contenido.
|
|
|
|
* De manera similar, en lugar de buscar una cadena única, puedes 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á con mucha frecuencia porque el servidor debe enviar la misma respuesta cuando se accede por la dirección IP, pero nunca se sabe.
|
|
|
|
### Herramientas
|
|
|
|
* Busca el dominio dentro de [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á utilizando los certificados de Censys que contienen el nombre de dominio, luego buscará IPv4 dentro de esos certificados y finalmente intentará acceder a la página web en esos IPs.
|
|
* [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, puedes usar [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 máquinas de AWS
|
|
|
|
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
|
|
```
|
|
## Bypass de Cloudflare para hacer scraping
|
|
|
|
### Caché
|
|
|
|
A veces solo quieres hacer scraping de una página web y saltarte Cloudflare. 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/)
|
|
|
|
### 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 sin cabeza fortificados <a href="#option-4-scrape-with-fortified-headless-browsers" id="option-4-scrape-with-fortified-headless-browsers"></a>
|
|
|
|
La otra opción es hacer todo el trabajo de scraping con un navegador sin cabeza que ha sido fortificado para parecerse al navegador de un usuario real:
|
|
|
|
* **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>
|
|
|
|
La alternativa a usar bypasses de Cloudflare de código abierto es usar proxies inteligentes que desarrollen y mantengan sus propios bypasses privados de Cloudflare.
|
|
|
|
Estos suelen ser más confiables ya que es más difícil para Cloudflare desarrollar parches para ellos, y son desarrollados por compañías de proxy que están financieramente motivadas para estar un paso por delante de Cloudflare y arreglar sus bypasses en el momento en que dejen de funcionar.
|
|
|
|
La mayoría de los proveedores de proxy inteligentes ([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)) tienen algún tipo de bypass de Cloudflare que funciona en diferentes grados y varía en costo.
|
|
|
|
Sin embargo, una de las mejores opciones es usar el [Agregador de Proxy de ScrapeOps](https://scrapeops.io/proxy-aggregator/) ya que integra más de 20 proveedores de proxy en la misma API de proxy y encuentra el proveedor de proxy mejor y más barato para tus dominios objetivo.
|
|
|
|
### 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>
|
|
|
|
Este enfoque funciona (y es lo que hacen muchas soluciones de proxy inteligentes), sin embargo, no es para los débiles de corazón.
|
|
|
|
**Ventajas:** La ventaja de este enfoque es que si estás haciendo scraping a gran escala y no quieres ejecutar cientos (si no miles) de costosas instancias completas de navegadores sin cabeza, puedes desarrollar el bypass de Cloudflare más eficiente en recursos posible. Uno que esté diseñado únicamente para pasar las pruebas de huellas digitales de JS, TLS e IP de Cloudflare.
|
|
|
|
**Desventajas:** Las desventajas de este enfoque es que tendrás que sumergirte profundamente en un sistema anti-bot que ha sido hecho a propósito difícil de entender desde el exterior, y probar diferentes técnicas para engañar su sistema de verificación. Luego, mantener este sistema a medida que Cloudflare continúa desarrollando su protección anti-bot.
|
|
|
|
## Referencias
|
|
|
|
* [https://scrapeops.io/web-scraping-playbook/how-to-bypass-cloudflare/](https://scrapeops.io/web-scraping-playbook/how-to-bypass-cloudflare/)
|
|
|
|
<details>
|
|
|
|
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</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>
|
|
|
|
* ¿Trabajas en una **empresa de ciberseguridad**? ¿Quieres ver tu **empresa anunciada en HackTricks**? ¿O quieres tener acceso a la **última versión de PEASS o descargar HackTricks en PDF**? ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
|
|
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos.
|
|
* Consigue el [**swag oficial de PEASS y HackTricks**](https://peass.creator-spring.com)
|
|
* **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **sígueme** en **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live).
|
|
* **Comparte tus trucos de hacking enviando PR al** [**repositorio de hacktricks**](https://github.com/carlospolop/hacktricks) **y al** [**repositorio de hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
|
|
|
</details>
|