SQL Injection: un ghid pentru utilizatorii WordPress
Publicat: 2021-05-26Dacă sunteți serios cu privire la securitatea site-ului dvs. web, atunci este timpul să aflați despre pericolele injecțiilor SQL și despre cum le puteți combate.
Termenul de injecție SQL (numit și SQLi) se referă la un tip de tehnică de atac cibernetic care este o modalitate obișnuită pentru hackeri de a compromite site-uri web de tot felul, inclusiv site-uri care rulează WordPress ca sistem de gestionare a conținutului.
În acest ghid, vom explica în detaliu cum arată un atac de injecție SQL și pașii exacți pe care trebuie să îi faceți pentru a evita unul. Hai să aruncăm o privire. Veți afla totul despre modul în care funcționează aceste atacuri, de ce sunt atât de importante împotriva cărora să vă apărați și despre exemplele reale ale acestor vulnerabilități. Hai să ne scufundăm!
Introducere: Înțelegerea SQL
S tructured Q uery L anguage, sau „SQL“ (pronunțat ca și cuvântul „sequel -ul “) este o bază de date relațională Sistem de Management. Inventat în 1974, a fost primul mod ușor de a stoca și de a prelua multe tipuri de date pe sistemele informatice.
De atunci, limba a crescut în popularitate și este încă folosită în multe sisteme de gestionare a conținutului (CMS), cum ar fi WordPress astăzi. La scurt timp după ce limbajul a devenit popular în comunitatea de cercetări științifice, a apărut problema injecției SQL, acum infamă.
În sisteme precum WordPress, multe operații utilizează interogări SQL pentru a prelua și stoca date. Aceste interogări SQL sunt scrise de dezvoltatori și nu sunt concepute pentru a fi maleabile.
Din păcate, de la începutul SQL, atacurile de injecție SQL au fost o problemă persistentă pentru sistemele care utilizează acest tip de bază de date, cum ar fi baza de date WordPress. Utilizarea unui plugin de securitate WordPress de calitate poate contribui cu siguranță la atenuarea riscului de a suferi un atac sau o încălcare devastatoare. Cu toate acestea, așa cum ar spune GI Joe, „cunoașterea este jumătate din bătălie” atunci când vine vorba de orice formă de atac cibernetic.
Ce este o injecție SQL (SQLi)?
Pe scurt, o injecție SQL (SQLi) este un atac care permite unui hacker să profite de o interogare SQL vulnerabilă pentru a-și rula propria interogare. Injecțiile SQL apar atunci când un atacator este capabil să ruleze propriul SQL pe un server.Veți observa că injecțiile SQL sunt adesea denumite „SQLI” sau „SQLi” în publicațiile tehnice. Amintiți-vă, aceste atacuri se pot întâmpla pe orice sistem care utilizează SQL sau un derivat al SQL pentru a gestiona datele. Injecțiile SQL WordPress în special sunt atât de bine cercetate și documentate datorită volumului mare de site-uri care rulează pe platforma WordPress.
Să aruncăm o privire la cheltuielile mai tehnice din ce constau aceste atacuri.
Definiție injecție SQL
Prin definiție, intenția unei injecții SQL este întotdeauna rău intenționată și de obicei își propune să îndeplinească unul sau mai multe dintre aceste trei obiective:
- Recuperare neautorizată a datelor - În SQL, comanda SELECT este utilizată pentru a prelua date. Dacă un atacator poate manipula cu succes o interogare bazată pe SELECT, acesta va putea „descărca” conținutul unei baze de date. Acesta este motivul pentru care este esențial să criptați toate bazele de date cu informații care nu ar trebui făcute publice.
- Modificarea datelor - În alte cazuri, scopul unei injecții SQL WordPress poate fi modificarea intrărilor din bazele de date. Aceasta este de obicei pentru a atribui un anumit cont sau un set de permisiuni de conturi pe care nu le-ar avea în mod obișnuit.
- Denial of Service (DoS) - Un atac DoS este atunci când un utilizator rău intenționat face mai dificil accesul utilizatorilor legitimi la site-ul sau serviciile dvs. O comandă obișnuită în SQL pentru a șterge date este pur și simplu ȘTERGERE. Atacatorii șterg adesea conținutul bazelor de date pentru a face site-urile țintă inaccesibile sau inutilizabile.
Sfat rapid: Faceți o copie de rezervă în mod regulat a site-ului dvs. web!
Mulți dezvoltatori experimentați păstrează copii off-server ale tuturor SQL pe care le-au scris pentru site-urile lor WordPress. Sub formă de fișiere .sql, acestea pot fi utilizate împreună cu un plugin de rezervă WordPress pentru a vă asigura că, chiar dacă un atacator vă poate împiedica securitatea, vă puteți recupera în foarte puțin timp. Un plugin de backup WordPress, cum ar fi BackupBuddy, face backup pentru întreaga bază de date WordPress și pentru orice alte fișiere din instalarea dvs. WordPress.

