Atacuri CSRF - Securitatea Informatica

Atacuri CSRF

Cross Site Request Forgery este o tehnica destul de veche si are legatura (dar nu in totalitate) cu Cross Site Scripting, metodele si rezultatele exploatarii fiind de multe ori diferite fata de cele din cazul XSS. CSRF poate fi folosit in diferite scopuri, unele rauvoitoare sau utile, altele pur si simplu amuzante sau enervante. Eu va voi explica doar cateva metode deja arhicunoscute.

Lectie basic

<img> tag nu reprezinta doar o modalitate de a include imagini, ci poate fi extrem de util cand vrem sa executam (mai mult sau mai putin limitat) anumite scripturi.

Categoria “enervant” .

Daca vrem sa ne delogam de pe contul Yahoo! accesam (dupa un mic redirect), linkul  https://login.yahoo.com/config/login?logout=1. Cum putem face acelasi lucru automat cuiva fara a mai fi necesara contributia persoanei respective? Simplu. Ii trimitem in mail un mesaj html ce contine acel link in <img> tag.

Adica asa <img src=https://login.yahoo.com/config/login?logout=1>.

Persoana targetata va fi delogata automat dupa ce va citi mesajul html.

La fel se poate proceda in cazul oricarui site ce permite inserarea imaginilor din surse externe fara a verifica in prealabil daca este vorba intr-adevar de o imagine. Pe un forum spre exemplu in marea majoritate a cazurilor se foloseste BBCode. Simpla diferenta in cazul BBCode este faptul ca tagurile pe care le introducem pentru a afisa o poza vor arata cam asa:

[img]http://site.com/image.jpg[/img]

iar pentru a deloga un user vom folosi

[img]http://site.com/logout.php[/img]

Totusi de retinut ca de ceva timp multe din aceste forumuri filtreaza cu succes astfel de “atacuri”, unele verificand daca este vorba de o imagine reala, altele generand un token unic si necesar pentru fiecare utilizator, token ce nu poate fi aflat (de la caz la caz) de catre o alta persoana. Exemplul cel mai bun de site ce foloseste token-uri este twitter.com.

In categoria utile vorbim in general de voturi. Eu cam asa vad situatia, poate ma insel, poate nu. Cel mai bun exemplu este articolul despre site-ul teapa ro-online.ro. In schimb acum voi da ca exemplu jocul Bitefight si metodele pe care le-am folosit eu pentru a capata “muscaturi”.

O muscatura pe Bitefight inseamna castig in aur. O chestie care cica e utila in joc pentru ca aurul iti permite sa iti upgradezi caracterul.

Pentru a capata o muscatura trebuie sa ti se acceseze linkul personal. Linkul arata cam asa http://s7.bitefight.ro/c.php?uid=17645, singura diferenta de la jucator la jucator fiind doar numarul din valoarea uid=.

Ce am facut? La inceput m-am folosit de reteaua 3xforum.ro pentru ca permitea adaugarea de imagini externe fara a verifica linkul. Mi-am facut cont pe cel mai mare forum din reteaua lor, mi-am pus la semnatura linkul folosind BBCode si am inceput sa postez. 5-10 posturi pe saptamana in topicurile cele mai vizitate imi aduceau mii de muscaturi pe Bitefight. Toti cei care vizitau pagina unde postasem eu imi generau automat o muscatura.

In timp nu a mai functionat smecheria si am zis sa fac acelasi lucru pe hi5. Acolo m-am lovit de o asa zisa restrictie care nu imi permitea sa postez linkul respectiv in <img> tag. S-a rezolvat in 2 minute punand la sfarsitul linkului extensia .jpg. Linkul meu arata acum asa:

<img src=”http://s7.bitefight.ro/c.php?uid=17645 .jpg”>

Si da, se executa sub forma asta.

Mai exista si alte metode extrem de folositoare si la indemana oricui pentru a genera astfel de voturi dar momentan nu voi da mai multe detalii.

Partea amuzanta poate fi considerata in acelasi timp si enervanta de catre persoanele afectate. Acum voi vorbi despre minunatul Hi5.com.

