Testare de penetrare pentru site-urile WordPress

Publicat: 2020-03-20

WordPress alimentează o mulțime de site-uri web de pe Internet. Așa că nu este surprinzător faptul că atacatorilor experimentați și „copiilor cu scenarii” le place să vizeze site-urile WordPress. Indiferent dacă sunteți webmaster sau profesionist în securitate, atunci când sunteți însărcinat cu evaluarea poziției de securitate a unui site web WordPress, tinde să vă ajute să fiți conștienți de capcanele comune de securitate de care profită de obicei atacatorii. De asemenea, este important să folosiți instrumentele potrivite de testare a penetrației.

În acest articol, voi acoperi o serie de găuri de securitate comune, malpraxisuri și informații utile pe care un atacator le poate abuza în multe instalări WordPress. De asemenea, voi evidenția o serie de instrumente pe care ar trebui să le utilizați pentru a vă ajuta să automatizați testul de penetrare WordPress.

Atenție — Efectuați teste de penetrare a securității numai pe sistemele care vă aparțin sau vi s-a acordat permisiunea. Înțelegeți limitele accesului care vi s-a acordat și rămâneți în aceste limite.

Probleme comune de securitate și malpraxisuri WordPress

Versiuni învechite ale codului WordPress

Rularea versiunilor vechi ale nucleului WordPress care conțin vulnerabilități de securitate este, fără îndoială, una dintre cele mai comune găuri de securitate legate de WordPress. În timp ce versiunile mai noi de WordPress facilitează upgrade-ul la cea mai recentă versiune, nu este neobișnuit ca site-urile WordPress mai vechi să rămână în urmă.

Rularea unei versiuni vechi de WordPress pe Internet este o bombă cu ceas. Multe versiuni vechi de WordPress conțin vulnerabilități de securitate. Multe dintre aceste probleme de securitate sunt de obicei exploatate în masă de către atacatori.

Când auditați un site web WordPress pentru vulnerabilități de securitate, acesta este de obicei unul dintre primele lucruri pe care ați dori să le verificați. Din fericire pentru atacatori, în mod implicit, WordPress adaugă o metaetichetă HTML care conține versiunea WordPress utilizată.

<meta name="generator” content="WordPress 4.8.11″ />

Știind că o instalare WordPress rulează o versiune veche, ar putea oferi unui atacator oportunitatea de a profita de o vulnerabilitate cunoscută. Utilizați baza de date cu vulnerabilități de securitate CVE pentru a căuta probleme de securitate cunoscute în miezul WordPress.

Versiuni învechite ale temelor și pluginurilor WordPress

Nucleul WordPress este foarte sigur. Milioane de utilizatori și hackeri rău intenționați deopotrivă testează și revizuiesc în detaliu codul. Aceasta înseamnă că de cele mai multe ori, problemele de securitate sunt identificate și remediate înainte de a fi abuzate de atacatori. Cu toate acestea, nu este imun la vulnerabilitățile de securitate. Din păcate, acest lucru nu se aplică miilor de pluginuri și teme WordPress.

Oricine poate trimite o temă sau un plugin și le poate pune la dispoziție pentru orice administrator WordPress pentru descărcare și utilizare. Desigur, acest lucru nu înseamnă că fiecare plugin WordPress este prost codificat și plin de vulnerabilități - departe de asta. Cu toate acestea, vulnerabilitățile cunoscute expun o suprafață masivă de atac WordPress de care ar trebui să fiți conștienți atunci când efectuați un test de penetrare WordPress.

Cel mai rapid și, fără îndoială, cel mai cuprinzător instrument de utilizat pentru amprentarea pluginurilor și temelor vulnerabile WordPress este utilizarea WPScan. WPScan este un scaner de securitate WordPress cu sursă neagră, folosit frecvent pentru a scana site-urile WordPress pentru vulnerabilități cunoscute din nucleu, pluginuri și teme.