Tipul de atac SQL Injection explicat
Acum, că am explorat unele dintre daunele pe care le pot provoca atacurile bazate pe SQL, este timpul să explorăm partea mai tehnică a injecțiilor. Există câteva subseturi importante de tipuri de injecție pe care ar trebui să le cunoașteți.
Injecție SQL clasică (SQLi)
Cel mai frecvent tip de injecție, versiunea clasică este atunci când atacatorul cunoaște din timp codul SQL. Acesta este, de asemenea, tipul de injecție cel mai utilizat pe WordPress; deoarece WordPress este open source, publicul larg are acces la toate componentele sale, inclusiv la interogările SQL.
Vom trece la exemple reale puțin mai târziu, dar cu această formă de injecție, atacatorii manipulează deseori interogările pentru a „anula” prima parte a unuia. Apoi, pot introduce o interogare personalizată pe care serverul o va executa ca și cum dezvoltatorul original l-ar fi scris.
Injecție SQL orb (SQLi)
Spre deosebire de versiunea clasică, injecțiile SQL orbe apar atunci când atacatorul nu are acces la codul SQL și trebuie pur și simplu să facă o presupunere educată. În plus, acest tip necesită mult mai multă abilitate decât SQLi tradițional, deoarece rezultatele unui atac reușit nu sunt afișate atacatorului.
Acestea fiind spuse, există multe programe disponibile care ajută utilizatorii rău intenționați să obțină rezultatele lor bit-by-bit automat.
Injecție SLQ compusă (SQLi)
Această formă de atac este atunci când un atac separat este combinat cu SQLi pentru a obține rezultatul dorit. Cel mai sofisticat dintre cele trei subgrupuri, atacatorul trebuie să execute un exploit care să le permită să execute SQLi care nu ar funcționa singur. Exploatările care însoțesc cel mai frecvent SQLi în acest gen de atac sunt încălcări de autentificare, atacuri de negare a serviciului distribuite (DDoS), deturnarea DNS și atacuri de scriptare între site-uri.
De ce site-urile web WordPress sunt vulnerabile la injecțiile SQL?
WordPress este vulnerabil la anumite injecții SQL, deoarece este atât de utilizat (acum powring 40% din toate site-urile web!) Și există de ceva timp (din 2003). WordPress se bazează pe PHP, un limbaj de programare pe partea de server care este conceput pentru a se integra ușor cu MySQL.
WordPress folosește baze de date SQL pentru a stoca aproape totul, de la comentarii la postări la conturi și informații de comerț electronic. Marea majoritate a încercărilor de injecție SQL WordPress sunt pe formulare care trimit date unui script PHP care conține interogarea SQL pe care atacatorul dorește să o exploateze.
Acesta nu este un defect de proiectare, ci mai degrabă un efect secundar al modului în care a fost conceput WordPress. Amintiți-vă, cam tot ceea ce a început înainte și până în „era dot com” nu a fost conceput având în vedere securitatea. De fapt, revista web Phrack, întreruptă acum, a fost prima sursă publică care a discutat SQLi în numărul său din decembrie 1998.
Deși exploatările SQLi inițiale nu funcționează aproape niciodată pe un CMS modern precum WordPress, atacatorii au devenit șmecheri de-a lungul anilor. Vom arunca o privire la un exemplu simplu de cum ar putea arăta SQLi pe un site web complet neprotejat. Apoi, vă vom arăta cum să priviți exploatările existente pentru diferite versiuni de WordPress.
Avertismente importante cu privire la injecțiile SQL
Înainte de a continua, mai avem o notă importantă pe care vrem să o facem destul de clară pentru a vă ajuta să rămâneți pe drumul cel bun împreună cu WordPress și călătoria dvs. de securitate cibernetică!
Menținerea versiunii dvs. de WordPress actualizată este una dintre cele mai bune mijloace de apărare împotriva exploatărilor SQLi. Chiar dacă înseamnă să rupi temporar câteva plugin-uri, merită pentru securitatea site-ului tău.Exemplu de injecție SQL
Acum, că am eliminat aceste declinări de răspundere, să ne uităm la exemple SQLi. Pentru a le înțelege, va trebui să cunoașteți un pic de jargon SQL. SQL folosește comenzi precum SELECT pentru a prelua date, DROP TABLE pentru a distruge complet un tabel dintr-o bază de date, ȘTERGERE pentru a elimina rândurile dintr-un tabel și multe altele. În plus, caracterul „*” înseamnă „toate” în SQL.
Cea mai de bază interogare din SQL este: SELECT * FROM TABLE_NAME. Aceasta spune să imprimați în esență toate datele dintr-un tabel numit „TABLE_NAME”. Când trimiteți date într-un formular de conectare, acestea sunt executate printr-un script PHP care se potrivește cu acreditările dvs. cu un tabel de utilizatori. În exemplul nostru, vom presupune că suntem foarte prost la securitatea cibernetică și că avem un tabel complet necriptat, cu text clar, cu coloane numite USER și PASS.
Pregătirea interogării
În baza noastră de date foarte securizată, tabelul nostru cu nume de utilizator și parole se numește BADLY_DONE_TABLE. Interogarea pentru autentificarea unui utilizator conectat este pur și simplu: SELECT * FROM BADLY_DONE_TABLE WHERE USER = '[nume de utilizator din formular]' ȘI PASS = '[parolă din formular]'.
După cum puteți vedea, spunem să luați „lista” de utilizatori, care ar trebui să fie una singură, dacă numele de utilizator și parola introduse în formular se potrivesc. SQL permite, de asemenea, cuvântului cheie SAU să fie utilizat în instrucțiuni condiționale, cum ar fi ȘI pe care îl vedeți în interogarea noastră.
Acum, este timpul să ne construim exploatarea.
Exploatarea interogării noastre SQL neprotejate
Interogarea noastră este configurată pentru a returna utilizatorul dacă numele nostru de utilizator și parola se potrivesc. Ținând cont de faptul că o singură ofertă va încheia un șir, putem introduce „Blahblahblah” ca nume de utilizator și apoi „SAU” 1 ”=„ 1 ”.
Profităm de faptul că interogarea noastră este formată dinamic și că intrarea nu este „igienizată” înainte de a fi executată. În esență, spunem că dacă numărul „1” este egal cu numărul „1” (în mod surprinzător, da!), Atunci aruncați totul din tabel, indiferent dacă acreditările pe care le-am introdus sunt corecte.
În 1998, acest lucru ar fi funcționat. Acum, este nevoie, în general, de mult mai multă abilitate atât în SQL, cât și în SQLi pentru a crea exploatări de lucru pentru WordPress.
Injecții SQL și site-uri web WordPress
Exemplul nostru anterior nu ar funcționa pe site-urile WordPress moderne, cu excepția cazului în care un administrator de site a depus eforturi pentru a dezactiva toate măsurile de securitate. Cu toate acestea, folosind aceleași principii, hackerii încă creează și vând exploatări SQLi altor utilizatori rău intenționați.
Deoarece WordPress este open source și are o mare comunitate de dezvoltare în spate, mulți cercetători în domeniul securității găsesc adesea aceste exploitări înainte ca un hacker să o facă. Apoi le raportează echipei WordPress, iar exploit-ul devine patch-uri. În unele cazuri nefericite, un hacker localizează primul exploit, făcându-l „în sălbăticie”, forțând echipa WordPress să facă o soluție rapidă cât mai curând posibil și să o lanseze ca o actualizare.
Dacă sunteți interesat să vedeți exploatările de injecție curente și anterioare pentru WordPress, puteți consulta o bază de date CVE. Acesta conține un index al amenințărilor la adresa securității cu numele produsului, versiunile afectate și o descriere generală a modului în care funcționează exploit-ul. Aproape toate exploatările pe care le veți găsi pe astfel de liste sunt deja corecte, dar sunt grozave de folosit ca materiale de învățare.
Prevenirea injecției SQL
După ce ați citit acest lucru, probabil că vă întrebați cum să vă asigurați că site-ul dvs. WordPress nu devine următoarea victimă a unui atac SQLi. Vestea bună este că nu trebuie să fii un profesionist în securitate pentru a te proteja de atacurile SQLi!
- Fiți foarte atenți la orice fișiere PHP pe care le scrieți sau le obțineți de pe alte site-uri și le instalați (în special, pluginuri WordPress). Tot ce trebuie este un script PHP slab făcut, care nu igienizează datele utilizatorilor pentru a vă ruina site-ul WordPress.
- Utilizați un cunoscut plugin de monitorizare a securității, cum ar fi iThemes Security Pro, pentru a vă avertiza în cazul în care cineva încearcă să comită acest atac împotriva site-ului dvs., astfel încât să îl puteți bloca în prealabil.
- Cel mai important, ar trebui să vă mențineți întotdeauna site-ul WordPress actualizat la cea mai recentă versiune. Mulți proprietari de site-uri renunță la actualizare dintr-un motiv sau altul și acesta este motivul pentru marea majoritate a încălcărilor de date.
- Păstrați pluginurile și temele WordPress actualizate. Nu o putem spune suficient. Temele și pluginurile vulnerabile sunt motivul # 1 pentru care site-urile WordPress sunt piratate.
5 pași pentru prevenirea injecțiilor SQL SQL
1. Descărcați și instalați pluginul iThemes Security Pro
Pentru a începe securizarea și protejarea site-ului dvs., descărcați și instalați pluginul iThemes Security Pro.

