Cet article est un article miroir de traduction automatique, veuillez cliquer ici pour accéder à l’article original.

Vue: 5685|Répondre: 2

[Source] ASP.NET Core (20) Empêcher les attaques de redirection ouverte

[Copié le lien]
Publié sur 06/06/2023 21:55:38 | | | |
Exigences : J’ai récemment lu le document ASP.NET Core de Microsoft « Prévenir les attaques de redirection ouverte dans ASP.NET Core », ce qui signifie en grosLes développeurs doivent prêter attention au chemin du site local lorsqu’ils passent à l’adresse de rappel afin d’éviter que certaines personnes ne falsifient malicieusement l’adresse de rappel pour des attaques de phishing。 Étudiez le code et préparez-vous à le porter sur le projet ASP.NET MVC.

Je me souviens qu’un grand fabricant avait déjà eu cette vulnérabilité, et certaines personnes l’utilisaient pour drainer le trafic de QQ et WeChat, comme suit :



Exploitant cette vulnérabilité, certains outils de discussion n’ont pas pu empêcher les utilisateurs de cliquer sur des liens pour accéder à un contenu malveillant de sites web en raison de leur confiance dans les grands domaines de l’entreprise.

Qu’est-ce qu’une attaque de redirection ouverte ?

Les applications web redirigent fréquemment les utilisateurs vers des pages de connexion lorsqu’ils accèdent à des ressources nécessitant une authentification. Les redirections incluent généralement un paramètre de requête returnUrl afin que les utilisateurs puissent revenir à l’URL initialement demandée après une connexion réussie. Après l’authentification, l’utilisateur est redirigé vers l’URL qu’il a initialement demandée.

Exemple d’attaque

Un utilisateur malveillant peut développer une attaque conçue pour donner à un utilisateur malveillant accès aux identifiants ou aux informations sensibles d’un utilisateur. Pour lancer une attaque, un utilisateur malveillant tromperait l’utilisateur en lui faisant cliquer sur un lien vers la page d’atterrissage de votre site et ajouterait la valeur de la chaîne de requête returnUrl à cette URL. afin decontoso.comPar exemple, l’application est danshttp://contoso.com/Account/LogOn?returnUrl=/Home/AboutContient une page d’atterrissage. L’attaque suit les étapes suivantes :

  • L’utilisateur clique sur un lien malveillant vershttp://contoso.com/Account/LogOn?returnUrl=http://contoso1.com/Account/LogOn(La deuxième URL est "contoso1.com« , au lieu de »contoso.com”) 。
  • L’utilisateur se connecte avec succès.
  • L’utilisateur est redirigé vers le sitehttp://contoso1.com/Account/LogOn(Un site malveillant qui ressemble exactement au vrai).
  • L’utilisateur se reconnecte (en fournissant des identifiants au site malveillant) et est redirigé vers le site réel.
  • Les utilisateurs peuvent penser que leur première tentative de connexion a échoué et que la seconde a réussi.Il est probable que les utilisateurs ne savent toujours pas que leurs identifiants ont été compromis




En plus des pages d’atterrissage, certains sites proposent des pages de redirection ou des points de terminaison. Disons que votre application a une page qui inclut une redirection ouverte, /Home/Redirect. Par exemple, un attaquant pourrait créer un message dans un e-mail[yoursite]/Home/Redirect ?url=http ://phishingsite.com/Home/Loginlien. Les utilisateurs réguliers verront que l’URL commence par le nom de votre site. Par confiance, ils cliquent sur le lien. Ouvrez les redirections puis envoie les utilisateurs vers des sites de phishing qui ressemblent aux vôtres, et les utilisateurs peuvent se connecter à des sites qu’ils pensent être les vôtres.

Prévenir les attaques de redirection ouverte

Lors du développement d’applications web, toutes les données fournies par l’utilisateur sont considérées comme peu fiables. Si votre application a la capacité de rediriger les utilisateurs en fonction du contenu des URL, assurez-vous que ces redirections ne soient effectuées que localement dans votre application (ou redirigez vers des URL connues, pas vers celles fournies dans la chaîne de requêtes).

LocalRedirect

En utilisant la méthode d’aide Controller dans la classe de base LocalRedirect :

Si une URL non locale est spécifiée, LocalRedirect lance une exception. Sinon, il se comporte de la même manière que la méthode Redirect. Les informations sur les exceptions sont les suivantes :

InvalidOperationException: The supplied URL is not local. A URL with an absolute path is considered local if it does not have a host/authority part. URLs using virtual paths ('~/') are also local.
Le code source est le suivant :



