hacktricks/network-services-pentesting/pentesting-web/special-http-headers.md
2023-06-03 13:10:46 +00:00

14 KiB

En-têtes HTTP spéciaux

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥

Listes de mots et outils

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 {% endcontent-ref %}

HTTP Request Smuggling

  • Content-Length: 30
  • Transfer-Encoding: chunked

{% content-ref url="../../pentesting-web/http-request-smuggling/" %} 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 {% 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
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, '&lt;').replace(/>/g, '&gt;');
    }
  });
}
// 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;  // '&lt;img src=x onerror=alert(1)&gt;'

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.

X-Content-Type-Options: nosniff l'empêche en indiquant au navigateur que le type MIME 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.

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. De plus, dans certains cas, les attaques de type Spectre 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 <frame>, <iframe>, <embed> ou <object>. Tous les documents sont recommandés d'envoyer cet en-tête pour indiquer s'ils autorisent leur intégration par d'autres documents.

Si vous avez besoin d'un contrôle plus granulaire, tel que permettre uniquement à une origine spécifique d'intégrer le document, utilisez la directive CSP frame-ancestors.

X-Frame-Options: DENY

Politique de ressources entre origines (CORP)

Un attaquant peut intégrer des ressources provenant d'une autre origine, par exemple de votre site, pour en apprendre davantage sur elles en exploitant des fuites inter-sites basées sur le web (cross-site leaks).

Cross-Origin-Resource-Policy atténue ce risque en indiquant l'ensemble de sites web à partir duquel il peut être chargé. L'en-tête prend l'une des trois valeurs suivantes : same-origin, same-site et cross-origin. Toutes les ressources sont recommandées d'envoyer cet en-tête pour indiquer si elles autorisent leur chargement par d'autres sites web.

Cross-Origin-Resource-Policy: same-origin

Politique de ressources inter-origines (CORB)

Elle aide à atténuer la menace des attaques de canal secondaire (y compris Spectre). Elle est conçue pour empêcher le navigateur de délivrer certaines réponses de réseau inter-origines à une page web, lorsqu'elles pourraient contenir des informations sensibles et ne sont pas nécessaires pour les fonctionnalités web existantes.
De la même manière, elle aide également à atténuer les vulnérabilités d'inclusion de script entre sites (XSSI).
Par exemple, elle bloquera une réponse text/html inter-origines demandée à partir d'une balise <script> ou <img>, la remplaçant par une réponse vide à la place. C'est une partie importante des protections incluses avec Site Isolation.

Politique d'ouverture inter-origines (COOP)

Le site d'un attaquant peut ouvrir un autre site dans une fenêtre contextuelle pour en apprendre des informations en exploitant des fuites inter-sites basées sur le web. Dans certains cas, cela peut également permettre l'exploitation d'attaques de canal secondaire basées sur Spectre.

L'en-tête Cross-Origin-Opener-Policy fournit un moyen à un document de s'isoler des fenêtres inter-origines ouvertes via window.open() ou un lien avec target="_blank" sans rel="noopener". En conséquence, tout ouvreur inter-origines du document n'aura aucune référence à celui-ci et ne pourra pas interagir avec lui.

Cross-Origin-Opener-Policy: same-origin-allow-popups

Partage des ressources entre origines multiples (CORS)

Contrairement aux autres éléments de cet article, le partage des ressources entre origines multiples (CORS) n'est pas un en-tête, mais un mécanisme de navigateur qui demande et permet l'accès à des ressources entre origines multiples.

Par défaut, les navigateurs appliquent la politique de même origine pour empêcher une page web d'accéder à des ressources entre origines multiples. Par exemple, lorsqu'une image entre origines multiples est chargée, même si elle est affichée sur la page web visuellement, le JavaScript sur la page n'a pas accès aux données de l'image. Le fournisseur de ressources peut assouplir les restrictions et permettre à d'autres sites web de lire la ressource en optant pour CORS.

Access-Control-Allow-Origin: https://example.com
Access-Control-Allow-Credentials: true

Politique d'intégration de l'origine croisée (COEP)

Pour réduire la capacité des attaques basées sur Spectre à voler des ressources d'origine croisée, des fonctionnalités telles que SharedArrayBuffer ou performance.measureUserAgentSpecificMemory() sont désactivées par défaut.

Cross-Origin-Embedder-Policy: require-corp empêche les documents et les travailleurs de charger des ressources d'origine croisée telles que des images, des scripts, des feuilles de style, des iframes et d'autres, à moins que ces ressources n'optent explicitement pour le chargement via des en-têtes CORS ou CORP. COEP peut être combiné avec Cross-Origin-Opener-Policy pour opter un document pour l'isolation d'origine croisée.

Utilisez Cross-Origin-Embedder-Policy: require-corp lorsque vous souhaitez activer l'isolation d'origine croisée pour votre document.

Cross-Origin-Embedder-Policy: require-corp

HTTP Strict Transport Security (HSTS)

La communication sur une connexion HTTP non chiffrée n'est pas cryptée, ce qui rend les données transférées accessibles aux espions du réseau.

L'en-tête Strict-Transport-Security informe le navigateur qu'il ne doit jamais charger le site en utilisant HTTP et qu'il doit plutôt utiliser HTTPS. Une fois qu'il est défini, le navigateur utilisera HTTPS au lieu de HTTP pour accéder au domaine sans redirection pendant une durée définie dans l'en-tête.

Strict-Transport-Security: max-age=3153600

Ressources

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