Când utilizați WPScan în timpul unui pentest, asigurați-vă că vă înregistrați și îl configurați pentru a utiliza o cheie API WPScan Vulnerability Database . WPScan Vulnerability Database este o bază de date întreținută de autorii WPScan cu cele mai recente vulnerabilități cunoscute și versiunile lor respective.

Pluginuri de amprentă cu WPScan

Pentru mai multe despre WPScan și despre cum să rulați diferite tipuri de scanări, consultați noțiunile de început cu WPScan.

Versiuni vechi de PHP și servere web

WordPress este o aplicație web PHP și, prin urmare, toate cele mai bune practici de securitate PHP se aplică și WordPress. În timpul unui test de penetrare WordPress, acesta este unul dintre primele lucruri pe care trebuie să le căutați. Instalările WordPress care rulează versiuni vechi de PHP sau software de server web (de exemplu, Nginx, Apache HTTP Server, IIS...) pot expune site-ul web la tot felul de atacuri diferite.

Este foarte ușor să vă dați seama ce server web și versiunea PHP folosește un site web WordPress. În multe cazuri, tot ce trebuie să facă un atacator este să acorde o atenție deosebită antetelor de răspuns HTTP returnate de pe site. Puteți trimite singur o solicitare cu curl:

$ curl -s -D – http://167.71.67.124/ -o /dev/null | grep -i „Server\|X-Powered-By”

Căutați antetele Server și X-Powered-By HTTP în răspuns:

Server: Apache/2.4.29 (Ubuntu)
X-Powered-By: PHP/5.5.9