Processus d’exécution : LocalRedirect -> LocalRedirectResult -> IActionResultExecutor<LocalRedirectResult> -> LocalRedirectResultExecutor -> UrlHelper -> IsLocalUrl -> CheckIsLocalUrl, et au final, IsLocalUrl sera appelé pour juger (UrlHelperFactory implémente par défaut l’interface IUrlHelperFactory. )。

Adresse du code source :La connexion hyperlientérée est visible.

IsLocalUrl

IsLocalUrl avant de rediriger, testez l’URL avec cette méthode :

Le code est le suivant :

Le code de test est le suivant :



Si vous êtes autorisé à accéder à d’autres sites de noms de domaine, vous pouvez implémenter l’interface IUrlHelperFactory et modifier IServiceCollection pour remplacer la classe d’implémentation par défaut au lancement du programme.

Référence:La connexion hyperlientérée est visible.

(Fin)





Précédent:Docker construit des images sur des systèmes Windows
Prochain:[Tourner] (MSSQL) Base de données SQL Server int et guid pour la comparaison des clés primaires
 Propriétaire| Publié sur 06/06/2023 21:57:12 |
ASP.NET Core (dix-neuf) utilise BackgroundService pour exécuter des tâches en arrière-plan
https://www.itsvse.com/thread-10591-1-1.html

ASP.NET Core (18) Personnaliser un cache de sortie OutputCache simple
https://www.itsvse.com/thread-10583-1-1.html

ASP.NET Core (17) intègre l’analyse de performance des applications MiniProfile
https://www.itsvse.com/thread-10571-1-1.html

ASP.NET Core (16) Dépendant de l’injection de services d’enregistrement dynamiques
https://www.itsvse.com/thread-10560-1-1.html

ASP.NET Core (XV) utilise HttpClient pour envoyer des requêtes HTTP
https://www.itsvse.com/thread-10311-1-1.html

ASP.NET Core (quatorze) est basé sur le captcha d’image SkiaSharp
https://www.itsvse.com/thread-10287-1-1.html

ASP.NET Core (XIII) pour déterminer s’il s’agit d’une requête Ajax ou non
https://www.itsvse.com/thread-10284-1-1.html

ASP.NET Core (douze) front-end JS, regroupement CSS et compression
https://www.itsvse.com/thread-10282-1-1.html

ASP.NET route de terminaison Core (XI) ajoute un middleware pour afficher tous les services DI
https://www.itsvse.com/thread-10269-1-1.html

ASP.NET Explication détaillée des priorités de configuration dans Core(10).
https://www.itsvse.com/thread-10265-1-1.html

ASP.NET Explication détaillée du middleware Middleware de Core (9).
https://www.itsvse.com/thread-9647-1-1.html

ASP.NET piège des paramètres par défaut de l’interface Swagger dans Core(8).
https://www.itsvse.com/thread-9640-1-1.html

ASP.NET Core (7) Analyse approfondie du code source du framework
https://www.itsvse.com/thread-9601-1-1.html

ASP.NET DI Core (VI) obtient manuellement la méthode d’injection d’objets
https://www.itsvse.com/thread-9595-1-1.html

ASP.NET Core (cinq) est basé sur les transactions distribuées CAP
https://www.itsvse.com/thread-9593-1-1.html

ASP.NET Validation unifiée du modèle ModelState filtre Core(4)
https://www.itsvse.com/thread-9589-1-1.html

ASP.NET Core (iii) Créer dynamiquement des instances à l’aide d’ActivatorUtilities
https://www.itsvse.com/thread-9488-1-1.html

ASP.NET Core (2) Redémarrer l’application par code
https://www.itsvse.com/thread-9480-1-1.html

ASP.NET Core (1) utilise la mise en cache Redis
https://www.itsvse.com/thread-9393-1-1.html
 Propriétaire| Publié sur 06/06/2023 22:01:21 |
La méthode IsLocalUrl est portée vers le framework .NET comme suit :

Démenti:
Tous les logiciels, supports de programmation ou articles publiés par Code Farmer Network sont uniquement destinés à l’apprentissage et à la recherche ; Le contenu ci-dessus ne doit pas être utilisé à des fins commerciales ou illégales, sinon les utilisateurs assumeront toutes les conséquences. Les informations sur ce site proviennent d’Internet, et les litiges de droits d’auteur n’ont rien à voir avec ce site. Vous devez supprimer complètement le contenu ci-dessus de votre ordinateur dans les 24 heures suivant le téléchargement. Si vous aimez le programme, merci de soutenir un logiciel authentique, d’acheter l’immatriculation et d’obtenir de meilleurs services authentiques. En cas d’infraction, veuillez nous contacter par e-mail.

Mail To:help@itsvse.com