Obțineți iThemes Security Pro acum
2. Activați gestionarea versiunilor pentru a menține WordPress Core, plugin-uri și teme actualizate
Simplu spus: vă puneți în pericol un atac dacă rulați versiuni învechite de WordPress, pluginuri și teme pe site-ul dvs. web. Actualizările de versiune includ adesea corecții pentru probleme de securitate în cod, inclusiv injecții SQL și vulnerabilități la executarea codului la distanță (RCE), deci este important să rulați întotdeauna cea mai recentă versiune a tuturor software-urilor instalate pe site-ul dvs. WordPress.
Actualizările vor apărea în tabloul de bord WordPress imediat ce sunt disponibile. Faceți o practică de a rula o copie de rezervă și apoi de a rula toate actualizările disponibile de fiecare dată când vă conectați la site-ul dvs. WordPress. Deși sarcina de a rula actualizări poate părea incomodă sau obositoare, este o bună practică importantă de securitate WordPress.

Este greu să țineți evidența fiecărei vulnerabilități WordPress dezvăluite - le urmărim și le împărtășim în buletinele noastre de vulnerabilitate WordPress - și comparăm lista respectivă cu versiunile de pluginuri și teme pe care le-ați instalat pe site-ul dvs. web. Cu toate acestea, acest lucru nu împiedică hackerii WordPress să vizeze pluginuri și teme cu vulnerabilități cunoscute. Instalarea software-ului cu vulnerabilități cunoscute pe site-ul dvs. oferă hackerilor planurile de care au nevoie pentru a prelua site-ul dvs. web.
Funcția de gestionare a versiunilor din pluginul iThemes Security Pro vă permite să actualizați automat WordPress, pluginuri și teme. Dincolo de asta, Managementul versiunilor are, de asemenea, opțiuni pentru a vă întări site-ul atunci când rulați software învechit și pentru a scana site-uri vechi.
Pentru a începe să utilizați gestionarea versiunilor, activați modulul în pagina principală a setărilor de securitate.

