Serverele web găzduiesc fișierele (pagini web, imagini, videoclipuri, formulare etc.) care alcătuiesc aplicația dvs. web și servesc aceste fișiere atunci când cineva vă vizitează site-ul web. Unele servere sunt mai avansate și controlează, de asemenea, cât de mult acces au vizitatorii web. Acestea pot restricționa vizitatorii obișnuiți să acceseze conturile altor utilizatori sau tablourile de bord administrative. Deși serverele web sunt eficiente în ceea ce fac - și o fac destul de sigur - atacatorii pot exploata erorile care apar din eroare umană sau din logica greșită în modul în care un server servește fișierele pe care le găzduiește.
Ce este un atac LFI?
Un atac Local File Intrusion (LFI) are loc atunci când atacatorii exploatează vulnerabilități în modul în care un server web stochează, servește, validează sau controlează accesul la fișierele sale. Această vulnerabilitate este comună pentru site-urile web bazate pe PHP.
Spre deosebire de multe forme de atacuri cibernetice în care atacatorii se bazează pe malware pentru a corupe o aplicație, atacatorii din LFI se bazează în mare parte pe trucuri inteligente și linii scurte de cod. Acest lucru necesită rareori instrumente sofisticate sau scripturi complexe; atacurile au loc de obicei pe browserul web. Cel mai frecvent truc folosit de atacatori este modificarea șirului URL cu cod, căi de fișiere sau nume de fișiere.
Cum se întâmplă atacurile LFI?
Atacurile LFI au loc de obicei în patru etape.
Mai întâi, atacatorul identifică un site web PHP care rulează o aplicație web vulnerabilă, de obicei rulând un cod de bază în URL-ul browserului pentru a vedea dacă aplicația web (adică site-ul) gestionează comanda. Gândiți-vă la asta ca la apăsarea combinațiilor de taste de pe controlerul de joc pentru a debloca un ou de Paște - să zicem, de exemplu, apăsarea tastei în jos pentru a intra în tuneluri în Super Mario. Dar comenzile pe care atacatorii le execută în atacurile LFI sunt mai consistente decât verificarea fiecărui tunel din Super Mario.
O aplicație web sau un server care a fost configurat incorect sau nu reușește să valideze intrările va executa codul rău intenționat. De aici, hackerul poate obține accesul și privilegiul de care au nevoie pentru a citi fișiere vulnerabile sau pentru a încărca fișiere rău intenționate pe server.
Majoritatea atacurilor LFI au ca rezultat accesarea de către atacator la informații sensibile. Posibilitatea de a încărca malware are rareori succes, deoarece nu există nicio garanție că aplicația web va salva fișierul pe același server unde există vulnerabilitatea LFI. Acesta este adesea cazul dacă aplicația web se află într-un mediu cu mai multe servere.
Deci, dacă vulnerabilitatea LFI există pe serverul care găzduiește imagini, dar nu și pe serverul care stochează angajatul acreditările sau parolele utilizatorului, atacatorul ar avea acces doar la fișierele imagine de pe acel server vulnerabil. Indiferent, evenimentele cibernetice cum ar fi atacul asupra LastPass arată că hackerii pot face ravagii cu cel aparent cel mai nesemnificativ nivel de acces.
Cum să preveniți atacurile LFI
Atacurile LFI sunt destul de comune, potrivit Deschideți Proiectul de securitate a aplicației web (OWASP). De înțeles, hackerii ar favoriza acest atac, deoarece, așa cum W3Techs rapoarte, aproape opt din 10 site-uri web rulează PHP ca limbaj de programare pe partea de server - o abundență de victime, ca să spunem așa. Este posibil să previi un atac LFI prin adoptarea celor mai bune practici de securitate web.
Lista albă a fișierelor serverului public
Aplicațiile web folosesc adesea căile fișierelor ca intrări URL. Hackerii pot exploata acest sistem de fișiere schimbând partea URL-ului care se dublează ca cale de fișier. De exemplu, un atacator se poate schimba https://dummywebsite.com/?module=contact.php la https://dummywebsite.com/?module=/etc/passwd. Un server vulnerabil cu filtrare slabă și logică defectuoasă va afișa conținutul fișierului stocat în calea /etc/passwd.
Desigur, hackerii folosesc variații ale numelor comune de fișiere și combinații de caractere de interogare pentru a crește șansele unui atac de succes. Scopul este de a păcăli aplicația web să ruleze un script sau să afișeze fișierele pe un server web.
Puteți bloca această vulnerabilitate creând o listă albă de documente publice pe serverul dvs. și instruind aplicației web să ignore interogările pentru orice alt document sau cale de fișier. Deci, dacă un atacator încearcă să manipuleze adresa URL pentru a solicita sau a rula coduri care solicită un privat, va primi o pagină de eroare.
Testați frecvent vulnerabilități
Poți să folosești instrumente de scanare web pentru a găsi și remedia vulnerabilitățile care v-ar putea expune la atacuri LFI. Scanerele aplicațiilor web sunt instrumente automate care accesează cu crawlere aplicația dvs. ca un atacator și vă avertizează asupra potențialelor vulnerabilități. Există mai multe scanere web open-source, cum ar fi OpenVAS și Wireshark, dar cele mai multe scanere de vulnerabilitate sunt software proprietar și necesită planuri plătite pentru utilizare.
Dar, desigur, nu primiți un scanner web doar pentru atacurile LFI. Aceste instrumente caută, de asemenea, vulnerabilități de securitate mai largi, cum ar fi includerea fișierelor de la distanță, scripturi între site-uri, injecție SQL și configurații slabe ale serverului. Deci, merită.
Restricționați privilegiile vizitatorilor site-ului
Hackerii execută adesea atacuri LFI cu succes, deoarece aplicațiile web nu reușesc să compartimenteze privilegiile utilizatorilor și, în acest sens, permit vizitatorilor să acceseze fișiere care ar trebui să fie vizibile numai pentru administratori. Această măsură funcționează ca lista albă: configurați aplicația și serverul dvs. web astfel încât să servească fișiere publice și să ignore solicitările neautorizate atunci când un vizitator interacționează cu aplicația web. Acest lucru este important în special pentru interogările către căile de fișiere care conțin fișiere sensibile.
În acest scop, poate fi necesar să împiedicați modificarea directă a căilor fișierelor. Aplicația web ar trebui să difuzeze doar documente dintr-o listă de căi codificată. În plus, configurați aplicația web să proceseze cererile cu concatenare dinamică a căilor (adresele URL ar trebui să conțină caractere alfanumerice) în loc de funcții base64 sau bin2hex.
Dacă vă gândiți la includerea pe lista neagră a numelor de fișiere, nu o faceți. Hackerii au de obicei o listă tot mai mare de nume de fișiere pe care le pot folosi pentru a executa un atac LFI. În plus, este practic imposibil (și o pierdere colosală de timp) pentru a pune pe lista neagră o listă de surse în continuă creștere de atac.
Utilizați un mediu multi-server
Un mediu cu mai multe servere vă permite să izolați documentele importante și sensibile din fișierele publice, reducându-vă astfel riscul în cazul unei încălcări. Serverele dedicate sunt mai puțin vulnerabile la atacurile LFI deoarece, deși funcționează împreună, configurațiile lor diferă.
Pe lângă această securitate, mai multe servere sunt, de asemenea, fiabile (cu riscuri mai mici de nefuncționare), rapide și eficiente. Desigur, utilizarea unui mediu multi-server nu este rentabilă dacă site-ul dvs. este mic. În acest caz, luați în considerare împărțirea accesului aplicației dvs. web la date între o bază de date pentru date private și un server pentru fișiere publice.
Ar trebui să vă faceți griji pentru atacurile LFI?
Posibilitatea unui atac LFI există, mai ales dacă site-ul dvs. rulează pe PHP, dar vă puteți reduce expunerea configurând aplicații web și servere conform celor mai bune practici de securitate web.
În plus, ar trebui să luați în considerare efectuarea verificărilor de rutină de securitate pentru a găsi vulnerabilități. Lucrurile se sparg tot timpul, mai ales că arhitectura site-ului devine complexă. Instrumentele de care veți avea nevoie pentru a vă proteja sunt automatizate și multe nu necesită o configurare elaborată sau cunoștințe tehnice avansate.