Ce sunt includerea fișierelor și executarea codului arbitrar? - MalCare

Publicat: 2023-04-13

Includerea fișierelor și executarea codului arbitrar: La începutul acestei luni, un site web de bilete de avion construit pe WordPress a fost spart, lăsând expuse datele personale ale sute de mii de vizitatori. Într-o postare anterioară despre de ce hackerii piratau , am discutat toate motivele pentru care hackerii pirata, inclusiv furtul de date, trimiterea de e-mailuri spam, ar putea chiar să folosească tehnici Black Hat SEO pentru a-și clasa propriile produse (citire recomandată – pharma hack) etc.

Învățarea modului în care hackerii pirata un site web este o cheie pentru prevenirea acestora, motiv pentru care am enumerat cele mai frecvente atacuri de hack făcute pe site-urile WordPress într-un articol anterior.

Când vorbim despre atacuri de hack obișnuite, este foarte probabil să vă gândiți la atacurile cu forță brută. Dar știați că includerea fișierelor și executarea codului arbitrar este, de asemenea, unul dintre cele mai comune atacuri de hack făcute pe site-urile WordPress. În această postare, vom aprofunda puțin în aceste atacuri cu scopul de a le înțelege în detaliu.

Pentru a înțelege cum funcționează aceste atacuri, primul lucru pe care trebuie să-l știți este că implică fișiere PHP.Trebuie să vă întrebați de ce? Este pentru că atât atacurile de includere a fișierelor, cât și atacurile de executare a codului arbitrar implică utilizarea fișierelor PHP.

Dar ce este un fișier PHP? Gândiți-vă la un dulap de bucătărie. În interiorul dulapului, există o serie de articole precum zahăr, sare, condimente, ustensile etc. Fiecare dintre aceste articole are un scop pentru a fi servit în bucătărie.Un fișier PHP este un cabinet, iar codurile din interiorul fișierelor sunt elementele care permit executarea anumitor funcții dorite de hacker.Acesta este motivul pentru care hackerii preferă să încarce un fișier PHP față de orice alte fișiere, cum ar fi fișierul JPEG sau PDF. Fișierele JPEG și PDF nu sunt executabile, adică hackerii nu pot folosi aceste fișiere pentru a executa nicio funcție. Se poate doar să le citească (adică să le vizualizeze). Ele nu pot fi folosite pentru a face modificări unui site piratat.

Un hacker care a încărcat un fișier PHP pe serverul site-ului dvs. îl poate folosi pentru a face orice pe site-ul dvs. Și acesta este motivul pentru care fișierele PHP sunt folosite pentru a rula atacuri cu includerea fișierelor și executarea codului arbitrar.

Ce este un atac de includere a fișierelor?

Cel mai bun mod de a înțelege un atac complex de site-uri web ca acesta este de a exemplifica un scenariu real. Să presupunem că gestionați un site web pentru instituția dvs. și site-ul se numește college.com. Permiteți câtorva studenți să acceseze site-ul, astfel încât să poată posta fotografii făcute în timpul unui eveniment recent al colegiului. Cineva folosește greșit accesul pe care l-ați acordat și încarcă un fișier PHP rău intenționat (numit hack.php) pe site. Scopul este de a obține controlul asupra site-urilor web ale colegiilor. Când studentul încarcă fișierul PHP rău intenționat, acesta este stocat implicit în folderul Încărcare.Oricine cunoaște structura de bază a WordPressștie unde se duce un fișier încărcat.

Includerea fișierului și executarea codului arbitrar
Orice încărcare care nu este o temă sau un plugin este stocată în folderul Încărcare. Oricine cunoaște structura WordPress știe unde poate fi găsit folderul Încărcare. Pentru cei care nu știu, aici se află folderul Încărcare. Deschideți File Manager din Web Hosting cPanel, apoi accesați Public_html > wp-content > uploads.

Fișierul acționează ca o ușă care permite hackerului să interacționeze cu fișierul de la distanță. Rețineți că hackerul încă nu are control asupra site-ului, ci doar o fereastră pentru comunicare. Pentru a fi mai ușor de înțeles, imaginați-vă că persoana A vrea să meargă într-o țară în care nu are voie. Așa că trimite un agent, persoana B. Persoana A este hackerul, țara reprezintă site-ul colegiului și persoana B este fișierul hack.php.

Fișierele PHP încărcate pe site-ul web al colegiului —-> Fișierul este stocat pe serverul site-ului web

Persoana B este instruită doar în câteva lucruri și nu poate face decât atât. Deci, persoana A trebuie să-l instruiască despre ce să facă în continuare. În același sens, fișierul PHP creează o fereastră de comunicare și apoi așteaptă mai multe comenzi de la hacker.

