Dit artikel is een spiegelartikel van machinevertaling, klik hier om naar het oorspronkelijke artikel te gaan.

Bekijken: 5685|Antwoord: 2

[Bron] ASP.NET Core (20) Voorkom open omleidingsaanvallen

[Link kopiëren]
Geplaatst op 06-06-2023 21:55:38 | | | |
Vereisten: Ik heb onlangs Microsofts ASP.NET Core-document "Preventing Open Redirect Attacks in ASP.NET Core" gelezen, wat ruwweg betekentOntwikkelaars moeten letten op het pad van de lokale site bij het springen naar het callback-adres om te voorkomen dat sommige mensen het callback-adres kwaadwillig vervalsen voor phishing-aanvallen。 Bestudeer de code en bereid je voor om deze te porten naar het ASP.NET MVC-project.

Ik herinner me dat een grote fabrikant deze kwetsbaarheid eerder had, en sommige mensen gebruikten het om verkeer van QQ en WeChat af te voeren, als volgt:



Door gebruik te maken van deze kwetsbaarheid konden sommige chattools gebruikers niet verhinderen op links te klikken om toegang te krijgen tot kwaadaardige website-inhoud vanwege hun vertrouwen in grote bedrijfsdomeinen.

Wat is een open omleidingsaanval?

Webapplicaties leiden gebruikers vaak door naar inlogpagina's wanneer ze toegang krijgen tot bronnen die authenticatie vereisen. Redirects bevatten doorgaans een returnUrl-querystringparameter zodat gebruikers na een succesvolle login kunnen terugkeren naar de oorspronkelijk gevraagde URL. Nadat de gebruiker zich heeft geauthenticeerd, wordt hij doorgestuurd naar de URL die hij oorspronkelijk heeft gevraagd.

Voorbeeld van een aanval

Een kwaadaardige gebruiker kan een aanval ontwikkelen die bedoeld is om een kwaadaardige gebruiker toegang te geven tot de inloggegevens of gevoelige informatie van een gebruikers. Om een aanval te starten, zou een kwaadaardige gebruiker de gebruiker misleiden om op een link naar de landingspagina van je site te klikken en de returnUrl-querystring aan die URL toe te voegen. omcontoso.combijvoorbeeld, de app is inhttp://contoso.com/Account/LogOn?returnUrl=/Home/AboutBevat een landingspagina. De aanval volgt deze stappen:

  • De gebruiker klikt op een kwaadaardige link omhttp://contoso.com/Account/LogOn?returnUrl=http://contoso1.com/Account/LogOn(De tweede URL is "contoso1.com", in plaats van "contoso.com”) 。
  • De gebruiker logt succesvol in.
  • De gebruiker wordt doorgestuurd naar de sitehttp://contoso1.com/Account/LogOn(Een kwaadaardige site die er precies uitziet als de echte).
  • De gebruiker logt opnieuw in (geeft inloggegevens aan de kwaadaardige site) en wordt teruggestuurd naar de echte site.
  • Gebruikers denken misschien dat hun eerste inlogpoging mislukte en de tweede poging slaagde.Het is waarschijnlijk dat gebruikers nog steeds niet weten dat hun inloggegevens zijn gecompromitteerd




Naast landingspagina's bieden sommige sites ook doorverwijzingspagina's of eindpunten. Stel dat je app een pagina heeft met een open doorleiding, /Home/Redirect. Een aanvaller kan bijvoorbeeld een punt aanmaken in een e-mail[yoursite]/Home/Redirect?url=http://phishingsite.com/Home/Loginverbinden. Gewone gebruikers zullen zien dat de URL begint met de naam van je site. Uit vertrouwen klikken ze op de link. Open redirects sturen vervolgens gebruikers naar phishingsites die er hetzelfde uitzien als die van jou, en gebruikers kunnen inloggen op sites waarvan ze denken dat ze van jou zijn.

Open omleidingsaanvallen voorkomen

Bij het ontwikkelen van webapplicaties wordt alle door gebruikers verstrekte data als onbetrouwbaar beschouwd. Als je app gebruikers kan doorsturen op basis van URL-inhoud, zorg er dan voor dat zulke redirects alleen lokaal in je app worden uitgevoerd (of doorverwijzen naar bekende URL's, niet naar URL's die in de querystring worden vermeld).

LocalRedirect

Gebruik van de Controller helper-methode in de LocalRedirect-basisklasse:

Als een niet-lokale URL wordt opgegeven, gooit LocalRedirect een uitzondering. Verder gedraagt het zich hetzelfde als de Redirect-methode. De uitzonderingsinformatie is als volgt:

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.
De broncode is als volgt:



Uitvoeringsproces: LocalRedirect -> LocalRedirectResult -> IActionResultExecutor<LocalRedirectResult> -> LocalRedirectResultExecutor -> UrlHelper -> IsLocalUrl -> CheckIsLocalUrl, en uiteindelijk wordt IsLocalUrl aangeroepen om te jureren (UrlHelperFactory implementeert standaard de IUrlHelperFactory-interface). )。

Broncode-adres:De hyperlink-login is zichtbaar.

IsLocalUrl

IsLocalUrl test voordat je de URL omleidt met deze methode:

De code is als volgt:

De testcode is als volgt:



Als je naar andere domeinnaamsites mag springen, kun je de IUrlHelperFactory-interface implementeren en IServiceCollection aanpassen om de standaard implementatieklasse te vervangen wanneer het programma start.

Referentie:De hyperlink-login is zichtbaar.

(Einde)





Vorig:Docker bouwt images bovenop Windows-systemen
Volgend:[Turn] (MSSQL) SQL Server-database-int en guid voor primaire sleutelvergelijking
 Huisbaas| Geplaatst op 06-06-2023 21:57:12 |
ASP.NET Core (negentien) gebruikt BackgroundService om achtergrondtaken uit te voeren
https://www.itsvse.com/thread-10591-1-1.html

ASP.NET Core (18) Pas een eenvoudige OutputCache outputcache aan
https://www.itsvse.com/thread-10583-1-1.html

ASP.NET Core (17) integreert MiniProfile applicatieprestatie-analyse
https://www.itsvse.com/thread-10571-1-1.html

ASP.NET Core (16) Afhankelijk van injectie van dynamische registratiediensten
https://www.itsvse.com/thread-10560-1-1.html

ASP.NET Core (XV) gebruikt HttpClient om HTTP-verzoeken te verzenden
https://www.itsvse.com/thread-10311-1-1.html

ASP.NET Core (veertien) is gebaseerd op de SkiaSharp-afbeelding captcha
https://www.itsvse.com/thread-10287-1-1.html

ASP.NET Core (XIII) om te bepalen of het een Ajax-verzoek is of niet
https://www.itsvse.com/thread-10284-1-1.html

ASP.NET Core (twaalf) front-end JS, CSS-bundling en compressie
https://www.itsvse.com/thread-10282-1-1.html

ASP.NET Core (XI) eindpuntroute voegt middleware toe om alle DI-diensten weer te geven
https://www.itsvse.com/thread-10269-1-1.html

ASP.NET Gedetailleerde uitleg van configuratieprioriteiten in Core(10).
https://www.itsvse.com/thread-10265-1-1.html

ASP.NET Gedetailleerde uitleg van de middleware middleware van Core (9).
https://www.itsvse.com/thread-9647-1-1.html

ASP.NET put van de standaardparameters van de Swagger UI in Core(8).
https://www.itsvse.com/thread-9640-1-1.html

ASP.NET Kern (7) Diepgaande analyse van de broncode van het framework
https://www.itsvse.com/thread-9601-1-1.html

ASP.NET Core (VI) DI verkrijgt handmatig de methode om objecten te injecteren
https://www.itsvse.com/thread-9595-1-1.html

ASP.NET Core (vijf) is gebaseerd op CAP-gedistribueerde transacties
https://www.itsvse.com/thread-9593-1-1.html

ASP.NET Core(4)-filter uniforme ModelState-modelvalidatie
https://www.itsvse.com/thread-9589-1-1.html

ASP.NET Core (iii) Maakt dynamisch instanties aan met behulp van ActivatorUtilities
https://www.itsvse.com/thread-9488-1-1.html

ASP.NET Core (2) Herstart de applicatie via code
https://www.itsvse.com/thread-9480-1-1.html

ASP.NET Core (1) gebruikt Redis-caching
https://www.itsvse.com/thread-9393-1-1.html
 Huisbaas| Geplaatst op 06-06-2023 22:01:21 |
De IsLocalUrl-methode wordt als volgt geporteerd naar het .NET-framework:

Disclaimer:
Alle software, programmeermaterialen of artikelen die door Code Farmer Network worden gepubliceerd, zijn uitsluitend bedoeld voor leer- en onderzoeksdoeleinden; De bovenstaande inhoud mag niet worden gebruikt voor commerciële of illegale doeleinden, anders dragen gebruikers alle gevolgen. De informatie op deze site komt van het internet, en auteursrechtconflicten hebben niets met deze site te maken. Je moet bovenstaande inhoud volledig van je computer verwijderen binnen 24 uur na het downloaden. Als je het programma leuk vindt, steun dan de echte software, koop registratie en krijg betere echte diensten. Als er sprake is van een inbreuk, neem dan contact met ons op via e-mail.

Mail To:help@itsvse.com