Acum faceți clic pe butonul Configurare setări pentru a arunca o privire mai atentă asupra setărilor, toate concepute pentru a vă proteja site-ul.

- Actualizări WordPress - Instalați automat cea mai recentă versiune WordPress.
- Actualizări de pluginuri - Instalați automat cele mai recente actualizări de pluginuri. Activarea acestei setări va dezactiva caracteristica pluginurilor de actualizare automată WordPress pentru a preveni conflictele.
- Actualizări teme - Instalați automat cele mai recente actualizări tematice. Activarea acestei setări va dezactiva caracteristica temei de actualizare automată WordPress pentru a preveni conflictele.
- Consolidați site-ul atunci când rulați software depășit - Adăugați automat protecții suplimentare site-ului atunci când nu a fost instalată o actualizare disponibilă de o lună.
- Scanare pentru site-uri WordPress vechi - Rulați o scanare zilnică a contului de găzduire pentru site-uri WordPress vechi care ar putea permite unui atacator să compromită serverul. Un singur site WordPress învechit cu o vulnerabilitate ar putea permite atacatorilor să compromită toate celelalte site-uri de pe același cont de găzduire.
- Actualizare automată dacă remediază vulnerabilitatea - Această opțiune funcționează în tandem cu scanarea site-ului iThemes Security Pro pentru a verifica site-ul web pentru a cunoaște vulnerabilitățile WordPress, plugin și temă cunoscute și pentru a aplica un patch atunci când este disponibil.
3. Scanați site-ul dvs. pentru a găsi pluginuri și teme vulnerabile
IThemes Security Pro Site Scanner este un alt mod de a vă proteja și proteja site-ul WordPress de prima cauză a tuturor hacks-urilor software: plugin-uri învechite și teme cu vulnerabilități cunoscute. Site Scanner verifică site-ul dvs. pentru vulnerabilități cunoscute și aplică automat un patch dacă este disponibil.
Cele 3 tipuri de vulnerabilități WordPress verificate
- Vulnerabilități WordPress
- Vulnerabilități ale pluginului
- Vulnerabilități tematice
Pentru a activa scanarea site-ului la noile instalări, navigați la setările iThemes Security Pro și faceți clic pe butonul Activare din modulul Setări scanare site .

