# Cabeceras HTTP especiales
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
* ¿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).
## Listas de palabras y herramientas
* [https://github.com/danielmiessler/SecLists/tree/master/Miscellaneous/web/http-request-headers](https://github.com/danielmiessler/SecLists/tree/master/Miscellaneous/web/http-request-headers)
* [https://github.com/rfc-st/humble](https://github.com/rfc-st/humble)
## Cabeceras para cambiar la ubicación
Reescribir **IP origen**:
* `X-Originating-IP: 127.0.0.1`
* `X-Forwarded-For: 127.0.0.1`
* `X-Forwarded: 127.0.0.1`
* `Forwarded-For: 127.0.0.1`
* `X-Forwarded-Host: 127.0.0.1`
* `X-Remote-IP: 127.0.0.1`
* `X-Remote-Addr: 127.0.0.1`
* `X-ProxyUser-Ip: 127.0.0.1`
* `X-Original-URL: 127.0.0.1`
* `Client-IP: 127.0.0.1`
* `X-Client-IP: 127.0.0.1`
* `X-Host: 127.0.0.1`
* `True-Client-IP: 127.0.0.1`
* `Cluster-Client-IP: 127.0.0.1`
* `X-ProxyUser-Ip: 127.0.0.1`
* `Via: 1.0 fred, 1.1 127.0.0.1`
* `Connection: close, X-Forwarded-For` (Comprobar cabeceras hop-by-hop)
Reescribir **ubicación**:
* `X-Original-URL: /admin/console`
* `X-Rewrite-URL: /admin/console`
## Cabeceras hop-by-hop
Una cabecera hop-by-hop es una cabecera diseñada para ser procesada y consumida por el proxy que maneja actualmente la solicitud, en lugar de una cabecera de extremo a extremo.
* `Connection: close, X-Forwarded-For`
{% content-ref url="../../pentesting-web/abusing-hop-by-hop-headers.md" %}
[abusing-hop-by-hop-headers.md](../../pentesting-web/abusing-hop-by-hop-headers.md)
{% endcontent-ref %}
## HTTP Request Smuggling
* `Content-Length: 30`
* `Transfer-Encoding: chunked`
{% content-ref url="../../pentesting-web/http-request-smuggling/" %}
[http-request-smuggling](../../pentesting-web/http-request-smuggling/)
{% endcontent-ref %}
## Cabeceras de caché
**Cabeceras de caché del servidor**:
* **`X-Cache`** en la respuesta puede tener el valor **`miss`** cuando la solicitud no se ha almacenado en caché y el valor **`hit`** cuando está en caché.
* **`Cache-Control`** indica si un recurso se está almacenando en caché y cuándo será la próxima vez que se almacene en caché: `Cache-Control: public, max-age=1800`
* **`Vary`** se utiliza a menudo en la respuesta para **indicar cabeceras adicionales** que se tratan como **parte de la clave de caché** aunque normalmente no lo sean.
* **`Age`** define los tiempos en segundos que el objeto ha estado en la caché del proxy.
* **`Server-Timing: cdn-cache; desc=HIT`** también indica que un recurso se almacenó en caché.
{% content-ref url="../../pentesting-web/cache-deception.md" %}
[cache-deception.md](../../pentesting-web/cache-deception.md)
{% endcontent-ref %}
**Cabeceras de caché local**:
* `Clear-Site-Data`: Cabecera para indicar la caché que debe eliminarse: `Clear-Site-Data: "cache", "cookies"`
* `Expires`: Contiene la fecha/hora en que la respuesta debe caducar: `Expires: Wed, 21 Oct 2015 07:28:00
```http
Content-Security-Policy: require-trusted-types-for 'script'
```
```javascript
// Feature detection
if (window.trustedTypes && trustedTypes.createPolicy) {
// Name and create a policy
const policy = trustedTypes.createPolicy('escapePolicy', {
createHTML: str => {
return str.replace(/\/g, '>');
}
});
}
```
```javascript
// Assignment of raw strings is blocked by Trusted Types.
el.innerHTML = 'some string'; // This throws an exception.
// Assignment of Trusted Types is accepted safely.
const escaped = policy.createHTML('');
el.innerHTML = escaped; // '<img src=x onerror=alert(1)>'
```
### X-Content-Type-Options
Cuando se sirve un documento HTML malicioso desde su dominio (por ejemplo, si una imagen cargada en un servicio de fotos contiene marcas HTML válidas), algunos navegadores lo tratarán como un documento activo y permitirán que se ejecuten scripts en el contexto de la aplicación, lo que lleva a un [bug de cross-site scripting](https://www.google.com/about/appsecurity/learning/xss/).
`X-Content-Type-Options: nosniff` lo evita instruyendo al navegador que el [tipo MIME](https://mimesniff.spec.whatwg.org/#introduction) establecido en el encabezado `Content-Type` para una respuesta determinada es correcto. Se recomienda este encabezado para **todos sus recursos**.
```http
X-Content-Type-Options: nosniff
```
### X-Frame-Options
Si un sitio web malintencionado puede incrustar su sitio como un iframe, esto puede permitir que los atacantes invoquen acciones no deseadas por el usuario con [clickjacking](https://portswigger.net/web-security/clickjacking). Además, en algunos casos, los ataques de tipo [Spectre](https://en.wikipedia.org/wiki/Spectre\_\(security\_vulnerability\)) dan a los sitios web malintencionados la oportunidad de conocer el contenido de un documento incrustado.
`X-Frame-Options` indica si un navegador debe permitir o no renderizar una página en un ``, `