In urma cu ceva timp am descoperit o serie de vulnerabilitati XSS si CSRF in hi5. Pot sa zic ca au fost in jur 10 XSS-uri permanente pe care le-am gasit impreuna cu Kenpachi in sistemul lor si care si-au facut treaba la timpul respectiv.

CSRF-uri inca  sunt cu nemiluita si azi va voi arata cateva extrem de simple. Pentru cei interesati de vechile scapari ale hi5 pot citi mai multe informatii la adresa http://hackpedia.info/viewtopic.php?f=21&t=4661 (ignorati mesajul final al postului meu). Ceea ce vedeti acolo nu mai functioneaza din momentul in care am facut acel articol (a iesit o nebunie totala), dar pentru schimbarea limbii am gasit o noua metoda ce inca da rezultate.

Acum ca exemplu vom folosi introducerea automata pe profile a aplicatiilor din reteaua interna a hi5. Eu ii spun japca, voi ii puteti spune cum vreti. Puteti testa daca doriti pentru ca nu e ilegal.

Adaugati in profilul vostru la rubrica About urmatoarele:

<img src=”http://hi5.com/friend/apps/entry/www.seafight.com/hi5.php?view=preview&from=gallery& .jpg” />

<img src=”http://hi5.com/friend/apps/addApp.do?referrer=gallery&privacy=1&privacy=2&privacy=3&privacy=4&privacy=5&appId=1&appContext=1 .jpg”>

Cele doua tag-uri vor include automat acele aplicatii pe profilele celor care va viziteaza si sunt logati pe conturile lor. Lista intreaga de aplicatii o gasiti la adresa http://hi5.com/friend/apps/gallery.do. De acolo luati linkurile catre acele aplicatii si le introduceti in tagurile de imagini, folosind extensia .jpg la sfarsit.

La ce ajuta sa facem asta pe hi5? Daca aveti 13 ani si vreti sa va dati mari si tari in fata prietenilor o sa considerati ca e folositor ce am scris in articol. Pentru oamenii cu ceva minte e doar un exemplu amuzant.

Acum trecem la partea finala, cea care poate provoca pagube.

Sa spunem ca un forum contine anumite topicuri ce am vrea sa dispara dar adminul nu vrea sa le stearga. Daca stim care este structura forumului si modul in care functioneaza pe partea de administrare  putem sa ducem la bun sfarsit atacul fara ca cineva sa isi dea seama imediat.

Ca simplu exemplu dam http://site.com/forum.

Topicurile sunt sub forma http:// site.com/forum.php?topic_id=1000.

Pentru stergerea topicului adminul trebuie sa acceseze linkul http:// site.com/forum.php?del_topic=1000.

Ce trebuie facut? Implementam undeva pe forum tag-ul <img src=”http:// site.com/forum.php?del_topic=1000″> (probabil sub forma de BBCode) si asteptam ca adminul sa acceseze pagina respectiva si automat sa stearga topicul. In cazul in care nu se poate injecta html pe forum se poate folosi o pagina externa si apoi se posteaza un link (cat mai atragator) catre aceasta.

In cazul browserelor de ultima generatie se pastreaza sesiunea activa chiar daca este deschis un link in alta pagina asa ca sunt sanse foarte mari de reusita.

De retinut ca acesta e doar un exemplu si ca majoritatea cms-urilor din ziua de azi nu permit astfel de metode, singura optiune ce mai poate fi aplicata din cand in cand fiind folosirea XMLHttpRequest pentru a forta browserul sa trimita POST content. Prin metoda asta am reusit sa schimb descrierea a cateva sute de useri pe Bitefight.ro si sa le activez optiunea de stergere a contului.

Ceea ce am scris in acest articol este foarte basic si Cross Site Request Forgery NU INSEAMNA numai adaugarea linkurilor in taguri de imagine.

Sursa: blog.rstcenter.com

Twitter Digg Delicious Stumbleupon Technorati Facebook


Un raspuns la “Atacuri CSRF”

Lasa un raspuns

This site is protected by Comment SPAM Wiper. This site is protected by WP-CopyRightPro