Pentru a declanșa o scanare manuală a site-ului, faceți clic pe butonul Scanare acum de pe widgetul de scanare a site - ului situat în bara laterală dreaptă a setărilor de securitate.

Rezultatele scanării site-ului vor fi afișate în widget.

Dacă Scanarea site-ului detectează o vulnerabilitate, faceți clic pe linkul de vulnerabilitate pentru a vizualiza pagina de detalii.

În pagina vulnerabilității Site Scan, veți vedea dacă există o remediere disponibilă pentru vulnerabilitate. Dacă există un patch disponibil, puteți face clic pe butonul Actualizare plugin pentru a aplica remedierea pe site-ul dvs. web.
Poate exista o întârziere între momentul în care un patch este disponibil și Baza de date iThemes Security Vulnerability este actualizată pentru a reflecta remedierea. În acest caz, puteți dezactiva notificarea pentru a nu mai primi alerte legate de vulnerabilitate.
4. Activați Detectarea modificărilor de fișiere
Cheia pentru identificarea rapidă a unei încălcări de securitate este monitorizarea modificărilor fișierelor de pe site-ul dvs. web. Funcția de detectare a modificărilor de fișiere din iThemes Security Pro va scana fișierele site-ului dvs. web și vă va avertiza când apar modificări pe site-ul dvs. web.
Există mai multe motive legitime pentru care ați vedea o nouă activitate de modificare a fișierelor în jurnalele dvs., dar dacă modificările făcute ar fi neașteptate, ar trebui să vă alocați timp pentru a vă asigura că modificările nu au fost dăunătoare. De exemplu, dacă vedeți o modificare făcută unui plugin la aceeași dată și oră în care ați actualizat pluginul, nu ar exista niciun motiv pentru a investiga
Pentru a începe monitorizarea modificărilor de fișiere, activați Detectarea modificărilor de fișiere pe pagina principală a setărilor de securitate.

