14 KiB
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!
- Découvrez The PEASS Family, notre collection exclusive de NFTs
- Obtenez le swag officiel PEASS & HackTricks
- Rejoignez le 💬 groupe Discord ou le groupe telegram ou suivez moi sur Twitter 🐦@carlospolopm.
- Partagez vos astuces de piratage en soumettant des PR au repo hacktricks et au repo hacktricks-cloud.
Listes de mots et outils
- https://github.com/danielmiessler/SecLists/tree/master/Miscellaneous/web/http-request-headers
- 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 {% 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 valeurmiss
lorsque la requête n'a pas été mise en cache et la valeurhit
lorsqu'elle est mise en cacheCache-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, '<').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
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 🎥
- 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 !
- Découvrez The PEASS Family, notre collection exclusive de NFTs
- Obtenez le swag officiel PEASS & HackTricks
- Rejoignez le 💬 groupe Discord ou le groupe telegram ou suivez moi sur Twitter 🐦@carlospolopm.
- Partagez vos astuces de piratage en soumettant des PR au repo hacktricks et au repo hacktricks-cloud.