În funcție de versiunea și configurația site-ului web, un atacator poate fi capabil să utilizeze vulnerabilități cunoscute (de ex. https://www.cvedetails.com/vendor/74/PHP.html) pentru a obține informații suplimentare despre o țintă. Astfel de informații pot ajuta la escaladarea unui atac sau chiar la executarea comenzilor direct pe serverul web.

Enumerarea numelui de utilizator WordPress

Cu excepția cazului în care un administrator de sistem a luat măsuri pentru a o preveni, în mod implicit, WordPress este vulnerabil la atacurile de enumerare a utilizatorilor. Atacurile de enumerare a utilizatorilor WordPress, căutați diferențe subtile în modul în care WordPress răspunde la anumite solicitări. În funcție de răspuns, atacatorul poate determina dacă un utilizator există sau nu, permițându-i unui atacator să utilizeze aceste informații ca parte a unui atac mai mare.

Următoarea este o captură de ecran a WPScan care efectuează un atac de enumerare a numelui de utilizator WordPress.

Enumerarea utilizatorilor WPScan și spargerea parolelor

Configurații greșite ale serverului web

Listarea directoarelor și alte configurări greșite ale serverului web

În afară de software-ul învechit, trebuie întotdeauna să evaluați orice potențiale configurare greșită a serverului web. Un server web configurat greșit ar putea lăsa site-ul web WordPress vulnerabil la exploatare. Acest lucru se poate întâmpla chiar dacă serverul web rulează cel mai recent software. Iată câteva configurații greșite tipice ale serverului web:

Listare de directoare activată

Listarea directorului este o configurare greșită foarte frecventă. Serverele web Apache au acest lucru activat în mod implicit și asta nu ajută. Lista de directoare listează pur și simplu fișierele și directoarele de pe un server web într-o interfață grafică atunci când nu există niciun fișier index.

Lista de director este activată pe un server web Apache

Deși acest lucru în sine nu este deosebit de dăunător, oferă unui atacator posibilitatea de a răsfoi conținutul directorului serverului dvs. web. Acest lucru i-ar putea permite să vadă toate fișierele de pe site-ul dvs., dintre care majoritatea nu ar trebui să fie accesibile public, dar sunt, cum ar fi copii de rezervă, parole și fișiere de configurare.

Fișiere de rezervă

Fișierele de rezervă sunt o altă configurație greșită a serverului web prea frecventă. De obicei, acestea apar atunci când administratorii de sistem editează manual fișierele pe sistemele de producție.

Un exemplu comun de fișiere de rezervă care expun informații potențial sensibile ar putea fi copiile de rezervă ale fișierelor PHP. Uneori, fișierele PHP conțin date de configurare importante - cum ar fi fișierul wp-config.php al WordPress.

Luați următorul scenariu - un administrator WordPress trebuie să facă modificări la wp-config.php. În loc să urmeze cele mai bune practici și să păstreze o copie a fișierului în altă parte decât serverul web, ei fac o copie a fișierului live wp-config.php, denumind backup-ul wp-config.php.bak. Să presupunem acum că administratorul de sistem a uitat să elimine acest fișier, ceea ce se întâmplă mai des decât credem.

Un atacator poate citi acum fișierul prin simpla solicitare a http://www.example.com/wp-config.php.bak . Atacatorul poate citi fișierul deoarece extensia lui nu mai este .php. Deci, motorul PHP îl ignoră și serverul web îl servește ca fișier text. Acum atacatorul știe acreditările bazei de date WordPress, tokenurile secrete și orice alte informații de configurare sensibile pe care le-ați salvat în acel fișier.

Fișiere temporare

Similar cu fișierele de rezervă, fișierele temporare aflate într-o locație greșită pot expune date potențial sensibile. Luând din nou wp-config.php ca exemplu. Dacă un administrator de sistem ar trebui să editeze acest fișier folosind un editor de text și, din anumite motive, programul nu a ieșit curat, există șanse mari ca editorul să lase fișiere temporare. De exemplu, popularul editor de linie de comandă Vim stochează fișiere de rezervă cu extensia fișierului *.ext~ împreună cu un fișier *.ext.swp. Fișierele swp sunt folosite ca fișier de blocare. Acestea conțin, de asemenea, tot istoricul de anulare/refacere și alte informații interne de care Vim are nevoie.

Prin urmare, în cazul unui accident, Vim lasă în urmă un fișier wp-config.php.ext~ care poate fi accesibil în text simplu, cum ar fi fișierele de rezervă, deoarece nu se termină cu o extensie de fișier *.php. Fișierele temporare de acest fel nu sunt exclusiv pentru Vim — Emacs (un alt editor de text popular în linie de comandă) salvează, de asemenea, fișiere temporare similare, precum și nenumărate alte instrumente.

Atenție — utilizați un plugin de monitorizare a integrității fișierelor pentru site-ul dvs. web pentru a fi alertat cu privire la toate modificările fișierelor, inclusiv fișierele temporare și de rezervă. Dacă nu sunteți familiarizat cu această tehnologie, citiți introducerea noastră despre monitorizarea integrității fișierelor pentru WordPress.

MySQL expus

De departe, una dintre cele mai grave configurări greșite pe care le poate face un administrator de sistem este să-și lase serverul de baze de date WordPress MySQL deschis pe Internet. De ce acest lucru poate suna nebunesc, probabil se întâmplă mai mult decât crezi. Mai jos este o captură de ecran de la Shodan, un motor de căutare pentru dispozitive conectate la Internet.

Rezultatele în Shodan pentru serverele MySQL

Desigur, doar pentru că MySQL este expus pe Internet nu înseamnă că cineva se poate conecta la el și accesa baza de date WordPress. Cu toate acestea, mai ales dacă este utilizat în combinație cu alte atacuri, cum ar fi o parolă scursă printr-o copie de rezervă a wp-config.php sau ghicirea unei parole slabe, ar putea duce la un scenariu de dezastru.

Odată ce aveți controlul asupra unei baze de date WordPress, jocul sa terminat pentru o instalare WordPress. Tot ce trebuie să facă un atacator este să resetați parola de administrator. Apoi preia aproape controlul deplin asupra site-ului dvs. WordPress și, potențial, chiar și a serverului pe care rulează, instalând în mod intenționat pluginuri rău intenționate.

Rularea serviciilor inutile

O altă problemă comună de configurare greșită a serverului web este configurația implicită. Mulți administratori rulează configurația implicită și nu dezactivează serviciile de care nu au nevoie. În cele mai multe cazuri, instalările implicite rulează o mulțime de servicii inutile, majoritatea dintre acestea, dacă nu sunt securizate, expun serverul web la atacuri.

Instrumente de Pentesting pentru testerii de penetrare WordPress și profesioniștii în securitate

Testerii de penetrare folosesc o varietate de instrumente pentru a-și automatiza munca și tehnicile. Automatizarea ajută la reducerea timpului necesar pentru efectuarea unei evaluări de securitate/test de penetrare.

Kali Linux

Instrumentele pe care le folosești variază foarte mult. Depinde de preferințele personale și de problema în cauză. Cu toate acestea, un bun loc de a începe este să aveți la dispoziție o varietate de instrumente, preinstalate.

Kali Linux

Kali Linux, cunoscut anterior ca BackTrack, este distribuția Linux de testare a pătrunderii open source. Kali Linux vine la pachet cu o serie întreagă de instrumente preinstalate și pre-configurate. Este util atât pentru utilizatorii începători care doresc să înceapă rapid, cât și pentru testeri de penetrare experimentați. Kali Linux este disponibil gratuit și poate rula pe o mașină virtuală.

Nmap

Acest scaner gratuit este unul dintre cele mai fundamentale și versatile scanere din arsenalul oricărui pentester. Nmap este în primul rând un scanner de porturi. Cu toate acestea, poate fi extins pentru a face tot felul de tipuri diferite de scanare prin limbajul său de scripting NSE.

Scanerul NMAP

WPScan

WPScan (acoperit mai devreme în acest articol) este un scaner de securitate WordPress open source. Scanează pentru vulnerabilități cunoscute WordPress - atât în ​​nucleul WordPress, cât și în cadrul pluginurilor și temelor WordPress.

Scaner WPScan

WPScan poate efectua o serie de teste cutie neagră. Adică fără acces la codul sursă. Ca rezultat, WPScan este excelent pentru a găsi rapid și precis vulnerabilitățile WordPress care nu se blochează.

OWASP ZAP

OWASP Zed Attack Proxy (ZAP) este un instrument gratuit, open-source, de testare a penetrarii aplicațiilor web. Proiectul Open Web Application Security (OWASP) menține aceste instrumente. OWASP ZAP este conceput special pentru testarea aplicațiilor web pentru o mare varietate de vulnerabilități, cum ar fi Cross-site Scripting (XSS) și SQL Injection (SQLi). ZAP, la baza sa este un proxy. Se află între browserul pentesterului și site-ul web pentru a intercepta și inspecta cererile trimise între cei doi.

Scaner OWASP ZAP

Pe lângă faptul că acționează ca un proxy, ZAP poate testa automat o varietate de vulnerabilități și poate, de asemenea, să fuzz o varietate de intrări. Fuzzing este o tehnică de testare a securității în care se furnizează intrări nevalide sau neașteptate unei aplicații cu intenția de a descoperi vulnerabilitățile de securitate.

Testare de penetrare pentru WordPress – evaluarea poziției de securitate a site-ului dvs

Securitatea WordPress nu este o soluție unică. Este un proces continuu bazat pe patru principii: Harden > Monitor > Test > Improve. Cu testarea de penetrare abordați principiul testului . Adică verificați starea de securitate a site-ului dvs. Apoi puteți lua măsurile necesare pentru a îmbunătăți configurația pe baza constatărilor dvs.

Prin urmare, testarea frecventă a site-ului WordPress ar trebui să facă parte din programul dvs. de securitate. Tu judeci cât de des ar trebui să faci teste de penetrare. Dacă faceți modificări frecvente site-ului dvs., atunci ar trebui să faceți teste frecvente. Cu toate acestea, un test de penetrare trimestrial face treaba dacă site-ul dvs. web primește rar o actualizare.