# En-têtes HTTP spéciaux
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 * 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 [**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 PR au** [**repo hacktricks**](https://github.com/carlospolop/hacktricks) **et au** [**repo hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
## Listes de mots et outils * [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) ## En-têtes pour changer l'emplacement Réécrire **l'adresse IP source** : * `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` (Vérifiez les en-têtes hop-by-hop) Réécrire **l'emplacement** : * `X-Original-URL: /admin/console` * `X-Rewrite-URL: /admin/console` ## En-têtes hop-by-hop Un en-tête hop-by-hop est un en-tête conçu pour être traité et consommé par le proxy qui traite actuellement la requête, par opposition à un en-tête de bout en bout. * `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 %} ## En-têtes de cache **En-têtes de cache du serveur** : * **`X-Cache`** dans la réponse peut avoir la valeur **`miss`** lorsque la requête n'a pas été mise en cache et la valeur **`hit`** lorsqu'elle est mise en cache * **`Cache-Control`** indique si une ressource est mise en cache et quand la prochaine fois que la ressource sera mise en cache : `Cache-Control: public, max-age=1800` * **`Vary`** est souvent utilisé dans la réponse pour **indiquer des en-têtes supplémentaires** qui sont traités comme **partie de la clé de cache** même s'ils ne sont normalement pas clés. * **`Age`** définit les temps en secondes pendant lesquels l'objet a été dans le cache proxy. * **`Server-Timing: cdn-cache; desc=HIT`** indique également qu'une ressource a été mise en cache {% content-ref url="../../pentesting-web/cache-deception.md" %} [cache-deception.md](../../pentesting-web/cache-deception.md) {% endcontent-ref %} **En-têtes de cache local** : * `Clear-Site-Data`: En-tête pour indiquer le cache qui doit être supprimé : `Clear-Site-Data: "cache", "cookies"` * `Expires`: Contient la date/heure à laquelle la réponse doit expirer ```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 Lorsqu'un document HTML malveillant est servi depuis votre domaine (par exemple, si une image téléchargée sur un service de photos contient une balise HTML valide), certains navigateurs le traiteront comme un document actif et lui permettront d'exécuter des scripts dans le contexte de l'application, ce qui entraîne une faille de [cross-site scripting](https://www.google.com/about/appsecurity/learning/xss/). `X-Content-Type-Options: nosniff` l'empêche en indiquant au navigateur que le [type MIME](https://mimesniff.spec.whatwg.org/#introduction) défini dans l'en-tête `Content-Type` pour une réponse donnée est correct. Cette en-tête est recommandée pour **toutes vos ressources**. ```http X-Content-Type-Options: nosniff ``` ### X-Frame-Options Si un site Web malveillant peut intégrer votre site en tant qu'iframe, cela peut permettre aux attaquants d'invoquer des actions non intentionnelles de l'utilisateur avec [clickjacking](https://portswigger.net/web-security/clickjacking). De plus, dans certains cas, les attaques de type [Spectre](https://en.wikipedia.org/wiki/Spectre\_\(security\_vulnerability\)) donnent aux sites Web malveillants une chance d'apprendre le contenu d'un document intégré. `X-Frame-Options` indique si un navigateur doit être autorisé ou non à rendre une page dans un ``, `