Odată activată opțiunea Detectarea modificărilor de fișiere, iThemes Security Pro va începe să scaneze în bucăți toate fișierele site-ului dvs. web. Scanarea fișierelor în bucăți va ajuta la reducerea resurselor necesare pentru a monitoriza modificările fișierului.
Scanarea inițială a modificării fișierului va crea un index al fișierelor site-ului dvs. web și a hash-urilor acestora. Un hash de fișier este o versiune scurtată, care nu poate fi citită de om, a conținutului fișierului.
După finalizarea scanării inițiale, iThemes Security Pro va continua să vă scaneze fișierul în bucăți. Dacă un hash de fișier se modifică la una dintre scanările ulterioare, înseamnă că conținutul fișierului s-a modificat.
De asemenea, puteți rula o modificare manuală a fișierului făcând clic pe butonul Scanare fișiere acum din setările Detectare modificări fișiere

Modificările fișierelor au loc tot timpul și primirea unei alerte prin e-mail pentru fiecare modificare ar deveni rapid copleșitoare. Și înainte să știți, devine un băiat care a plâns de situația lupului și începeți să ignorați complet alertele de modificare a fișierelor.
Vestea bună este că iThemes Security Pro identifică în mod inteligent modificările legitime pentru a reduce notificările și modul în care puteți dezactiva notificările pentru fișierele care se așteaptă să se actualizeze frecvent. Puteți gestiona toate notificările iThemes Security din Centrul de notificări din pluginul iThemes Security. Din tabloul de bord al administratorului WordPress, accesați Securitate> Setări și localizați modulul Centrul de notificări .
5. Activați autentificarea în doi factori pentru utilizatorii care aduc modificări site-ului web
Autentificarea cu doi factori este un proces de verificare a identității unei persoane prin necesitatea a două metode separate de verificare. Google a împărtășit pe blogul său că utilizarea autentificării cu doi factori poate opri 100% din atacurile automate de bot. Nu sunt cote rele!
Pluginul iThemes Security vă permite să activați autentificarea în doi factori pentru site-ul dvs. WordPress, astfel încât utilizatorii trebuie să introducă un cod secundar pentru a se conecta.
Cele trei metode de autentificare cu doi factori furnizate de iThemes Security Pro includ:
- Aplicație mobilă - Metoda aplicației mobile este cea mai sigură metodă de autentificare cu doi factori furnizată de iThemes Security Pro. Această metodă necesită utilizarea unei aplicații mobile gratuite cu doi factori, cum ar fi Authy sau Google Authenticator.
- E - mail - Metoda de e-mail cu doi factori va trimite coduri sensibile la timp la adresa de e-mail a utilizatorului dvs.
- Coduri de rezervă - Un set de coduri de utilizare unice care pot fi utilizate pentru a vă conecta în cazul în care metoda primară cu doi factori este pierdută.
Pentru a începe să utilizați autentificarea cu doi factori pe site-ul dvs. web, activați caracteristica de pe pagina principală a setărilor iThemes Security Pro.

Urmați pașii de aici pentru a continua configurarea autentificării cu doi factori pentru site-ul dvs. WordPress. Dacă ați urmat recomandările noastre și ați activat cerințele de forță pentru utilizatorii privilegiați, următorul lucru pe care îl veți vedea este locul în care introduceți simbolul cu doi factori.

Încheierea: către un web mai sigur, împreună
Nu vă faceți griji dacă vă simțiți un pic copleșiți când descoperiți toate potențialele amenințări la adresa securității care caută site-ul dvs. WordPress. Adevărul este că amenințările sunt multe, dar soluțiile pot fi simple.
Sperăm că acest ghid te-a ajutat să înțelegi riscul atacurilor de injecție SQL pe site-ul tău WordPress. Implementând câteva bune practici de securitate WordPress, împreună cu cei 5 pași de mai sus, veți avea o linie de apărare mai bună.
Kristen a scris tutoriale pentru a ajuta utilizatorii WordPress din 2011. De obicei, o puteți găsi lucrând la articole noi pentru blogul iThemes sau dezvoltând resurse pentru #WPprosper. În afara muncii, Kristen se bucură de jurnal (a scris două cărți!), Drumeții și camping, gătit și aventuri zilnice cu familia ei, sperând să ducă o viață mai prezentă.
