web-dev-qa-db-fra.com

IIS Attaques d'en-tête d'hôte

Est IIS et ASP Vulnérable aux mêmes attaques d'en-tête d'hôte que nous avons vu sur Apache et Nginx? Spécifiquement les attaques utilisent l'en-tête HTTP d'hôte pour réinitialiser un mot de passe Ou mettre en œuvre une intoxication sur le cache Web. Ces attaques spécifiques utilisent les variables de serveur et d'hôte.

Toute idée ou aide est grandement appréciée.

3
Brian

L'en-tête "HÔTE" fait partie du protocole HTTP, les applications vulnérables sont vulnérables car elles insèrent la valeur de cet en-tête dans le code de l'application sans validation appropriée, cela signifie non seulement des applications hébergées sur Apache/NGinx peuvent être vulnérables. En bref, la réponse est oui, votre application pourrait être vulnérable, quel que soit le type de langage/serveur que vous utilisez. Évitez de tirer des informations hors de cet en-tête, car la manipulation du côté client est triviale.

2
Kotzu

Je suis d'accord avec Kotzu, j'aurais commenté, mais juste pour pouvoir poster une capture d'écran, je pose cela comme réponse.

Réponse courte:
[.____] Oui, les attaques d'en-tête d'hôte sont possibles sur IIS et pile ASP.NET.

Passage de réinitialisation du mot de passe:
[.____] Cela se produit si le code est mal écrit, sur le site Web lorsque l'utilisateur demande un lien pour réinitialiser le mot de passe, le site Web envoie un lien avec un jeton secret à l'adresse électronique de cet utilisateur.

Dites que le lien est http (s): // [véritable] /resetpassword.aspx?SomeGuid et GUID seraient une clé pour un enregistrement dans la base de données qui sait pour qui réinitialiser le mot de passe.

Mais si le code a été mal écrit pour créer ce lien, il utiliserait un protocole + Host Header + "/ResetPassword.aspx?" + guid,
[.
[.____] et l'attaquant aurait ce site là-bas et il pourrait obtenir les paramètres de la chaîne de requête et pouvoir réinitialiser le mot de passe pour le compte de l'utilisateur, à condition que l'utilisateur Cliquez en fait sur le lien du courrier électronique. Et généralement, ils font parce que l'email est vraiment envoyé par des véritables.

De nombreux composants logiciels populaires ont cette vulnérabilité.

Empoisonnement du cache:
[.____ Les caches sont maintenant un jour sensibilisé à l'hôte, donc avec l'en-tête d'hôte si quelqu'un essaie de poisons le cache, il restera séparé du cache de l'authentine.

Fondamentalement, tout en générant (rendu) HTML, dans le code si, à n'importe quel endroit, il existe un code médiocre où il génère HTML/JavaScript en fonction de l'hôte, il pourrait être vulnérable. À condition qu'il y ait une sorte de côté du serveur ou de la mise en cache de proxy du HTML rendu.

Disons que le code génère HTML comme - home puis en manipulant l'en-tête d'hôte, vous pouvez le rendre comme à la maison

Et cette page serait une partie du serveur mis en cache, et l'attaquant peut voler des biscuits de tous les utilisateurs que cette page mise en cache est servie.

Évidemment, l'attaquant utilisera pragma: No-cache pour supprimer d'abord la page véritablement mise en cache d'abord, puis positionner le cache avec la version manipulée d'en-tête d'hôte.

Mais comme je l'ai dit, dans asp.net et IIS Monde, je n'ai pas beaucoup vu l'empoisonnement avec une tête d'accueil, mais nous ne savons jamais que les gens écrivent du code médiocre tout le temps.

Comment pouvons-nous empêcher ceci:
[.____] Je pense que le moyen le plus simple (et l'une des meilleures pratiques) est d'avoir des paramètres de liaison appropriés dans votre IIS, même si vous hébergez un seul site Web avec votre IIS.

Vous pouvez même avoir plusieurs noms d'hôte autorisés pour un site Web.

IIS Website Binding

De cette façon, si quelqu'un change l'en-tête d'hôte, il n'atteint même pas votre site Web dans IIS.

2
Vishalgiri