de Nathan

Hacking Imgur pentru distracție și profit

Deci crezi că memele tale sunt în siguranță …

Hacking Imgur pentru distractie si profit
Îmi pare rău, nu îmi pare rău.

Am vrut să scriu despre asta de ceva vreme. Totul a început în iulie 2015, când am decis să caut vulnerabilități în Imgur, o platformă incredibil de populară de partajare a imaginilor.

Motivul pentru care am ales Imgur a fost pentru că am vizitat frecvent site-ul și eram deja familiarizat cu modul în care a funcționat site-ul. După un sondaj rapid, am reușit să identific câteva vulnerabilități comune: XSS, clickjacking și o întreagă încărcare de probleme CSRF.

Raportarea problemelor s-a dovedit a fi puțin dificilă. Singurul mod în care puteam vedea pentru a contacta Imgur era prin sistemul lor de asistență, care nu era potrivit pentru raportarea problemelor de securitate. În cele din urmă, 1 august, am scris un raport care detaliază problemele, am trimis un e-mail la security@imgur.com și am așteptat. Dar nu pentru mult timp.

Câteva ore mai târziu, am primit un e-mail de la fondatorul și directorul executiv al Imgur, Alan Schaaf, mulțumindu-mi și oferindu-mi niște recompense. În următoarele câteva zile am continuat să le transmit rapoarte despre vulnerabilitățile pe care le-am descoperit, inclusiv unul care mai târziu mă va câștiga peste 5.000 de dolari.

Lucrurile au fost liniștite o vreme. Ocazional am verificat dacă vreo problemă a fost rezolvată și, cu siguranță, multe au fost. A fost plăcut să știu că iau aceste probleme în serios și că am ajutat la securizarea platformei.

Apoi, la sfârșitul lunii septembrie, Imgur a fost spart. Cineva a putut încărca un fișier HTML cu Javascript rău intenționat pe Imgur și a continuat să vizeze utilizatorii 8chan.

A fost repede fix, cu toate acestea, a fost raportat pe scară largă și, în mod clar, ceva ce Imgur își dorea să nu se fi întâmplat. Ca răspuns, Imgur și-a lansat în cele din urmă program de recompense pentru erori o saptamana mai tarziu.

Aceasta a fost o veste grozavă, deoarece acum oamenii au un mod de a raporta în siguranță problemele. L-am contactat încă o dată pe Alan întrebându-mă dacă vreunul dintre rapoartele mele era eligibil pentru o recompensă și el m-a pus în legătură cu unul dintre dezvoltatorii Imgur, care a confirmat că sunt eligibil și mi-a cerut să creez un raport pe HackerOne. Pentru toate vulnerabilitățile pe care le raportasem – în total peste 20 de ani – 50 $ a fost recompensa mea. Motivul fiind „în cea mai mare parte, oferim swag pentru rapoarte CSRF, deci sunteți mai mult excepție aici”.

Înainte ca Imgur să-și creeze programul de recompensare a erorilor, Imgur era dezamăgit de vulnerabilitățile CSRF. Unele, care au fost acum remediate, includ: capacitatea de a actualiza biografia utilizatorului, capacitatea de a genera un nou secret de client pentru un anumit Aplicația Imgur, și posibilitatea de a schimba adresa URL de redirecționare pentru o anumită aplicație Imgur. Acestea au fost câteva dintre problemele pe care le raportasem inițial, așa că a fi recompensat cu doar 50 USD a fost destul de descurajant.

Cu toate acestea, dezvoltatorul a fost clar: programul era nou și încă învață și încearcă să-l îmbunătățească. Având în vedere acest lucru, i-am dat o listă a problemelor pe care le raportasem și el a confirmat că în rapoarte era mult mai mult decât își dăduse seama.

În câteva săptămâni dintre discuțiile despre probleme și obținerea unei recompense suplimentare, am descoperit altceva interesant.

În timpul cercetărilor mele inițiale, am căutat prin codul sursă HTML al Imgur și am găsit următorul fragment:

$(function() { if(!/^([^:]+:)//([^.]+.)*imgur(-dev)?.com(/.*)?$/.test(document.referrer)) { Imgur.Util.jafoLog({ event: ‘galleryDisplay’, meta: { gallerySort: ‘viral’, galleryType: ‘hot’ }}); } });

Acest lucru m-a determinat să fac o recunoștință pe imgur-dev.com, care sa dovedit a fi domeniul pe care Imgur îl folosește pentru dezvoltarea internă. O căutare rapidă pe Google a site-ului: imgur-dev.com a dezvăluit că Google indexase subdomeniul „alan.imgur-dev.com” care conținea o versiune de dezvoltare a Imgur. Totuși, serverul era oprit în acel moment. Am putut vizualiza o copie în cache a paginii care a dezvăluit câteva informații interesante, inclusiv tabele de baze de date și nume de coloane în interogările SQL rezultate de Profilul lui Kohana.

Rapid spre noiembrie, am decis să arunc din nou o privire la imgur-dev.com. Boom! alan.imgur-dev.com a fost live și accesibil. Ce am găsit? A fost în esență Imgur așa cum știți cu câțiva utilizatori și câteva postări de testare. Ceea ce este remarcabil este că este un mediu de dezvoltator – am putut vedea stack-uri care includeau părți din codul sursă al Imgur, avertismente și notificări PHP, detalii despre mediu, interogări de baze de date și căi complete către fișierele de configurare.

Cu aceste detalii am creat un alt raport pe HackerOne și am așteptat un răspuns. Două zile mai târziu, am mai aruncat o privire la alan.imgur-dev.com. De data aceasta am decis să folosesc SubBrute pe alan.imgur-dev.com pentru a vedea dacă au existat subdomenii care ar putea fi de interes.

Nu mai mult după ce am început scanarea, am primit un hit: es.alan.imgur-dev.com. O vizită rapidă a arătat că era un server Elasticsearch care nu fusese actualizat de ceva vreme. De fapt, după ce am căutat o vulnerabilitate Elasticsearch, am descoperit CVE-2014–3120.

The default configuration in Elasticsearch before 1.2 enables dynamic scripting, which allows remote attackers to execute arbitrary MVEL expressions and Java code via the source parameter to _search.

Bineînțeles, am luat un script de dovadă a conceptului și am încercat să citesc / etc / passwd. Bingo. Fișierul citit cu succes. Acum, lucrul sigur de făcut aici ar fi să raportați problema și să mergeți mai departe. Nu de data asta. Imgur a fost în stadiul de a oferi recompense de 50 de dolari și swag. Nu am fost fericit cu asta. Am decis să merg mai departe și să văd cât de rău aș putea să-l fac pe Imgur dacă aș vrea.

Un fișier de configurare pe care l-am observat mai devreme se numea „keys.php”. Am decis să încerc să-l citesc așa cum făcusem / etc / passwd și încă o dată a fost un succes. Acest fișier conținea tot ce aveam nevoie. Chei API pentru Fastly și MailChimp, chei API pentru aplicații mobile, chiar și chei API reCAPTCHA. Dulce. Dar asta nu este tot … fișierul conținea și acreditările utilizate pentru conectarea atât la serverele MySQL locale, cât și la distanță. Hopa.

Problema acum a fost că nu știam numele gazdei serverului MySQL la distanță și nu mă pot conecta la cel local de la distanță. Ce faci?

M-am întors la scanarea subdomeniilor și a existat o altă lovitură. sql.alan.imgur-dev.com. Da, știi ce urmează să se întâmple …

Am vizitat domeniul și am fost întâmpinat de phpMyAdmin. Acum, de obicei, vă așteptați să introduceți doar numele de utilizator și parola pentru a vă autentifica. Din fericire pentru mine mi s-a dat o gamă de gazde la care să mă conectez. Unul era serverul local, iar celălalt era un server la distanță găzduit pe Amazon AWS. Am selectat serverul de la distanță, am introdus acreditările și am avut acces complet la baza de date a producției Imgur.

Ei bine, iată-l, a fost distractiv să scrii despre … Oh, ai crezut că a fost? Asta nu este tot, oameni buni.

Fișierul de configurare conținea și două seturi de Amazon Chei de acces AWS – un set pentru dezvoltare și un set pentru producție. Deci, ce am făcut în continuare?

Nimic.

Deși știu că aș fi putut folosi tastele pentru a roti noi servere, SSH în cele existente sau pentru a le distruge complet, am decis să nu testez chiar dacă funcționau.

O parte importantă a cercetării securității este să știi când să te oprești.

Am mers suficient de departe pentru a demonstra cât de gravă este problema și pentru a demonstra ce ar putea face un atacator rău intenționat, fără a fi prea neglijent sau intruziv.

Acest lucru trebuia reparat și rapid. Am actualizat raportul HackerOne cu noile mele descoperiri și i-am trimis urgent lui Alan un e-mail pentru a-l aduce în atenția sa. Într-o jumătate de oră serverul era offline. A doua zi dimineață, Alan mi-a răspuns anunțându-mă că accesul la server a fost dezactivat în timp ce ei își dădeau seama de următorii pași. Am fost incredibil de impresionat de modul în care au rezolvat-o.

A security group configuration error allowed Imgur development environments to face the public internet. Typically these environments were protected behind a special endpoint which would open access to authenticated Imgur employees for a short time window. Since the development environments were configured in such a manner to make development easier, some keys and environment variables were exposed. While most of these pieces of sensitive information were limited to the development environments, some production information was also exposed. Since this report was published, security around development environments has been completely re-worked and they now reside behind a VPN.

Trecând la începutul lunii decembrie, atât pentru vulnerabilitățile multiple, cât și pentru problema cu risc ridicat pe care le raportasem, am fost recompensat cu 500 USD. Inutil să spun că nu m-a impresionat. Am decis să îi trimit un e-mail lui Alan, oferindu-mi feedback-ul meu despre programul de până acum și explicând, de asemenea, de ce 500 de dolari nu erau suficienți.

Bug bounties are like hiring mercenaries. Cheaper than a standing army of pentesters. But don't complain when they swap sides for more gold.

O săptămână mai târziu, Alan a răspuns, fiind de acord cu punctele pe care le-am adus și a spus că echipa va avea o întâlnire despre program în curând. Am fost încântat să aud că feedbackul meu a fost luat în serios. Uneori, ajută să vorbești direct cu directorul executiv pentru a se întâmpla schimbări reale.

Redirecționând încă o dată până în ianuarie 2016, Alan mi-a trimis un e-mail final.

Hey Nathan,Happy new year! I was finally able to sync up with my team and come to a conclusion on this. Since your exploit went above and beyond (contained several exploits all chained together, access to production data, etc), we want to go above and beyond for you too, and have agreed to offer you an additional $5,000. This is so much higher than anything we've ever offered before, but again, this exploit was so much higher than anything that hasbeen found before, so I think it's deserving and I hope it's sufficient for you.Thanks so much for protecting us and properly reporting it to us. Best of luck in the new year.Best,Alan

A fost o veste fantastică de primit. Nu numai că Imgur și-a schimbat programul de recompense pentru bug-uri pentru a plăti în mod echitabil cercetătorilor, dar suma suplimentară de 5.000 de dolari ne-a ajutat incredibil pe mine și pe ceilalți. Jumătate din acestea au fost destinate persoanelor care au nevoie, inclusiv Lauri Love, un hacker care se confruntă cu extrădarea în Statele Unite și un prieten apropiat care a rămas recent fără adăpost. Diverse organizații caritabile și cercetători au beneficiat de ea.

Am continuat să particip la programul de recompense pentru bug-uri al lui Imgur și, deși nu este perfect, mi-a răspuns și am plătit frumos mie și celorlalți. Sper că alte echipe pot învăța din disponibilitatea lui Imgur de a lua feedback și de a se îmbunătăți, deoarece comunicarea în jurul securității este atât de importantă.

Ce urmează pentru mine? Sper să învăț în continuare și să lucrez pentru a face internetul un mediu mai sigur și mai sigur pentru generațiile viitoare. Internetul este mic în comparație cu ceea ce va fi peste 10 ani. Bătălia nu s-a terminat și războiul urmează să vină.

Dacă sunteți în căutarea unei provocări, vă recomand cu tărie să verificați programul de recompense pentru bug-uri al lui Imgur și altele HackerOne.

Poți să mă urmărești mai departe Stare de nervozitate unde trimit un tweet despre securitate, vremea teribilă britanică și meme. Da. Știi că vrei… 🙂