XSS Guide For Begyndere - af SwiZz
|
04-05-2013, 20:28
|
|||
|
|||
XSS Guide For Begyndere - af SwiZz
Denne guide er lavet på baggrund af min viden inden for emnet. Der er rigtig meget som du stadig kan lære udenfor denne guide.
Jeg vil komme ind på det mest basale, og hvordan du bruger det i praksis. Denne guide er lavet for at lære om emnet, og bør ikke anvendes på andres bekostning. Jeg står ikke til ansvar for, hvad i vil bruge denne viden til. 1. Hvad er Cross-Site Scripthing Cross-Site Scripting, også mere normalt kaldet XSS, er en type angreb, som for det meste bruges mod web-applikationer. Selve angrebet består i at "Hackeren" injicere scripts ind i kilde koden på en hjemmesiden som slaver kan se, når de besøger linket. Det betyder samtidig at indholdet/dataen på hjemmesiden er afgørende for hvor meget du får ud af dit angreb mod slaven. Dette kommer jeg også mere ind på senere. 2. At finde en sårbarhed Når vi skal finde sårbarheder på en hjemmeside så er der 2 primære måder at gøre dette på. Den ene er URL injection, altså vi sætter et led på url addressen, så vi simpelthen kører scriptet igennem URL'en. Det andet er et input på selve hjemmesiden. Dette kan være en søgeboks. Et ekspempel ville være ind textbox ligesom denne: Metoden er at injicere et script via en af disse textbox. Et eksempel på URL injection ville være: Kode: http://www.eksempel.dk/index.php?id=<script>alert(1);</script> En måde at starte på, som jeg plejer at gøre det, så jeg ikke bare fumler i blinde, det er at skrive noget unikt. Dette kan være "hej123" eller noget andet, bare det er unikt. Derefter så gå ind under kildekoden på hjemmesiden(højreklik -> vis kildekode (sourcecode)), og derefter klik CTRL+F og så søg på dit unikke tekst stykke. Kode: <form name="XSS" action="#" method="GET"> Vi har nu fundet det sted hvor vores input bliver lagret midlertidigt. Vi prøver nu at sætte et <script> tag ind og ser hvad der sker. Kode: <form name="XSS" action="#" method="GET"> Det som egentlig sker, det er at hjemmesiden den ser vores tekst som kode, fordi vi netop sætter det i tags. Dette er hvad vi leder efter! En sårbarhed! 3. Udnyt/Exploit sårbarheden Nu har vi fundet vores sårbarhed. Det er jo nøglen til et XSS angreb. For at være sikker på at sårbarheden er der, så kan vi teste på en ufarlig måde ved at frembringe en besked box på hjemmesiden. Dette er et meget kendt trick, som bruges af langt de fleste der finder XSS. Der findes bedre og mere avanceret metoder, men nu er det blot for at i får forståelsen af det. Hvor du før fandt dit input, der skal du nu prøve at indsætte et script igen, og så bruge vektoren: Kode: <script>alert("hej123");</script> Når du har gjort dette, så burde du gerne se en tekst box komme frem, hvor der står "hej123" og du kan klikke ok. Hvis du ikke ser dette, så frygt ikke. Dette kan skyldes at din browser ikke tillader det. Jeg henviser til at bruge mozilla firefox, da det er nemt at teste XSS deri. Nå men for at komme tilbage til emnet. Hvis du kigger samme sted i kildekoden igen så burde det gerne se sådan her ud: Kode: [code]<form name="XSS" action="#" method="GET"> Det ses i kildekoden at vores script ikke er blevet filtreret. At det faktisk kører. Hvis disse forudsætninger jeg har beskrevet er opfyldt, så er hjemmesiden XSS sårbar. 4. Persistent XSS, og Non-persistent XSS Først må vi slå op i en overbog for at få betydningen. Oxfords ordbog beskriver persistent sådan her: Citer:2. continuing to exist or occur over a prolonged periodAltså noget som er vedvarende, og forbliver der. Og modsat er non-persistent noget som ikke er vedvarende, og som faktisk forsvinder igen. Disse 2 ting er meget godt at gave styr på. De eksempler jeg har gennemgået i denne tutorial er non-persistent, altså de er ikke vedvarende. Det er fordi de ligger i vores "infected" link. Du skal simpelthen besøge vores custom link, vi har skrevet ved hjælp af et input felt. Det er ikke den aller bedste metode kan i nok se. Derfor er det også vigtigt at vide noget om persistent xss. Hvordan får man noget til at blive på en hjemmeside? Vi kan tage et eksempel fra Arto.dk På arto har du en profiltekst. Jeg vil ikke komme ind på hvordan jeg fandt det, men jeg vil fortælle jer princippet. Ved at sætte mit script ind, og gemme min profiltekst, så er mit script lagret i den profil tekst. Derved vil alle der bare går ind på min profil, få executed mit script. Et andet eksempel der måske kan give jer en idé til hvor man kan finde persistent XSS er på Lectio.dk (Er blevet meldt og fixet.) Der findes et besked system, hvor du har mulighed for at bruge BBCode. Altså tags der gjorde teksten mere dynamisk. F.eks. kunne du sende links, og mask dem. Dette kunne gøres på følgende måde: Kode: [url=www.eksempel.dk]maske[/url] For at vende tilbage, så gjorde jeg det på denne måde: Kode: [url="><script>alert(1);</script>][/url] Med en cookie stealer, og så en besked til samtlige gymnasie elever, så ville jeg pludselig have cookies til rigtig mange profiler. Dette er da noget der kunne bruges? Jeg håber det har givet en forståelse for hvad non-persistent XSS og persistent XSS er. 5. Hvad hvis alt fejler? (Bypass filtrering) Ja så er du sq på den! Nej spøg til side. Så er det først XSS bliver avanceret. Nu skal vi til at bypass de filtrer som admin har lagt ud. Pain in the ass, I know, men vil du igennem så er denne del meget essentiel! Jeg vil gennemgå nogle få filter metoder, og måder at bypass på, men der er rigtig mange metoder så jeg tager nogle jeg syntes der er gode og kende, som også giver jeg en idé om hvad i selv kan gøre. 1. Bypass magic_quotes_gpc magic_quotes_gpc findes i PHP.ini fil og filterer alle citat tegn og '-citat tegn. Så vis dit script så sådan ud: Kode: <script>alert("hej");</script> Kode: <script>alert(/hej/);</script> Måden dette kan bypasses på er ved at kryptere din vektor. Så vi lader vores tags værre, og kigger nærmere på "alert("hej");" En god krypterings metode er ved at bruge: String.fromCharCode() Så ville vores script altså se sådan her ud til sidst: Kode: <script>String.fromCharCode(104, 101, 106)</script> En god måde at kryptere på denne måde kan gøres ved at downloade Addonet Hackbar til Mozilla Firefox: https://addons.mozilla.org/en-US/firefox/addon/hackbar/ 2. HEX Encoding Dette er egentlig ikke så meget til noget bestemt filter, men det er et skud værd. Vi encoder simpelthen hele vores script. Altså vil: Kode: <script>alert("hej");</script> Så når vi bruger scriptet så vil det se sådan ud: Kode: http://www.eksempel.dk/index.php?id=3c:73:63:72:69:70:74:3e:61:6c:65:72:74:28:22:68:65:6a:22:29:3b:3c:2f:73:63:72:69:70:74:3e Og derefter så vil vores script blive executed. En god ASCII til HEX converter kan findes her: http://www.dolcevie.com/js/converter.html 3. Lukke et åbent tag Nogle gange kan det være nødvendigt at lukke et åbent tag. Dette gøres ved at sætte "> ind foran vores script så det kommer til at se sådan ud: Kode: http://www.eksempel.dk/index.php?id="><script>alert("hej");</script> Dette er 3 metoder som er gode at bruge. Der er selvfølgelig mange flere og en enkelt google søgning kan sikkert give dig mange bedre metoder, men som sagt så er denne guide det basale 6. XSS expert nu! Haha der troede du lige ;) Nej det er du sq langt fra, medmindre du selvfølgelig var i forvejen :D Nej, dette er en god start til hvordan du begynder at "lege" med XSS. Der er meget mere til det end hvad jeg har gennemgået. Nogle nøgle ord du selv kan søge på google er:
Jeg håber dette har hjulpet dig til forståelse af emnet, og at du har fået lært noget. Hvis ikke, så er jeg sq ked af at du skulle læse så meget :=L: |
|||
04-05-2013, 22:07
|
|||
|
|||
RE: XSS Guide For Begyndere - af SwiZz
Thumbs up. Virkelig en lækker guide :)
Følg mig på twitter: https://twitter.com/Morph3s
|
|||
04-05-2013, 22:28
|
|||
|
|||
RE: XSS Guide For Begyndere - af SwiZz
God guide, godt udseende, generelt lækker og letlæselig :)
En lille detalje du kunne tage med er, at når man bruger den til at angribe kan det være godt at skjule URL'en. Det er såmænd bare ved at hex-encode det hele som du også har forklaret, men bare med et lidt andet formål. Et andet godt trick er at sætte kommentar-symboler ind, altså // og /* og så se hvad der sker, for det kan også sommetider udløse brugbare fejl, og med et lille kik på kildekoden finder man jo så noget i stil med det jeg fandt på hardcasa. |
|||
05-05-2013, 14:42
|
|||
|
|||
RE: XSS Guide For Begyndere - af SwiZz
Er glad for den gode respons! Blev sq helt bange da jeg kiggede tidligere idag da jeg ikke kunne finde den under de almindelige hacking tutorials :D
Doctor Blue: Det med at skjule havde jeg faktisk tænkt over, men som sagt så ville jeg egentlig bare ind på det basale, og selve brugen af XSS. Idéen bag tråden er også at man selv skulle kunne bygge sine egne færdigheder, såsom metoden med hex-encode for at skjule et script i et link Men ja kan godt se hvad du mener! Også det med at sætte kommentar-symboler ind, der er rigtig mange metoder og jeg mener også jeg opfordrer til at bruge google og finde "cheat sheats". Men er glad for kritiken! |
|||
06-05-2013, 16:33
(Denne besked var sidst ændret: 06-05-2013, 22:07 af Spagnum.)
|
|||
|
|||
RE: XSS Guide For Begyndere - af SwiZz
Rigtig fin guide SwiZz, noget jeg bliver nødt til at lege lidt med på et senere tidspunkt
Edit: Sådan min første XSS fundet! :^^::^^::^^:
Don't learn to hack, hack to learn
|
|||
01-06-2013, 09:59
|
|||
|
|||
RE: XSS Guide For Begyndere - af SwiZz
Lækker guide du har fået smækket sammen her mate :)
Not bad! |
|||
01-07-2013, 12:25
|
|||
|
|||
RE: XSS Guide For Begyndere - af SwiZz
Lækker guide. Utrolig god for bla. begyndere. :)
|
|||
|
User(s) browsing this thread: 1 Gæst(er)