# Cloudflare Security
{{#include ../../banners/hacktricks-training.md}}
In a Cloudflare account there are some **general settings and services** that can be configured. In this page we are going to **analyze the security related settings of each section:**
## Websites
Revisar cada uno con:
{{#ref}}
cloudflare-domains.md
{{#endref}}
### Domain Registration
- [ ] En **`Transfer Domains`** comprobar que no sea posible transferir ningún dominio.
Revisar cada uno con:
{{#ref}}
cloudflare-domains.md
{{#endref}}
## Analytics
_No pude encontrar nada que revisar para una auditoría de configuración de seguridad._
## Pages
En cada Pages de Cloudflare:
- [ ] Comprobar **información sensible** en el **`Build log`**.
- [ ] Comprobar **información sensible** en el **Github repository** asignado a Pages.
- [ ] Comprobar posible compromiso del repo de Github vía **workflow command injection** o compromiso `pull_request_target`. Más info en la [**Github Security page**](../github-security/index.html).
- [ ] Buscar funciones vulnerables en el directorio `/fuctions` (si existe), revisar los redirects en el archivo `_redirects` (si existe) y los encabezados mal configurados en el archivo `_headers` (si existe).
- [ ] Buscar **vulnerabilidades** en la **web page** mediante blackbox o whitebox si puedes acceder al código.
- [ ] En los detalles de cada página `//pages/view/blocklist/settings/functions`. Comprobar **información sensible** en las **`Environment variables`**.
- [ ] En la página de detalles revisar también el **build command** y el **root directory** buscando potenciales injections que puedan comprometer la página.
## **Workers**
En cada Worker de Cloudflare comprobar:
- [ ] Los triggers: ¿qué hace que el worker se ejecute? ¿Puede un **usuario enviar datos** que serán **usados** por el worker?
- [ ] En **`Settings`**, revisar las **`Variables`** que contengan **información sensible**.
- [ ] Revisar el **código del worker** y buscar **vulnerabilidades** (especialmente en puntos donde el usuario puede controlar el input).
- Comprobar SSRFs que retornen la página indicada que puedas controlar.
- Comprobar XSSs que ejecuten JS dentro de una imagen svg.
- Es posible que el worker interactúe con otros servicios internos. Por ejemplo, un worker puede interactuar con un R2 bucket almacenando información en él obtenida del input. En ese caso, es necesario comprobar qué capacidades tiene el worker sobre el R2 bucket y cómo podría abusarse de ellas desde el input del usuario.
> [!WARNING]
> Note that by default a **Worker is given a URL** such as `..workers.dev`. The user can set it to a **subdomain** but you can always access it with that **original URL** if you know it.
For a practical abuse of Workers as pass-through proxies (IP rotation, FireProx-style), check:
{{#ref}}
cloudflare-workers-pass-through-proxy-ip-rotation.md
{{#endref}}
## R2
On each R2 bucket check:
- [ ] Configure **CORS Policy**.
## Stream
TODO
## Images
TODO
## Security Center
- [ ] Si es posible, ejecutar un **`Security Insights`** **scan** y un **`Infrastructure`** **scan**, ya que resaltarán información interesante desde el punto de vista de la **seguridad**.
- [ ] Simplemente **revisa esta información** en busca de misconfiguraciones de seguridad e información interesante.
## Turnstile
TODO
## **Zero Trust**
{{#ref}}
cloudflare-zero-trust-network.md
{{#endref}}
## Bulk Redirects
> [!NOTE]
> 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.
- [ ] Comprobar que las **expressions** y **requirements** de los redirects **tengan sentido**.
- [ ] Comprobar también endpoints ocultos **sensitive** que puedan contener información interesante.
## Notifications
- [ ] Revisar las **notifications.** Estas notificaciones se recomiendan para seguridad:
- `Usage Based Billing`
- `HTTP DDoS Attack Alert`
- `Layer 3/4 DDoS Attack Alert`
- `Advanced HTTP DDoS Attack Alert`
- `Advanced Layer 3/4 DDoS Attack Alert`
- `Flow-based Monitoring: Volumetric Attack`
- `Route Leak Detection Alert`
- `Access mTLS Certificate Expiration Alert`
- `SSL for SaaS Custom Hostnames Alert`
- `Universal SSL Alert`
- `Script Monitor New Code Change Detection Alert`
- `Script Monitor New Domain Alert`
- `Script Monitor New Malicious Domain Alert`
- `Script Monitor New Malicious Script Alert`
- `Script Monitor New Malicious URL Alert`
- `Script Monitor New Scripts Alert`
- `Script Monitor New Script Exceeds Max URL Length Alert`
- `Advanced Security Events Alert`
- `Security Events Alert`
- [ ] Comprobar todos los **destinos**, ya que podría haber **información sensible** (basic http auth) en las webhook urls. Asegúrate también de que las webhook urls usen **HTTPS**.
- [ ] Como comprobación extra, podrías intentar suplantar una notificación de cloudflare a un tercero; quizá puedas inyectar algo peligroso.
## Manage Account
- [ ] Es posible ver los **últimos 4 dígitos de la tarjeta**, la **fecha de expiración** y la **dirección de facturación** en **`Billing` -> `Payment info`**.
- [ ] Es posible ver el **tipo de plan** usado en la cuenta en **`Billing` -> `Subscriptions`**.
- [ ] En **`Members`** es posible ver todos los miembros de la cuenta y su **role**. Ten en cuenta que si el plan no es Enterprise, solo existen 2 roles: Administrator y Super Administrator. Pero si el plan usado es Enterprise, [**más roles**](https://developers.cloudflare.com/fundamentals/account-and-billing/account-setup/account-roles/) pueden utilizarse para aplicar el principio de menor privilegio.
- Por lo tanto, siempre que sea posible se **recomienda** usar el **Enterprise plan**.
- [ ] En Members se puede comprobar qué **miembros** tienen **2FA enabled**. **Todos** los usuarios deberían tenerlo activado.
> [!NOTE]
> Note that fortunately the role **`Administrator`** doesn't give permissions to manage memberships (**cannot escalate privs or invite** new members)
## DDoS Investigation
[Check this part](cloudflare-domains.md#cloudflare-ddos-protection).
{{#include ../../banners/hacktricks-training.md}}