13 KiB
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!
- Descubre The PEASS Family, nuestra colección exclusiva de NFTs
- Obtén el swag oficial de PEASS y HackTricks
- Únete al 💬 grupo de Discord o al grupo de telegram o sígueme en Twitter 🐦@carlospolopm.
- Comparte tus trucos de hacking enviando PRs al repositorio de hacktricks y al repositorio de hacktricks-cloud.
Listas de palabras y herramientas
- https://github.com/danielmiessler/SecLists/tree/master/Miscellaneous/web/http-request-headers
- 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 {% endcontent-ref %}
HTTP Request Smuggling
Content-Length: 30
Transfer-Encoding: chunked
{% content-ref url="../../pentesting-web/http-request-smuggling/" %} http-request-smuggling {% endcontent-ref %}
Cabeceras de caché
Cabeceras de caché del servidor:
X-Cache
en la respuesta puede tener el valormiss
cuando la solicitud no se ha almacenado en caché y el valorhit
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 {% 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
Content-Security-Policy: require-trusted-types-for 'script'
// Feature detection
if (window.trustedTypes && trustedTypes.createPolicy) {
// Name and create a policy
const policy = trustedTypes.createPolicy('escapePolicy', {
createHTML: str => {
return str.replace(/\</g, '<').replace(/>/g, '>');
}
});
}
// 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('<img src=x onerror=alert(1)>');
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.
X-Content-Type-Options: nosniff
lo evita instruyendo al navegador que el tipo MIME establecido en el encabezado Content-Type
para una respuesta determinada es correcto. Se recomienda este encabezado para todos sus recursos.
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. Además, en algunos casos, los ataques de tipo Spectre 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 <frame>
, <iframe>
, <embed>
o <object>
. Se recomienda que todos los documentos envíen esta cabecera para indicar si permiten ser incrustados por otros documentos.
Si necesita un control más granular, como permitir solo un origen específico para incrustar el documento, use la directiva frame-ancestors de CSP.
X-Frame-Options: DENY
Política de Recursos de Origen Cruzado (CORP)
Un atacante puede incrustar recursos de otro origen, por ejemplo, de su sitio, para obtener información sobre ellos explotando filtraciones entre sitios basadas en la web.
Cross-Origin-Resource-Policy
mitiga este riesgo indicando el conjunto de sitios web desde los que se puede cargar. El encabezado toma uno de tres valores: same-origin
, same-site
y cross-origin
. Se recomienda que todos los recursos envíen este encabezado para indicar si permiten ser cargados por otros sitios web.
Cross-Origin-Resource-Policy: same-origin
Política de Recursos de Origen Cruzado (CORB)
Ayuda a mitigar la amenaza de ataques de canal lateral (incluyendo Spectre). Está diseñado para evitar que el navegador entregue ciertas respuestas de red de origen cruzado a una página web, cuando podrían contener información sensible y no son necesarias para las características web existentes.
De la misma manera, también ayuda a mitigar las vulnerabilidades de Inclusión de Script de Sitio Cruzado (XSSI).
Por ejemplo, bloqueará una respuesta de texto/html de origen cruzado solicitada desde una etiqueta <script> o <img>, reemplazándola por una respuesta vacía en su lugar. Esta es una parte importante de las protecciones incluidas con Site Isolation.
Política de Apertura de Origen Cruzado (COOP)
El sitio web de un atacante puede abrir otro sitio en una ventana emergente para obtener información sobre él explotando filtraciones de sitio cruzado basadas en la web. En algunos casos, esto también puede permitir la explotación de ataques de canal lateral basados en Spectre.
La cabecera Cross-Origin-Opener-Policy
proporciona una forma para que un documento se aísle de las ventanas de origen cruzado abiertas a través de window.open()
o un enlace con target="_blank"
sin rel="noopener"
. Como resultado, cualquier abridor de origen cruzado del documento no tendrá referencia a él y no podrá interactuar con él.
Cross-Origin-Opener-Policy: same-origin-allow-popups
Compartición de recursos de origen cruzado (CORS)
A diferencia de otros elementos en este artículo, la Compartición de recursos de origen cruzado (CORS) no es una cabecera, sino un mecanismo del navegador que solicita y permite el acceso a recursos de origen cruzado.
Por defecto, los navegadores aplican la política de mismo origen para evitar que una página web acceda a recursos de origen cruzado. Por ejemplo, cuando se carga una imagen de origen cruzado, aunque se muestre visualmente en la página web, el JavaScript de la página no tiene acceso a los datos de la imagen. El proveedor de recursos puede relajar las restricciones y permitir que otros sitios web lean el recurso optando por CORS.
Access-Control-Allow-Origin: https://example.com
Access-Control-Allow-Credentials: true
Política de inserción de origen cruzado (COEP)
Para reducir la capacidad de los ataques basados en Spectre para robar recursos de origen cruzado, se desactivan por defecto características como SharedArrayBuffer
o performance.measureUserAgentSpecificMemory()
.
Cross-Origin-Embedder-Policy: require-corp
impide que los documentos y trabajadores carguen recursos de origen cruzado, como imágenes, scripts, hojas de estilo, iframes y otros, a menos que estos recursos opten explícitamente por ser cargados a través de encabezados CORS o CORP. COEP se puede combinar con Cross-Origin-Opener-Policy
para optar por un documento en el aislamiento de origen cruzado.
Use Cross-Origin-Embedder-Policy: require-corp
cuando desee habilitar el aislamiento de origen cruzado para su documento.
Cross-Origin-Embedder-Policy: require-corp
HTTP Strict Transport Security (HSTS)
La comunicación a través de una conexión HTTP no cifrada hace que los datos transferidos sean accesibles a los fisgones de nivel de red.
La cabecera Strict-Transport-Security
informa al navegador que nunca debe cargar el sitio utilizando HTTP y que en su lugar debe utilizar HTTPS. Una vez establecida, el navegador utilizará HTTPS en lugar de HTTP para acceder al dominio sin una redirección durante un período de tiempo definido en la cabecera.
Strict-Transport-Security: max-age=3153600
Recursos
☁️ 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!
- Descubre The PEASS Family, nuestra colección exclusiva de NFTs
- Obtén el swag oficial de PEASS y HackTricks
- Únete al 💬 grupo de Discord o al grupo de telegram o sígueme en Twitter 🐦@carlospolopm.
- Comparte tus trucos de hacking enviando PR al repositorio de hacktricks y al repositorio de hacktricks-cloud.