WordPress je CMS – content management system, softver koji omogućava autorizovanim korisnicima, da na lak način objavljuju sadržaj na sajtu. Veoma je popularan i smatra se da wordpress pokreće skoro trećinu svih dostupnih sajtova na internetu. Budući da ima konkurenciju, u vidu besplatnih i komercijalnih CMS rešenja, ovaj podatak znači da wordpress ili nudi nešto što drugi nemaju ili nešto postoji što kod drugih ne postoji.
Bilo kako bilo, WP je besplatan softver, na koji možete dodati različite plugin-ove koji dalje proširuju njegove osnovne funkcionalnosti.
To u prevodu znači, da njegov kod koji ga pokreće, je javno dostupan svima na uvid, pa i zlonamernicima koji traže tzv sigurnosne rupe, iskorišćavaju ih i nakon toga pišu svoje programe, koji traže i upravo pokušavaju da koristeći te rupe, obore vaše sajtove, ili pokradu podatke. Ne volim da pričam o stvarima koje mogu da se dese, jer smo se i mi do sada uhvatili u koštac sa par sajtova koji su bili oboreni. Rešili smo da napravimo neko uputstvo, šta možemo uraditi da sajt koji je oboren, opet postane funkcionalan.
Potencijalne sigurnosne rupe
Osnovni kod wordpress-a se ažurira konstantno, od strane programerskog tima wordpress-a. Sigurnosne rupe ili bagovi(security bugs), koje se potencijalno mogu javiti, se jako brzo i zaptivaju i rešavaju. Postoji šansa da neko pronađe neku rupu, i da bude dovoljno brz da napravi program koji će češljati web i tražiti wordpress sajtove sa baš tom verzijom wordpress-a, ali procentualno, to je baš retko.
Glavnina napada koristi rupe u dodacima(plugins), kojima omogućavamo dodatne funkcionalnosti na sajtu. Trenutno je dostupno i registrovano oko 50.000,00 plugin-ova koje možete instalirati u wordpress-u i time potencijalno nesvesno otvoriti vrata hakeru da taj sajt obori ili se okoristi nekim podacima tog sajta – krađa podataka. WordPress plugin-ovi, kao i WP core, takođe mogu da zastare, da se na ažuriraju na poslednje verzije, iz ovog ili onog razloga, što takođe može napraviti probleme ovog tipa, jer sa update-ima, dolaze i ispravke koda, dorade i najčešće se otklanjaju potencijalni sigurnosni ili bilo koji drugi bagovi – greške u kodu.
Brute force tehnika, je jedna od tehnika koja se takođe koristi za napad i upad u admin sekciju wordpress-a, koja je branjena kombinacijom korisničkog imena i lozinke. Ovom tehnikom, specijalno pisani programi, koriste nasumične kombinacije hiljade različitih korisničkih imena i lozinki, dok ne dobiju dobitnu kombinaciju, odnosno dobiju pristup admin panelu.
Polja za upload podataka – file upload polja, takođe su zgodna, kako bi se preko njih upload-ovala zlonamerna skripta, koja se nakon toga pokreće, ili direktnom posetom preko url-a ili na neki drugi način, koja nakon uspešnog izvršenja, može ugroziti sve fajlove hostovane na serveru.
Polja za unos podataka – input polja, su zgodna da sa njima probate tzv mysql injection, odnosno da sa znacima navoda, praktično prekinete SELECT sql upit, kojim se prikazuju podaci na sajtu, i da nakon prekidanja, upišete svoje upit i obrišete neku od unapred poznatih tabela wordpress-a, npr wp_posts – DELETE FROM wp_posts
. Zato je bitno da promenite prefiks tabele u nešto što samo vi znate, npr u gsm_posts
.
Spomenuli smo najpopularnije tehnike, kako bi dalje mogli da se informišite u cilju otklanjanja ovih propusta, a mi se sada nećemo baviti otklanjanjem uzroka, samo saniranjem posledice.
Koraci za rešavanje problema
Svaki sajt je priča za sebe, koristi teme koje su pisane na ovaj ili onaj način, pa samim tim, univerzalno uputstvo ne može biti napisano, ali možemo proceniti sa čim imamo posla:
- popis štete – popišite sve što ustanovite, poput – dropovana je baza podataka(najteži vid hakovanja), virusom su inficirani fajlovi na serveru, obrisani ili izmenjeni fajlovi koji čine vaš sajt(slike ili php fajlovi).
- istraživanje – posle popisa, pokušajte da saznate više o napadaču, o tehnici napada, o načinu na koji način je napad izvršen (analiza logova i sl). To je bitan korak pre samog popravljanja, kako bi nakon popravke mogli da rešite te probleme. Generalno nije loše ni pokušati da google-ate više o tome i na taj način dobijete više informacija. Ovi napadi su uglavnom serijski, gde prođu – prođu, i najverovatnije niste jedini kome se ovo već desilo na identičan način.
- popravka – nakon prve dve faze, saznaćete šta je sve pokvareno, odnosno šta sve treba da uradimo da vratimo sajt u život i nakon toga osiguramo da to takvog napada više ne dođe.
Popravka sajta nakon hakovanja – standardni koraci
- Popišite sve plugin-ove koje sajt koristi (wp-content/plugins folder) i sve ih obrišite nakon popisa
- obrišite foldere wp-admin i wp-includes kao i sve fajlove u root folderu, osim wp-config.php fajla (isti folder gde su se nalazili wp-admin i wp-includes)
- u wp-content folderu obrišite sve foldere osim themes, uploads, mu-plugins. Skenirajte ceo wp-content folder sa nekim antivirus programom za svaki slučaj (što znači da sa ovim fajlovima se igrajte na svom kompjuteru, kada ih prebacite sa servera).
- Ručno analizirajte sadržaj:
- [root]/wp-config.php – imate online default primere ovog fajla, pogledajte da li ima nešto čudno u njemu, ali uglavnom samo prebacite pristupne parametre ka bazi podataka (DB_NAME, DB_HOST, DB_USER, DB_PASS) i šta god mislite da vašem sajtu treba od tih varijabli, ili nemojte ga menjati ukoliko možete da potvrdite da taj fajl nije ugrožen/promenjen.
- [root]/wp-content/themes – obrišite sve teme koje vaš sajt ne koristi, a folder teme koju vaš sajt koristi – analizirajte kod i pretražite da li ima nekih sumnjivih izmena
- [root]/wp-content/uploads – obrišite sve što nije dokument ili slika, foldere koji imaju imena kao godine i unutar njih foldere koji imaju imena meseci – ne brišite. Otvorite ih i iz njih obrišite samo fajlove koji nisu slike ili dokumenta koje ste prethodno uploadovali kroz wordpress. Ovde najverovatnije nema mesta fajlovima koji se završavaju sa bat, exe, php ekstenzijom, pa za takve fajlove procenite da li vam trebaju i dalje ili ne.
- [root]/wp-content/mu-plugins (ako postoji uopšte, analizirajte i isto kao iznad, ukoliko procenite da su ugroženi, obrišite neželjene linije)
- Opcionalno: u wp-config.php fajlu, promenite prefix baze, iz npr „wp_“ u nešto drugo (php promenljiva
$table_prefix
), samo imajte u vidu da ćete naknadno morati da izvršite mysql upit nad podacima u bazi podataka da implementirate nov prefiks, odnosno pokrenete sajt opet. Ovo takođe možete uraditi koristeći aplikaciju search / replace, gde biste tražili stari prefiks „wp_“ i zamenili ga sa „prefiks2_“ na primer. - Opcionalno: promenite salt keys – postoji generator ovih ključeva – evo i linka – salt key generator, sve što trebate da uradite je copy/paste u wp-config.php fajl, na odgovarajuće mesto – naći ćete u wp-config.php postojeće ključeve, koje ćete zameniti.
ili, vratite sajt iz prethodnog backup-a… Sad vidite, koliko redovan backup može da vam uštedi vremena? U ovom slučaju, bavili bi ste se samo popisom i istraživanjem, pre vraćanja sajta iz backup-a.
Šta još može da se uradi?
Zašto bi samo stali na otklonu posledice:
- Instalirajte neki sigurnosni plugin, kojim ćete dodatno zaštiti vaš wordpress sajt – preporuka wordfence.
- Instalirajte recaptcha, verziju 3 ili verziju 2 na vaš sajt, i dodajte je na svaki formular, pa i na login formular (to se lako može rešiti preko wordfence plugin-a koji sam spomenuo iznad)
- Opcionalno pomerite /wp-login.php, /wp-admin, /wp-login putanje na nešto sigurnije, poput /perino-login-mesto , kako biste se bolje zaštitili od brute force-a
- Obezbedite regularne backup-e baze podataka i vaših fajlova. Imajte u vidu da što češće radite backup baze, nećete toliko podataka izgubiti, ako vratite bazu iz backup-a. Interval backup-a, je na vama da osmislite.
- Ojačajte .htaccess – na internetu ima pregršt tutorijala koji se ovom tematikom bave
- Onemogućite listing fajlova foldera, preko url-a, kada pogodite url foldera.
- Opcionalno: uklonite metatag-ove iz html-a koji otkrivaju dodatne podatke vaše wordpress instalacije, poput:
- generator
- wlwmanifest
- EditURI
- pingback
- Opcionalno: uklonite potpis servera – server signature
Zaključak
Držite plugin-ove update-ovane, gledajte koliko ljudi je već instaliralo neki plugin, proverite da li plugin odgovara vašoj verziji wordpress-a, držite teme update-ovane i ne razvijajte teme bazirane na specifičnim verzijama plugin-ova. Prilikom programiranja, razmišljajte o sigurnosti sajta i vaš sajt će najverovatnije odoleti zubu vremena/hakera. Ako ne, vratite se na početak ovog dokumenta i čitajte opet.
Komentari