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

149 lines
13 KiB
Markdown
Raw Normal View History

2023-06-03 13:10:46 +00:00
# Découverte de CloudFlare
2022-04-28 16:01:33 +00:00
<details>
2023-04-25 18:35:28 +00:00
<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>
2022-04-28 16:01:33 +00:00
* Travaillez-vous dans une **entreprise de cybersécurité** ? Voulez-vous voir votre **entreprise annoncée dans HackTricks** ? Ou voulez-vous avoir accès à la **dernière version de PEASS ou télécharger HackTricks en PDF** ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFT**](https://opensea.io/collection/the-peass-family)
2023-06-03 13:10:46 +00:00
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
* **Rejoignez le** [**💬**](https://emojipedia.org/speech-balloon/) [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
2023-06-03 13:10:46 +00:00
* **Partagez vos astuces de piratage en soumettant des PR au** [**repo hacktricks**](https://github.com/carlospolop/hacktricks) **et au** [**repo hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
2022-04-28 16:01:33 +00:00
</details>
Techniques pour essayer de découvrir les serveurs web derrière CloudFlare :
2020-12-08 12:25:09 +00:00
### Techniques
* Vous pouvez également utiliser un service qui vous donne les **enregistrements DNS historiques** du domaine. Peut-être que la page web est exécutée sur une adresse IP utilisée auparavant.
* La même chose peut être réalisée en **vérifiant les certificats SSL historiques** qui pourraient pointer vers l'adresse IP d'origine.
* Vérifiez également les **enregistrements DNS d'autres sous-domaines pointant directement vers des adresses IP**, car il est possible que d'autres sous-domaines pointent vers le même serveur (peut-être pour offrir FTP, mail ou tout autre service).
* Si vous trouvez un **SSRF à l'intérieur de l'application web**, vous pouvez l'exploiter pour obtenir l'adresse IP du serveur.
* Recherchez une chaîne unique de la page web dans des navigateurs tels que Shodan (et peut-être Google et similaires ?). Vous pouvez peut-être trouver une adresse IP avec ce contenu.
* De la même manière, au lieu de rechercher une chaîne unique, vous pouvez rechercher l'icône favicon avec l'outil : [https://github.com/karma9874/CloudFlare-IP](https://github.com/karma9874/CloudFlare-IP) ou avec [https://github.com/pielco11/fav-up](https://github.com/pielco11/fav-up)
* Cela ne fonctionnera pas très fréquemment car le serveur doit envoyer la même réponse lorsqu'il est accédé par l'adresse IP, mais on ne sait jamais.
2023-06-03 13:10:46 +00:00
### Outils
2023-06-03 13:10:46 +00:00
* Recherchez le domaine dans [http://www.crimeflare.org:82/cfs.html](http://www.crimeflare.org:82/cfs.html) ou [https://crimeflare.herokuapp.com](https://crimeflare.herokuapp.com). Ou utilisez l'outil [CloudPeler](https://github.com/zidansec/CloudPeler) (qui utilise cette API)
* Recherchez le domaine dans [https://leaked.site/index.php?resolver/cloudflare.0/](https://leaked.site/index.php?resolver/cloudflare.0/)
* [**CloudFlair**](https://github.com/christophetd/CloudFlair) est un outil qui recherchera à l'aide des certificats Censys contenant le nom de domaine, puis recherchera les adresses IPv4 dans ces certificats et enfin essaiera d'accéder à la page web sur ces adresses IP.
* [Censys](https://search.censys.io/)
* [Shodan](https://shodan.io/)
* [Bypass-firewalls-by-DNS-history](https://github.com/vincentcox/bypass-firewalls-by-DNS-history)
* Si vous disposez d'un ensemble d'adresses IP potentielles où se trouve la page web, vous pouvez utiliser [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
```
2023-06-03 13:10:46 +00:00
### Découverte de Cloudflare à partir de machines AWS
2022-08-17 12:21:23 +00:00
2023-06-03 13:10:46 +00:00
Pour une meilleure description de ce processus, consultez :
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
```
## Contourner Cloudflare via Cloudflare
### Authenticated Origin Pulls
Ce mécanisme repose sur les **certificats SSL du client** pour authentifier les connexions entre les serveurs **reverse-proxy de Cloudflare** et le serveur **d'origine**, appelé **mTLS**.
Au lieu de configurer son propre certificat, le client peut simplement utiliser le certificat de Cloudflare pour autoriser toute connexion provenant de Cloudflare, **indépendamment du locataire**.
{% hint style="danger" %}
Par conséquent, un attaquant peut simplement définir un **domaine dans Cloudflare en utilisant le certificat de Cloudflare et le pointer** vers l'adresse IP du domaine **victime**. De cette manière, en configurant son domaine complètement non protégé, Cloudflare ne protégera pas les requêtes envoyées.
{% endhint %}
Plus d'informations [**ici**](https://socradar.io/cloudflare-protection-bypass-vulnerability-on-threat-actors-radar/).
### Autoriser les adresses IP de Cloudflare
Cela **rejette les connexions qui ne proviennent pas des** plages d'adresses IP de Cloudflare. Cela est également vulnérable à la configuration précédente où un attaquant **pointe simplement son propre domaine dans Cloudflare** vers l'adresse IP de la victime et l'attaque.
Plus d'informations [**ici**](https://socradar.io/cloudflare-protection-bypass-vulnerability-on-threat-actors-radar/).
2023-06-03 13:10:46 +00:00
## Contourner Cloudflare pour le scraping
### Cache
Parfois, vous voulez simplement contourner Cloudflare pour ne faire que du scraping de la page web. Voici quelques options :
* Utiliser le cache de Google : `https://webcache.googleusercontent.com/search?q=cache:https://www.petsathome.com/shop/en/pets/dog`
* Utiliser d'autres services de cache tels que [https://archive.org/web/](https://archive.org/web/)
2023-06-03 13:10:46 +00:00
### Résolveurs Cloudflare
2023-06-03 13:10:46 +00:00
Plusieurs résolveurs Cloudflare ont été développés :
* [FlareSolverr](https://github.com/FlareSolverr/FlareSolverr)
2023-06-03 13:10:46 +00:00
* [cloudscraper](https://github.com/VeNoMouS/cloudscraper) [Guide ici](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-06-03 13:10:46 +00:00
* [cloudflare-bypass](https://github.com/devgianlu/cloudflare-bypass) \[Archivé]
* [CloudflareSolverRe](https://github.com/RyuzakiH/CloudflareSolverRe)
2023-06-03 13:10:46 +00:00
### Navigateurs sans tête renforcés <a href="#option-4-scrape-with-fortified-headless-browsers" id="option-4-scrape-with-fortified-headless-browsers"></a>
L'autre option est d'effectuer tout le travail de scraping avec un navigateur sans tête qui a été renforcé pour ressembler à un navigateur d'utilisateur réel :
2023-06-03 13:10:46 +00:00
* **Puppeteer :** Le [plugin stealth](https://github.com/berstend/puppeteer-extra/tree/master/packages/puppeteer-extra-plugin-stealth) pour [puppeteer](https://github.com/puppeteer/puppeteer).
* **Playwright :** Le [plugin stealth](https://www.npmjs.com/package/playwright-stealth) arrivera bientôt sur Playwright. Suivez les développements [ici](https://github.com/berstend/puppeteer-extra/issues/454) et [ici](https://github.com/berstend/puppeteer-extra/tree/master/packages/playwright-extra).
* **Selenium :** L'[undetected-chromedriver](https://github.com/ultrafunkamsterdam/undetected-chromedriver), un correctif optimisé pour Selenium Chromedriver.
2023-06-03 13:10:46 +00:00
### Proxy intelligent avec contournement intégré de Cloudflare <a href="#option-5-smart-proxy-with-cloudflare-built-in-bypass" id="option-5-smart-proxy-with-cloudflare-built-in-bypass"></a>
L'alternative à l'utilisation de contournements de Cloudflare open source est d'utiliser des proxies intelligents qui développent et maintiennent leurs propres contournements privés de Cloudflare.
Ceux-ci sont généralement plus fiables car il est plus difficile pour Cloudflare de développer des correctifs pour eux, et ils sont développés par des entreprises de proxy qui ont un intérêt financier à rester un pas en avant de Cloudflare et à corriger leurs contournements dès qu'ils cessent de fonctionner.
La plupart des fournisseurs de proxy intelligents ([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)) ont une forme de contournement de Cloudflare qui fonctionne à des degrés variables et varient en coût.
Cependant, l'une des meilleures options est d'utiliser l'[Aggrégateur de Proxies ScrapeOps](https://scrapeops.io/proxy-aggregator/) car il intègre plus de 20 fournisseurs de proxy dans la même API de proxy et trouve le meilleur/fournisseur de proxy le moins cher pour vos domaines cibles.
### Reverse Engineer la protection anti-bot de Cloudflare <a href="#option-6-reverse-engineer-cloudflare-anti-bot-protection" id="option-6-reverse-engineer-cloudflare-anti-bot-protection"></a>
Cette approche fonctionne (et c'est ce que font de nombreuses solutions de proxy intelligentes), cependant, elle n'est pas destinée aux âmes sensibles.
**Avantages :** L'avantage de cette approche est que si vous effectuez du scraping à grande échelle et que vous ne voulez pas exécuter des centaines (voire des milliers) d'instances coûteuses de navigateurs sans tête, vous pouvez plutôt développer le contournement de Cloudflare le plus efficace en termes de ressources possible. Un contournement conçu uniquement pour passer les tests de Cloudflare JS, TLS et d'empreinte IP.
2023-06-03 13:10:46 +00:00
**Inconvénients :** Les inconvénients de cette approche sont que vous devrez plonger profondément dans un système anti-bot qui a été délibérément rendu difficile à comprendre de l'extérieur, et tester différentes techniques pour tromper leur système de vérification. Ensuite, maintenez ce système alors que Cloudflare continue de développer sa protection anti-bot.
2023-06-03 13:10:46 +00:00
## Références
* [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-04-25 18:35:28 +00:00
<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>
2022-04-28 16:01:33 +00:00
* Vous travaillez dans une **entreprise de cybersécurité** ? Vous souhaitez voir votre **entreprise annoncée dans HackTricks** ? ou souhaitez-vous avoir accès à la **dernière version de PEASS ou télécharger HackTricks en PDF** ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
2023-06-03 13:10:46 +00:00
* Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
* **Rejoignez le** [**💬**](https://emojipedia.org/speech-balloon/) [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Partagez vos astuces de piratage en soumettant des PRs au** [**repo hacktricks**](https://github.com/carlospolop/hacktricks) **et au** [**repo hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
2022-04-28 16:01:33 +00:00
</details>