Translated ['src/pentesting-cloud/aws-security/aws-privilege-escalation/

This commit is contained in:
Translator
2025-10-23 20:47:04 +00:00
parent 6c560f8fd9
commit be343fc216
18 changed files with 599 additions and 609 deletions

View File

@@ -1,24 +1,24 @@
# Sécurité Cloudflare
# Cloudflare Sécurité
{{#include ../../banners/hacktricks-training.md}}
Dans un compte Cloudflare, il existe quelques **paramètres généraux et services** qui peuvent être configurés. Sur cette page, nous allons **analyser les paramètres liés à la sécurité de chaque section :**
Dans un compte Cloudflare il existe certains **paramètres généraux et services** qui peuvent être configurés. Sur cette page nous allons **analyser les paramètres liés à la sécurité de chaque section :**
<figure><img src="../../images/image (117).png" alt=""><figcaption></figcaption></figure>
## Sites web
## Sites Web
Vérifier chaque élément avec :
Review each with:
{{#ref}}
cloudflare-domains.md
{{#endref}}
### Enregistrement de domaine
### Domain Registration
- [ ] Dans **`Transfer Domains`** vérifier qu'il n'est pas possible de transférer un domaine.
- [ ] Dans **`Transfer Domains`**, vérifiez qu'il n'est pas possible de transférer un domaine.
Vérifier chaque élément avec :
Review each with:
{{#ref}}
cloudflare-domains.md
@@ -30,32 +30,31 @@ _I couldn't find anything to check for a config security review._
## Pages
Sur chaque page Cloudflare :
Sur chaque page de Cloudflare :
- [ ] Vérifier la présence d'**informations sensibles** dans le **`Build log`**.
- [ ] Vérifier la présence d'**informations sensibles** dans le **Github repository** assigné aux pages.
- [ ] Vérifier une compromission potentielle du repo github via **workflow command injection** ou compromission de `pull_request_target`. Plus d'infos sur la [**Github Security page**](../github-security/index.html).
- [ ] Vérifier la présence de **fonctions vulnérables** dans le répertoire `/fuctions` (si présent), vérifier les **redirections** dans le fichier `_redirects` (si présent) et les **headers mal configurés** dans le fichier `_headers` (si présent).
- [ ] Vérifier la présence d'**informations sensibles** dans le **Github repository** assigné aux Pages.
- [ ] Rechercher un compromis potentiel du github repo via une **workflow command injection** ou par compromission de `pull_request_target`. More info in the [**Github Security page**](../github-security/index.html).
- [ ] Vérifier les **fonctions vulnérables** dans le répertoire `/fuctions` (si présent), vérifier les **redirections** dans le fichier `_redirects` (si présent) et les **entêtes mal configurés** dans le fichier `_headers` (si présent).
- [ ] Rechercher des **vulnérabilités** dans la **page web** via **blackbox** ou **whitebox** si vous pouvez **accéder au code**.
- [ ] Dans les détails de chaque page `/<page_id>/pages/view/blocklist/settings/functions`. Vérifier la présence d'**informations sensibles** dans les **`Environment variables`**.
- [ ] Dans la page de détails, vérifier également la **commande de build** et le **répertoire racine** pour des **injections potentielles** pouvant compromettre la page.
- [ ] Dans la page de détails, vérifiez également la **build command** et le **root directory** pour des **injections potentielles** permettant de compromettre la page.
## **Workers**
Sur chaque worker Cloudflare, vérifier :
Pour chaque worker Cloudflare, vérifiez :
- [ ] Les triggers : qu'est-ce qui déclenche le worker ? Un utilisateur peut-il envoyer des données qui seront utilisées par le worker ?
- [ ] Dans les **`Settings`**, vérifier les **`Variables`** contenant des **informations sensibles**
- [ ] Vérifier le **code du worker** et rechercher des **vulnérabilités** (surtout aux endroits où l'utilisateur peut contrôler l'entrée)
Rechercher des SSRF renvoyant la page indiquée que vous pouvez contrôler
Rechercher des XSS exécutant du JS à l'intérieur d'une image svg
Il est possible que le worker interagisse avec d'autres services internes. Par exemple, un worker peut interagir avec un bucket R2 stockant des informations en provenance de l'entrée. Dans ce cas, il est nécessaire de vérifier quelles capacités le worker possède sur le bucket R2 et comment cela pourrait être abusé via l'entrée utilisateur.
- [ ] Les triggers : qu'est-ce qui déclenche le worker ? Un **utilisateur peut-il envoyer des données** qui seront **utilisées** par le worker ?
- [ ] Dans les **`Settings`**, vérifiez la présence de **`Variables`** contenant des **informations sensibles**
- [ ] Vérifiez le **code du worker** et recherchez des **vulnérabilités** (surtout aux endroits où l'utilisateur peut contrôler l'entrée)
- Cherchez des SSRF renvoyant la page indiquée que vous pouvez contrôler
- Cherchez des XSS exécutant du JS à l'intérieur d'une image svg
- Il est possible que le worker interagisse avec d'autres services internes. Par exemple, un worker peut interagir avec un bucket R2 stockant des informations obtenues depuis l'entrée. Dans ce cas, il sera nécessaire de vérifier quelles capacités le worker a sur le bucket R2 et comment cela pourrait être abusé via l'entrée utilisateur.
> [!WARNING]
> Notez que par défaut un **Worker se voit attribuer une URL** telle que `<worker-name>.<account>.workers.dev`. L'utilisateur peut la configurer sur un **sous-domaine**, mais vous pouvez toujours y accéder via cette **URL originale** si vous la connaissez.
> Notez que par défaut un **Worker reçoit une URL** telle que `<worker-name>.<account>.workers.dev`. L'utilisateur peut la définir sur un **sous-domaine**, mais vous pouvez toujours y accéder avec cette **URL originale** si vous la connaissez.
Pour un abus pratique des Workers en tant que pass-through proxies (IP rotation, FireProx-style), consultez :
For a practical abuse of Workers as pass-through proxies (IP rotation, FireProx-style), check:
{{#ref}}
cloudflare-workers-pass-through-proxy-ip-rotation.md
@@ -63,9 +62,9 @@ cloudflare-workers-pass-through-proxy-ip-rotation.md
## R2
Pour chaque bucket R2, vérifier :
Pour chaque bucket R2, vérifiez :
- [ ] Configurer la **CORS Policy**.
- [ ] Configurez la **CORS Policy**.
## Stream
@@ -77,8 +76,8 @@ TODO
## Security Center
- [ ] Si possible, exécuter un **`Security Insights`** **scan** et un **`Infrastructure`** **scan**, car ils mettront en évidence des informations intéressantes en termes de **sécurité**.
- [ ] Vérifier simplement ces informations pour détecter des mauvaises configurations de sécurité et des informations intéressantes
- [ ] Si possible, lancez un **`Security Insights`** **scan** et un **`Infrastructure`** **scan**, car ils mettront en **évidence** des informations intéressantes d'un point de vue **sécurité**.
- [ ] Il suffit de **vérifier ces informations** pour des mauvaises configurations de sécurité et des informations intéressantes
## Turnstile
@@ -93,14 +92,14 @@ cloudflare-zero-trust-network.md
## Bulk Redirects
> [!NOTE]
> Contrairement à [Dynamic Redirects](https://developers.cloudflare.com/rules/url-forwarding/dynamic-redirects/), [**Bulk Redirects**](https://developers.cloudflare.com/rules/url-forwarding/bulk-redirects/) sont essentiellement statiques — elles ne prennent **pas en charge d'opérations de remplacement de chaîne** ni les expressions régulières. Cependant, vous pouvez configurer des paramètres de redirection d'URL qui affectent leur comportement de correspondance d'URL et leur comportement à l'exécution.
> Unlike [Dynamic Redirects](https://developers.cloudflare.com/rules/url-forwarding/dynamic-redirects/), [**Bulk Redirects**](https://developers.cloudflare.com/rules/url-forwarding/bulk-redirects/) are essentially static — they do **not support any string replacement** operations or regular expressions. However, you can configure URL redirect parameters that affect their URL matching behavior and their runtime behavior.
- [ ] Vérifier que les **expressions** et les **exigences** pour les redirections **ont du sens**.
- [ ] Vérifier également la présence d'**endpoints cachés sensibles** qui contiennent des informations intéressantes.
- [ ] Vérifiez que les **expressions** et les **exigences** des redirections **ont du sens**.
- [ ] Vérifiez aussi la présence d'**endpoints cachés sensibles** qui pourraient contenir des informations intéressantes.
## Notifications
- [ ] Vérifier les **notifications.** Ces notifications sont recommandées pour la sécurité :
- [ ] Vérifiez les **notifications**. Ces notifications sont recommandées pour la sécurité :
- `Usage Based Billing`
- `HTTP DDoS Attack Alert`
- `Layer 3/4 DDoS Attack Alert`
@@ -120,22 +119,22 @@ cloudflare-zero-trust-network.md
- `Script Monitor New Script Exceeds Max URL Length Alert`
- `Advanced Security Events Alert`
- `Security Events Alert`
- [ ] Vérifier toutes les **destinations**, car il pourrait y avoir des **informations sensibles** (basic http auth) dans les webhook urls. Assurez-vous également que les webhook urls utilisent **HTTPS**
- [ ] En vérification supplémentaire, vous pouvez tenter d'**usurper une notification cloudflare** vers un tiers, peut-être pouvez-vous injecter quelque chose de dangereux
- [ ] Vérifiez toutes les **destinations**, car il pourrait y avoir des **informations sensibles** (auth HTTP basique) dans les webhook urls. Assurez-vous également que les webhook urls utilisent **HTTPS**
- [ ] Comme vérification supplémentaire, vous pouvez tenter **d'usurper une notification Cloudflare** vers un tiers, peut-être pouvez-vous d'une manière ou d'une autre **injecter quelque chose de dangereux**
## Manage Account
- [ ] Il est possible de voir les **4 derniers chiffres de la carte**, la date **d'expiration** et l'**adresse de facturation** dans **`Billing` -> `Payment info`**.
- [ ] Il est possible de voir les **4 derniers chiffres de la carte**, la **date d'expiration** et **l'adresse de facturation** dans **`Billing` -> `Payment info`**.
- [ ] Il est possible de voir le **type de plan** utilisé dans le compte dans **`Billing` -> `Subscriptions`**.
- [ ] Dans **`Members`** il est possible de voir tous les membres du compte et leur **rôle**. Notez que si le type de plan n'est pas Enterprise, seuls 2 rôles existent : Administrator et Super Administrator. Mais si le **plan utilisé est Enterprise**, [**plus de rôles**](https://developers.cloudflare.com/fundamentals/account-and-billing/account-setup/account-roles/) peuvent être utilisés pour suivre le principe du moindre privilège.
- Donc, chaque fois que possible, il est **recommandé** d'utiliser le **plan Enterprise**.
- [ ] Dans Members, il est possible de vérifier quels **membres** ont la **2FA activée**. **Chaque** utilisateur devrait l'avoir activée.
- [ ] Dans **`Members`**, il est possible de voir tous les membres du compte et leur **rôle**. Notez que si le type de plan n'est pas Enterprise, seuls 2 rôles existent : Administrator et Super Administrator. Mais si le **plan est Enterprise**, [**more roles**](https://developers.cloudflare.com/fundamentals/account-and-billing/account-setup/account-roles/) peuvent être utilisés pour appliquer le principe du moindre privilège.
- Par conséquent, autant que possible il est **recommandé** d'utiliser le **Enterprise plan**.
- [ ] Dans Members, il est possible de vérifier quels **membres** ont la **2FA activée**. **Tous** les utilisateurs devraient l'avoir activée.
> [!NOTE]
> Notez que, fort heureusement, le rôle **`Administrator`** n'accorde pas la permission de gérer les adhésions (ne peut pas escalader les privilèges ni inviter de nouveaux membres)
> Notez que, heureusement, le rôle **`Administrator`** n'accorde pas les permissions pour gérer les memberships (**ne peut pas escalader les privilèges ni inviter** de nouveaux membres)
## DDoS Investigation
[Vérifiez cette partie](cloudflare-domains.md#cloudflare-ddos-protection).
[Check this part](cloudflare-domains.md#cloudflare-ddos-protection).
{{#include ../../banners/hacktricks-training.md}}

View File

@@ -2,30 +2,30 @@
{{#include ../../banners/hacktricks-training.md}}
Cloudflare Workers peuvent être déployés comme des proxies HTTP pass-through transparents où l'URL cible upstream est fournie par le client. Les requêtes sortent du réseau Cloudflare, de sorte que la cible observe les IPs de Cloudflare au lieu de celles du client. Cela reflète la technique bien connue FireProx sur AWS API Gateway, mais utilise Cloudflare Workers.
Cloudflare Workers peuvent être déployés comme des proxies HTTP transparents pass-through où l'URL cible upstream est fournie par le client. Les requêtes sortent du réseau Cloudflare, donc la cible voit les IPs de Cloudflare au lieu de celles du client. Cela reflète la technique bien connue FireProx sur AWS API Gateway, mais utilise Cloudflare Workers.
### Fonctionnalités clés
- Support de toutes les méthodes HTTP (GET, POST, PUT, DELETE, PATCH, OPTIONS, HEAD)
- Prise en charge de toutes les méthodes HTTP (GET, POST, PUT, DELETE, PATCH, OPTIONS, HEAD)
- La cible peut être fournie via un paramètre de requête (?url=...), un header (X-Target-URL), ou même encodée dans le chemin (par ex. /https://target)
- Les headers et le body sont proxifiés avec filtrage des headers hop-by-hop/nécessaires
- Les réponses sont renvoyées au client en préservant le code de statut et la plupart des headers
- Possibilité facultative de spoofing de X-Forwarded-For (si le Worker le définit à partir d'un header contrôlé par l'utilisateur)
- Rotation extrêmement rapide/aisée en déployant plusieurs endpoints Worker et en répartissant les requêtes
- Les headers et le corps sont relayés via le proxy avec filtrage des headers hop-by-hop si nécessaire
- Les réponses sont renvoyées en conservant le code de statut et la plupart des headers
- Usurpation optionnelle de X-Forwarded-For (si le Worker le définit à partir d'un header contrôlé par l'utilisateur)
- Rotation très rapide/facile en déployant plusieurs endpoints Worker et en répartissant les requêtes
### Comment ça fonctionne (flux)
1) Le client envoie une requête HTTP à une URL Worker (`<name>.<account>.workers.dev` ou une route de domaine custom).
2) Le Worker extrait la cible soit depuis un paramètre de requête (?url=...), le header X-Target-URL, ou un segment de chemin si implémenté.
3) Le Worker relaie la méthode entrante, les headers et le body vers l'URL upstream spécifiée (en filtrant les headers problématiques).
4) La réponse upstream est streamée de retour vers le client via Cloudflare ; l'origine voit les IPs d'egress de Cloudflare.
### Comment ça marche (flux)
1) Le client envoie une requête HTTP vers une URL Worker (`<name>.<account>.workers.dev` ou un route de domaine personnalisé).
2) Le Worker extrait la cible soit d'un paramètre de requête (?url=...), soit du header X-Target-URL, ou d'un segment de chemin si implémenté.
3) Le Worker transfère la méthode, les headers et le corps entrants vers l'URL upstream spécifiée (en filtrant les headers problématiques).
4) La réponse upstream est streamée vers le client via Cloudflare ; l'origine voit les IPs de sortie de Cloudflare.
### Exemple d'implémentation du Worker
- Lit l'URL cible depuis le paramètre de requête, le header, ou le chemin
- Copie un sous-ensemble sûr de headers et relaie la méthode/body original(e)
- Optionnellement définit X-Forwarded-For en utilisant un header contrôlé par l'utilisateur (X-My-X-Forwarded-For) ou une IP aléatoire
- Lit l'URL cible depuis un paramètre de requête, un header ou le chemin
- Copie un sous-ensemble sûr de headers et transmet la méthode/le corps originaux
- Définit optionnellement X-Forwarded-For en utilisant un header contrôlé par l'utilisateur (X-My-X-Forwarded-For) ou une IP aléatoire
- Ajoute un CORS permissif et gère les preflight
<details>
<summary>Example Worker (JavaScript) for pass-through proxying</summary>
<summary>Exemple de Worker (JavaScript) pour le proxy pass-through</summary>
```javascript
/**
* Minimal Worker pass-through proxy
@@ -133,13 +133,13 @@ function randomIP() { return [1,2,3,4].map(() => Math.floor(Math.random()*255)+1
```
</details>
### Automatiser le déploiement et la rotation avec FlareProx
### Automatisation du déploiement et de la rotation avec FlareProx
FlareProx est un outil Python qui utilise l'API Cloudflare pour déployer de nombreux Worker endpoints et effectuer une rotation entre eux. Cela fournit une rotation d'IP de type FireProx depuis le réseau Cloudflare.
FlareProx est un outil Python qui utilise l'API Cloudflare pour déployer plusieurs endpoints Worker et effectuer la rotation entre eux. Cela fournit une rotation d'IP de type FireProx depuis le réseau de Cloudflare.
Configuration
1) Créez un Cloudflare API Token en utilisant le modèle “Edit Cloudflare Workers” et récupérez votre Account ID depuis le tableau de bord.
2) Configurez FlareProx :
Setup
1) Créez un Cloudflare API Token en utilisant le template “Edit Cloudflare Workers” et récupérez votre Account ID depuis le tableau de bord.
2) Configurez FlareProx:
```bash
git clone https://github.com/MrTurvey/flareprox
cd flareprox
@@ -154,9 +154,9 @@ pip install -r requirements.txt
}
}
```
**Utilisation CLI**
**Utilisation de la CLI**
- Créer N Worker proxies:
- Créer N proxies Worker :
```bash
python3 flareprox.py create --count 2
```
@@ -164,20 +164,20 @@ python3 flareprox.py create --count 2
```bash
python3 flareprox.py list
```
- Points de terminaison de test de santé :
- Points de terminaison de vérification de santé :
```bash
python3 flareprox.py test
```
- Supprimer tous les endpoints :
- Supprimer tous les endpoints:
```bash
python3 flareprox.py cleanup
```
**Routage du trafic via un Worker**
- Forme du paramètre de requête:
**Acheminer le trafic via un Worker**
- Forme de paramètre de requête :
```bash
curl "https://your-worker.account.workers.dev?url=https://httpbin.org/ip"
```
- Format de l'en-tête:
- Formulaire d'en-tête:
```bash
curl -H "X-Target-URL: https://httpbin.org/ip" https://your-worker.account.workers.dev
```
@@ -202,19 +202,19 @@ curl -X PUT -d '{"username":"admin"}' -H "Content-Type: application/json" \
curl -X DELETE \
"https://your-worker.account.workers.dev?url=https://httpbin.org/delete"
```
**`X-Forwarded-For` contrôle**
**contrôle de `X-Forwarded-For`**
Si le Worker prend en compte `X-My-X-Forwarded-For`, vous pouvez influencer la valeur en amont `X-Forwarded-For` :
Si le Worker honore `X-My-X-Forwarded-For`, vous pouvez influencer la valeur en amont de `X-Forwarded-For` :
```bash
curl -H "X-My-X-Forwarded-For: 203.0.113.10" \
"https://your-worker.account.workers.dev?url=https://httpbin.org/headers"
```
**Utilisation programmatique**
Utilisez la bibliothèque FlareProx pour créer/lister/t tester des endpoints et router des requêtes depuis Python.
Utilisez la bibliothèque FlareProx pour créer/lister/tester des endpoints et acheminer des requêtes depuis Python.
<details>
<summary>Exemple Python: envoyer un POST via un endpoint Worker aléatoire</summary>
<summary>Exemple Python : Envoyer un POST via un endpoint Worker aléatoire</summary>
```python
#!/usr/bin/env python3
from flareprox import FlareProx, FlareProxError
@@ -267,15 +267,15 @@ print(f"Request error: {e}")
```
</details>
**Burp/Scanner intégration**
- Pointez les outils (par exemple, Burp Suite) vers l'URL du Worker.
**Intégration Burp/Scanner**
- Redirigez vos outils (par exemple, Burp Suite) vers l'URL du Worker.
- Fournissez l'upstream réel en utilisant ?url= ou X-Target-URL.
- HTTP semantics (methods/headers/body) are preserved while masking your source IP behind Cloudflare.
- La sémantique HTTP (methods/headers/body) est préservée tout en masquant votre IP source derrière Cloudflare.
**Notes opérationnelles et limites**
- Cloudflare Workers Free plan allows roughly 100,000 requests/day per account; use multiple endpoints to distribute traffic if needed.
- Les Workers s'exécutent sur le réseau de Cloudflare ; de nombreuses cibles ne verront que les Cloudflare IPs/ASN, ce qui peut contourner des listes allow/deny IP naïves ou des heuristiques géographiques.
- Utilisez de manière responsable et uniquement avec autorisation. Respectez les ToS et robots.txt.
- Le plan Free de Cloudflare Workers permet environ 100 000 requêtes/jour par compte ; utilisez plusieurs endpoints pour répartir le trafic si nécessaire.
- Les Workers s'exécutent sur le réseau Cloudflare ; de nombreuses cibles ne verront que les IPs/ASN de Cloudflare, ce qui peut contourner des listes d'autorisation/refus IP naïves ou des heuristiques géographiques.
- Utilisez de manière responsable et seulement avec autorisation. Respectez les ToS et robots.txt.
## Références
- [FlareProx (Cloudflare Workers pass-through/rotation)](https://github.com/MrTurvey/flareprox)