Să presupunem că hack.php este creat într-un mod care permite încărcarea mai multor fișiere pe site. Hackerul creează un fișier (numit control.php) pe care îl va încărca folosind hack.php care este deja prezent pe serverul site-ului. Noul fișier – control.php va permite hackerului să aibă acces complet la site. El folosește fereastra oferită de fișierul hack.php pentru a încărca fișierul control.php pe site.Acest proces de încărcare a fișierului control.php folosind un fișier (hack.php) care este deja prezent pe serverul site-ului web se numește Local File Inclusion .

Un exemplu excelent de execuție locală a fișierelor este vulnerabilitatea observată pe pluginul WordPress Easy Forms for MailChimp (v 6.0.5.5) . Folosind pluginul MailChimp, proprietarii de site-uri web pot adăuga diferite tipuri de formulare pe site-ul lor WordPress. O vulnerabilitate a permis hackerilor să încarce un fișier PHP pe un server de site web folosind formularul MailChimp.Odată ce fișierul este stocat pe serverul site-ului web, hackerii au putut să comunice cu ei și să execute coduri care le vor permite să controleze serverul sau să deterioreze site-ul în numeroase moduri.

Iată un scenariu: site-ul colegiului are instalat un firewall și, prin urmare, hackerul nu poate încărca control.php. Deși nu poate încărca un alt fișier separat, el poate „include” un fișier. Înseamnă că poate insera un fișier în fișierul hack.php care este deja prezent pe serverul site-ului colegiului. Dacă hackerul a putut să încarce fișierul control.php, serverul site-ului web ar citi fișierul și ar executa codul din interior, care îi va permite hackerului să facă tot ce dorește. Dar pentru că nu poate încărca fișierul, va trebui să găsească alte modalități de a face serverul să citească fișierul control.php. O cale creată de un hacker este disponibilă online, iar serverul site-ului web al colegiului ar trebui să o poată citi. Prin urmare, hackerul creează o cale și le face disponibile online, astfel încât serverul site-ului colegiului să o poată citi. Serverul începe apoi să execute codul achiziționat din cale și, deoarece codul este scris într-un mod care va permite hackerului controlul deplin al site-ului, hack-ul controlează acum site-ul colegiului. Acest proces de a face serverul să citească un fișier la distanță se numește Remote File Inclusion.

Includerea fișierului și executarea codului arbitrar
Un exemplu care demonstrează cum a avut loc atacul TimThumb

Cazul de vulnerabilitate TimThumb este un exemplu popular de includere a fișierelor la distanță. TimThumb a fost un plugin WordPress care permitea editarea ușoară a imaginilor pe un site WordPress. Acesta a permis oricui să folosească imagini procurate de pe site-uri web de partajare a imaginilor precum imgur.com și flickr.com. TimThumb recunoaște imgur ca un site valid (sau pe lista albă). Hackerii care profită de acest criteriu creează fișiere cu adrese URL care menționează un site valid precum http://www.imgur.com.badsite.com.Când încarcă un fișier rău intenționat cu o adresă URL ca cea menționată mai sus, pluginul este păcălit făcându-i să creadă că fișierul provine de la un site web valid.Și permite încărcarea unui fișier rău intenționat pe serverul site-ului web. Tot acest proces de includere a unui fișier rău intenționat din afara serverului site-ului web, profitând de o vulnerabilitate dintr-un plugin este Remote File Inclusion. După ce fișierul PHP rău intenționat este stocat pe serverul site-ului web, hackerii pot comunica cu acesta pentru a executa acțiunile dorite.

Ce este un atac de executare a codului arbitrar?

Acum că știm ce este includerea fișierelor la distanță și locală, să trecem mai departe și să încercăm să înțelegem ce este Execuția codului arbitrar. Includerea fișierelor și includerea codului arbitrar sunt interdependente între ele. În orice caz de includere a fișierelor, hackerii urmăresc să execute un cod arbitrar pe site. Să ne întoarcem la exemplul de includere a fișierelor locale în care hackerul a încărcat un hack.php pe site-ul colegiului și apoi a încărcat control.php cu ajutorul hack.php.Expresia Arbitrary Code Execution este o descriere a capacității unui hacker de a executa orice comandă la alegere pe un site web piratat.Odată ce fișierele PHP (hack.php și control.php) sunt pe serverul site-ului web, hackerul poate executa orice cod dorește. Acest proces de executare a oricărui cod din fișierele pe care le-a încărcat se numește Arbitrary Code Execution.
Hack-urile sunt complexe. În această postare, am încercat să explicăm acest lucru ca fiind simplu, dar dacă există o parte care nu are sens pentru tine, îndemnăm cititorii noștri să ne scrie . În următoarea postare, discutăm despre un alt atac comun de hack pe un site WordPress numit Cross-Site Scripting (XSS). Aruncă o privire.