Tämä artikkeli on konekäännöksen peiliartikkeli, klikkaa tästä siirtyäksesi alkuperäiseen artikkeliin.

Näkymä: 5685|Vastaus: 2

[Lähde] ASP.NET Core (20) Estä avoimet uudelleenohjaushyökkäykset

[Kopioi linkki]
Julkaistu 6.6.2023 21.55.38 | | | |
Vaatimukset: Luin äskettäin Microsoftin ASP.NET Core -dokumentin "Preventing Open Redirect Attacks in ASP.NET Core", joka tarkoittaa suunnilleenKehittäjien tulisi kiinnittää huomiota paikallisen sivuston reittiin siirtyessään callback-osoitteeseen, jotta jotkut eivät vahingossa väärentämästä callback-osoitetta tietojenkalastelua varten。 Opiskele koodi ja valmistaudu siirtämään se ASP.NET MVC-projektiin.

Muistan, että eräällä suurella valmistajalla oli tämä haavoittuvuus aiemmin, ja jotkut käyttivät sitä poistaakseen liikennettä QQ:sta ja WeChatista, kuten seuraava:



Hyödyntäen haavoittuvuutta jotkut chat-työkalut eivät pystyneet estämään käyttäjiä klikkaamasta linkkejä päästäkseen haitalliseen verkkosivuston sisältöön, koska he luottivat suurten yritysten verkkotunnuksiin.

Mikä on avoin uudelleenohjaushyökkäys?

Verkkosovellukset ohjaavat käyttäjät usein kirjautumissivuille, kun he käyttävät resursseja, jotka vaativat todennuksen. Uudelleenohjaukset sisältävät tyypillisesti returnUrl-kyselymerkkijonon parametrin, jotta käyttäjät voivat palata alkuperäiseen URL-osoitteeseen onnistuneen kirjautumisen jälkeen. Kun käyttäjä on todennut, hänet ohjataan alkuperäiseen URL-osoitteeseen.

Esimerkki hyökkäyksestä

Haitallinen käyttäjä voi kehittää hyökkäyksen, jonka tarkoituksena on antaa haitalliselle käyttäjälle pääsy käyttäjän tunnuksiin tai arkaluontoisiin tietoihin. Hyökkäyksen aloittamiseksi haitallinen käyttäjä huijaisi käyttäjän klikkaamaan linkkiä sivustosi laskeutumissivulle ja lisäämään returnUrl-kyselymerkkijonon arvon kyseiseen URL-osoitteeseen. jottacontoso.comesimerkiksi sovellus onhttp://contoso.com/Account/LogOn?returnUrl=/Home/AboutSisältää laskeutumissivun. Hyökkäys etenee seuraavia vaiheita:

  • Käyttäjä klikkaa haitallista linkkiähttp://contoso.com/Account/LogOn?returnUrl=http://contoso1.com/Account/LogOn(Toinen URL on "contoso1.com", sen sijaan "contoso.com”) 。
  • Käyttäjä kirjautuu onnistuneesti sisään.
  • Käyttäjä ohjataan sivustollehttp://contoso1.com/Account/LogOn(Haitallinen sivusto, joka näyttää täsmälleen oikealta).
  • Käyttäjä kirjautuu uudelleen sisään (antaen tunnistetiedot haitalliselle sivustolle) ja ohjataan takaisin oikealle sivustolle.
  • Käyttäjät saattavat ajatella, että heidän ensimmäinen kirjautumisyrityksensä epäonnistui ja toinen onnistui.On todennäköistä, että käyttäjät eivät vieläkään tiedä, että heidän tunnuksensa on vaarantunut.




Laskeutumissivujen lisäksi jotkut sivustot tarjoavat uudelleenohjaussivuja tai päätepisteitä. Oletetaan, että sovelluksessasi on sivu, jossa on avoin uudelleenohjaus, /Home/Redirect. Esimerkiksi hyökkääjä voi luoda pisteen sähköpostiin[yoursite]/Home/Redirect?url=http://phishingsite.com/Home/Loginlinkki. Tavalliset käyttäjät näkevät, että URL alkaa sivustosi nimellä. Luottamuksesta he klikkaavat linkkiä. Avoimet uudelleenohjaukset ohjaavat käyttäjät tietojenkalastelusivustoille, jotka näyttävät samalta kuin omasi, ja käyttäjät voivat kirjautua sivustoille, joita he luulevat olevan omiasi.

Estä avoimet uudelleenohjaushyökkäykset

Verkkosovelluksia kehitettäessä kaikki käyttäjän antamat tiedot käsitellään epäluotettavana. Jos sovelluksessasi on kyky ohjata käyttäjiä URL-sisällön perusteella, varmista, että tällaiset uudelleenohjaukset tehdään vain paikallisesti sovelluksessasi (tai ohjataan tunnetuihin URL-osoitteisiin, ei kyselymerkkijonossa mahdollisesti annettuihin URL-osoitteisiin).

LocalRedirect

Käyttämällä Controller-apumenetelmää LocalRedirect-perusluokassa:

Jos määritellään ei-paikallinen URL, LocalRedirect heittää poikkeuksen. Muuten se käyttäytyy samalla tavalla kuin Redirect-menetelmä. Poikkeustiedot ovat seuraavat:

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.
Lähdekoodi on seuraava:



Suoritusprosessi: LocalRedirect -> LocalRedirectResult -> IActionResultExecutor<LocalRedirectResult> -> LocalRedirectResultExecutor -> UrlHelper -> IsLocalUrl -> CheckIsLocalUrl, ja lopulta IsLocalUrl kutsutaan arvioimaan (UrlHelperFactory toteuttaa oletuksena IUrlHelperFactory-rajapinnan). )。

Lähdekoodin osoite:Hyperlinkin kirjautuminen on näkyvissä.

IsLocalUrl

IsLocalUrl ennen uudelleenohjausta testaa URL tällä menetelmällä:

Koodi on seuraava:

Testikoodi on seuraava:



Jos voit siirtyä muihin verkkotunnussivustoihin, voit toteuttaa IUrlHelperFactory-rajapinnan ja muokata IServiceCollectionia korvaamaan oletustoteutusluokan ohjelman käynnistyessä.

Viittaus:Hyperlinkin kirjautuminen on näkyvissä.

(Loppu)





Edellinen:Docker rakentaa kuvia Windows-järjestelmien päälle
Seuraava:[Turn] (MSSQL) SQL Server -tietokannan int ja guid ensisijaisen avaimen vertailuun
 Vuokraisäntä| Julkaistu 6.6.2023 21.57.12 |
ASP.NET Core (yhdeksäntoista) käyttää BackgroundServiceä taustatehtävien suorittamiseen
https://www.itsvse.com/thread-10591-1-1.html

ASP.NET Core (18) Räätälöi yksinkertainen OutputCache-ulostulovälimuisti
https://www.itsvse.com/thread-10583-1-1.html

ASP.NET Core (17) integroi MiniProfile-sovelluksen suorituskyvyn analyysin
https://www.itsvse.com/thread-10571-1-1.html

ASP.NET Core (16) Riippuvainen dynaamisten rekisteröintipalveluiden injektioinnista
https://www.itsvse.com/thread-10560-1-1.html

ASP.NET Core (XV) käyttää HTTP-pyyntöjen lähettämiseen HttpClientia
https://www.itsvse.com/thread-10311-1-1.html

ASP.NET Core (neljätoista) perustuu SkiaSharp-kuva-captchaan
https://www.itsvse.com/thread-10287-1-1.html

ASP.NET Core (XIII) selvittääkseen, onko kyseessä Ajaxin pyyntö vai ei
https://www.itsvse.com/thread-10284-1-1.html

ASP.NET Core (kaksitoista) etupään JS, CSS-paketointi ja pakkaus
https://www.itsvse.com/thread-10282-1-1.html

ASP.NET Core (XI) -päätepistereitti lisää middleware-ohjelmiston näyttämään kaikki DI-palvelut
https://www.itsvse.com/thread-10269-1-1.html

ASP.NET Yksityiskohtainen selitys konfiguraatioprioriteeteista Core(10):ssä.
https://www.itsvse.com/thread-10265-1-1.html

ASP.NET Yksityiskohtainen selitys Coren Middleware-middlewaresta (9).
https://www.itsvse.com/thread-9647-1-1.html

ASP.NET Swaggerin käyttöliittymän oletusparametrien pitti Core(8):ssa.
https://www.itsvse.com/thread-9640-1-1.html

ASP.NET Ydin (7) Perusteellinen analyysi kehyksen lähdekoodista
https://www.itsvse.com/thread-9601-1-1.html

ASP.NET Core (VI) DI saa manuaalisesti menetelmän objektien injektioon
https://www.itsvse.com/thread-9595-1-1.html

ASP.NET Core (viisi) perustuu CAP:n hajautettuihin transaktioihin
https://www.itsvse.com/thread-9593-1-1.html

ASP.NET Core(4) -suodatin yhdisti ModelState-mallin validoinnin
https://www.itsvse.com/thread-9589-1-1.html

ASP.NET Core (iii) Luo instansseja dynaamisesti ActivatorUtilitiesin avulla
https://www.itsvse.com/thread-9488-1-1.html

ASP.NET Ydin (2) Käynnistä sovellus uudelleen koodin mukaan
https://www.itsvse.com/thread-9480-1-1.html

ASP.NET Core (1) käyttää Redis-välimuistia
https://www.itsvse.com/thread-9393-1-1.html
 Vuokraisäntä| Julkaistu 6.6.2023 22.01.21 |
IsLocalUrl-menetelmä siirretään .NET-kehykseen seuraavasti:

Vastuuvapauslauseke:
Kaikki Code Farmer Networkin julkaisemat ohjelmistot, ohjelmamateriaalit tai artikkelit ovat tarkoitettu vain oppimis- ja tutkimustarkoituksiin; Yllä mainittua sisältöä ei saa käyttää kaupallisiin tai laittomiin tarkoituksiin, muuten käyttäjät joutuvat kantamaan kaikki seuraukset. Tämän sivuston tiedot ovat peräisin internetistä, eikä tekijänoikeuskiistat liity tähän sivustoon. Sinun tulee poistaa yllä oleva sisältö kokonaan tietokoneeltasi 24 tunnin kuluessa lataamisesta. Jos pidät ohjelmasta, tue aitoa ohjelmistoa, osta rekisteröityminen ja hanki parempia aitoja palveluita. Jos rikkomuksia ilmenee, ota meihin yhteyttä sähköpostitse.

Mail To:help@itsvse.com