23-02-2013, 15:21
NOTE: Det her er kun til uddannelsesmæssige formål alene. Der tages intet ansvar for forkert brug af dette.
Indholdsfortegnelse
1. Teori
CSRF(Coss-site request forgery) udtales oftest ”Sea-Surf”. Dette angreb består i, at der er en side som kan modtage nogle anmodninger fra en bruger. F.eks. søgefunktion, login, skifte kodeord, skifte navn. Hackeren kan her smede en falsk anmodning og videregive linket skjult i f.eks billeder til brugeren, og brugeren vil afgive disse anmodninger til siden uden selv at vide det, fordi siden blot benytter brugerens cookie til at autentificere at det er brugeren der kommer med forespørgslen. Hackeren kan med dette benytte sidens funktioner såsom skift kodeord, skift navn osv.
2. Finde sårbarheden
For at finde en sårbarhed skal du først finde et mål.
I dette eksempel vil vi finde en side hvor brugeren har mulighed for at skifte sit kodeord. Lad os sige at brugeren hedder ash.
Ash er medlem af denne fiktive side som hedder pokemontarget.com
På pokemontarget.com kan man have en profil.
Pokemontarget.com har også muligheden for at skifte sit kodeord.
For når man skal skifte det, beder den blot om det nye kodeord og så er der en ok knap. Denne form kunne også være til at skifte sit brugernavn eller meget andet.
Formen i dette eksempel ser sådan her ud:
Formen sender simpelt et kodeord til et php script der tjekker din cookie og ser om det er dig. Hvis det er, opdatere dit kodeord i databasen. Simple stuff!
Det første problem som du noterer, er at der ikke bliver medsendt noget unikt men alle blot kunne genskabe denne request.
Dit næste skridt ville så være at tjekke om siden holder øje med henviseren(referrer). Dette er den side du kom fra da du klikkede ind på linket. Dette kan du let tjekke ved blot at gå til www.google.dk og derefter afprøve anmodningen.
www.pokemontarget.com/changepassword.php?newpassword=1234
Her ville din referrer være www.google.dk, da du kom fra www.google.dk
Hvis dit kodeord skifter alligevel har du fundet en CSRF sårbarhed.
3. Udnyttelse af sårbarheden
For at udnytte denne CSRF sårbarhed som du lige har fundet skal du smede din egen anmodning, som navnet nok indikere. Dette vil sige at du først skal finde ud af hvordan denne anmodning ville se ud.
Og i almindelig format ville den se sådan her ud
www.pokemontarget.com/changepassword.php?newpassword=newpasswordhere
Men hvad nu hvis du lavede den om til:
www.pokemontarget.com/changepassword.php?newpassword=1234
og sendte dette til brugeren ash ?
Hvis ash åbnede det ville hans kodeord blive ændret til 1234. Det ville det fordi at siden benytter ash's cookie og tror at ash selv har klikket skift kodeord.
Du kan nu logge ind med hans brugernavn og hans nye kodeord. Dette kunne være mange andre ting man kunne. Poste ting på forums eller meget andet som har requests.
Selvfølgelig ville man ikke kunne sende www.pokemontarget.com/changepassword.php?newpassword=1234 til ash sådan der, da han hurtigt ville finde linket mistænksomt. Men der er mange muligheder for at gemme sit link. F.eks kan man gemme det i billeder eller ved at videreredigere til linket når de besøger din side.
Man kan også lave et HTML IMG element.
<img src=”www.pokemontarget.com/changepassword.php?newpassword=1234”>
Her ville ash browser forsøge at loade billedet og sende forespørgslen og hans kodeord ville blive skiftet.
Dette er et meget simpelt eksempel. cPanel havde engang nogle CSRF sårbarheder(Se mere i ekstra referencer) der, hvis de var udnyttet korrekt, kunne lede til at udføre vilkårlige kommandoer. Dette er blot for at understrege at dette er en meget alvorlig sårbarhed.
I kan altid prøve at kigge rundt på sider og se hvordan det fungererer. I kan også kigge på hvordan MyBB håndterer det og laver unikke anmodninger. Det er selvfølgelig også tilladt at kigge dette forum igennem, så længe alle fundne sårbarheder rapporteres til admin :)
4. Ekstra referencer
Indholdsfortegnelse
- Teori
- Finde sårbarheden
- Udnyttelse af sårbarheden
- Ekstra referencer
1. Teori
CSRF(Coss-site request forgery) udtales oftest ”Sea-Surf”. Dette angreb består i, at der er en side som kan modtage nogle anmodninger fra en bruger. F.eks. søgefunktion, login, skifte kodeord, skifte navn. Hackeren kan her smede en falsk anmodning og videregive linket skjult i f.eks billeder til brugeren, og brugeren vil afgive disse anmodninger til siden uden selv at vide det, fordi siden blot benytter brugerens cookie til at autentificere at det er brugeren der kommer med forespørgslen. Hackeren kan med dette benytte sidens funktioner såsom skift kodeord, skift navn osv.
2. Finde sårbarheden
For at finde en sårbarhed skal du først finde et mål.
I dette eksempel vil vi finde en side hvor brugeren har mulighed for at skifte sit kodeord. Lad os sige at brugeren hedder ash.
Ash er medlem af denne fiktive side som hedder pokemontarget.com
På pokemontarget.com kan man have en profil.
Pokemontarget.com har også muligheden for at skifte sit kodeord.
For når man skal skifte det, beder den blot om det nye kodeord og så er der en ok knap. Denne form kunne også være til at skifte sit brugernavn eller meget andet.
Formen i dette eksempel ser sådan her ud:
<form action=”changepassword.php” method=”get”>
<input type=”text” name=”newpassword” value=”Indtast dit nye kodeord”>
<input type=”submit” name=”submit” value=”change password”>
</form>
Denne kunne du have fundet på alle slags sider da sidens html er frit tilgængeligt og et lille højreklik med ”Vis kildekode” ville have afsløret dette.Formen sender simpelt et kodeord til et php script der tjekker din cookie og ser om det er dig. Hvis det er, opdatere dit kodeord i databasen. Simple stuff!
Det første problem som du noterer, er at der ikke bliver medsendt noget unikt men alle blot kunne genskabe denne request.
Dit næste skridt ville så være at tjekke om siden holder øje med henviseren(referrer). Dette er den side du kom fra da du klikkede ind på linket. Dette kan du let tjekke ved blot at gå til www.google.dk og derefter afprøve anmodningen.
www.pokemontarget.com/changepassword.php?newpassword=1234
Her ville din referrer være www.google.dk, da du kom fra www.google.dk
Hvis dit kodeord skifter alligevel har du fundet en CSRF sårbarhed.
3. Udnyttelse af sårbarheden
For at udnytte denne CSRF sårbarhed som du lige har fundet skal du smede din egen anmodning, som navnet nok indikere. Dette vil sige at du først skal finde ud af hvordan denne anmodning ville se ud.
Og i almindelig format ville den se sådan her ud
www.pokemontarget.com/changepassword.php?newpassword=newpasswordhere
Men hvad nu hvis du lavede den om til:
www.pokemontarget.com/changepassword.php?newpassword=1234
og sendte dette til brugeren ash ?
Hvis ash åbnede det ville hans kodeord blive ændret til 1234. Det ville det fordi at siden benytter ash's cookie og tror at ash selv har klikket skift kodeord.
Du kan nu logge ind med hans brugernavn og hans nye kodeord. Dette kunne være mange andre ting man kunne. Poste ting på forums eller meget andet som har requests.
Selvfølgelig ville man ikke kunne sende www.pokemontarget.com/changepassword.php?newpassword=1234 til ash sådan der, da han hurtigt ville finde linket mistænksomt. Men der er mange muligheder for at gemme sit link. F.eks kan man gemme det i billeder eller ved at videreredigere til linket når de besøger din side.
Man kan også lave et HTML IMG element.
<img src=”www.pokemontarget.com/changepassword.php?newpassword=1234”>
Her ville ash browser forsøge at loade billedet og sende forespørgslen og hans kodeord ville blive skiftet.
Dette er et meget simpelt eksempel. cPanel havde engang nogle CSRF sårbarheder(Se mere i ekstra referencer) der, hvis de var udnyttet korrekt, kunne lede til at udføre vilkårlige kommandoer. Dette er blot for at understrege at dette er en meget alvorlig sårbarhed.
I kan altid prøve at kigge rundt på sider og se hvordan det fungererer. I kan også kigge på hvordan MyBB håndterer det og laver unikke anmodninger. Det er selvfølgelig også tilladt at kigge dette forum igennem, så længe alle fundne sårbarheder rapporteres til admin :)
4. Ekstra referencer