Kako rešiti najčešće WordPress ranjivosti - vodič za bezbednost Idi do glavnog sadržaja

Kako rešiti najčešće WordPress ranjivosti

WordPress je jedan od najčešće korišćenih CMS alata otvorenog koda, koji pokreće milione web sajtova. Nažalost, ova popularnost učinila ga je ujedno i veoma poželjnom metom za web napadače. Iako WordPress tim blagovremeno objavljuje bezbednosne preporuke kako bi zaštitio web sajtove od potencijalnih bezbednosnih problema, ponekad i neažurnošću samih vlasnika neki sajtovi ostaju i dalje ranjivi. Zato ćemo mi u ovom tekstu objasniti kako rešiti najčešće WordPress ranjivosti.

Ranjivost ubrizgavanja sadržaja WordPress REST API-ja

Ova vrsta ranjivosti omogućava neovlašćenom korisniku da promeni sadržaj bilo kog bloga, posta ili stranice u okviru WordPress web sajta. Kada se web aplikacijom ne rukuje bezbedno, ona postaje laka meta za WordPress hakere koji onda mogu da isporuče sadržaj preko vrednosti parametra koja će modifikovati sadržaj stranice. Pošto je stranica povezana sa pouzdanim domenom, korisnik veruje da je određeni sadržaj koji se pojavljuje na web sajtu legitiman i da nije iz nekog sumnjivog spoljnog izvora.

Zlonamerni linkovi su napravljeni posebno sa motivom da se praktično lažiraju obrazac za prijavu i ukradu osetljive podatke, na primer, kredencijale za prijavu. Ovi linkovi se šalju korisniku putem e-maila. Ako korisnik poseti stranicu označenu zlonamernim URL-om i prijavi se na nalog verujući da gleda autentičan sadržaj, to pruža mogućnost napadaču da iskoristi sadržaj web-sajta i zloupotrebi poverenje korisnika. Dobar način odbrane u ovom slučaju je aktivacija 2-faktorske autentifikacije.

Kako popraviti ranjivost ubrizgavanja sadržaja u WordPress-u?

Jedini način da zaštitite svoj web sajt od ove vrste napada je da ažurirate svoj web sajt najnovijim verzijama WordPress-a, koje ujedno sadrže i bezbednosne ispravke.

Omogućite automatska ažuriranja na svojim web sajtovima što je pre moguće. Da biste omogućili automatska ažuriranja u WordPress verzijama 3.7 ili novijim, moraćete da potražite kod koji se koristi za onemogućavanje ove opcije u wp-config.php.

  • Prijavite se na svoj cPanel
  • Otvorite File manager, a zatim uđite u instalacione fajlove WordPress-a. Moraćete da pronađete wp-config.php. fajl
  • Potražite liniju define( 'AUTOMATIC_UPDATER_DISABLED', true );
  • Kada ovu pronađete liniju, izbrišite je iz WP-CONFIG.PHP fajla
  • Kliknite na Save da biste sačuvali promene.

Ažurirajte i plugine da biste izbegli ubrizgavanje bilo koje vrste ubrizgavanja kratkih kodova specifičnih za neki konkretan plugin.

Stored Cross-Site Scripting ranjivost (XSS)

XSS ranjivost je jedan od najčešćih napada u kojima se zlonamerni kod ubacuje direktno u ranjivu web aplikaciju. Ova ranjivost se javlja unutar WordPress editora, koji služi za kreiranje i uređivanje svih WordPress postova, stranica i tema.

Napadač ubacuje zlonamernu skriptu na vaš web sajt, a onda zatim krade kolačiće sesije za svakog posetioca sajta. Naravno na taj način lako može ukrasti i različite osetljive podatke. Delujući sa administratorskim privilegijama, on može da šalje autentifikovane zahteve za editovanje trenutnog PHP koda web sajta, što dovodi do daljinskog izvršavanja komandi (RCE) i potpunog preuzimanja sajta od strane napadača.

Kako da rešite XSS ranjivost

Redovno ažurirajte svoju WordPress verziju. Ako vam je na sajtu omogućeno automatsko ažuriranje, trebalo bi već da imate poslednju verziju WordPress-a, što znači da ste ujedno i zaštićeni od ove vrste ranjivosti.

Pored toga, poželjno je i da instalirate plugin pod nazivom Prevent XSS Vulnerability.

SQL injection i hakovanje URL adresa

SQL je standardni komandni jezik koji se koristi u MySQL bazi podataka. WordPress SQL injection je vrsta napada koji se pokreće ugrađivanjem komandi u URL koji otkriva osetljive informacije o bazi podataka i na taj način dozvoljava hakeru da uđe na web sajt i potencijalno promeni originalni sadržaj vaše web stranice.

Kako rešiti SQL injection u WordPress-u?

Zaštitite upite od SQL injection napada.

Većina instalacija WordPress-a se nalazi na popularnom Apache web serveru. koji koristi .htaccess fajl koji definiše pravila pristupa za vaš web sajt.

Detaljan set pravila može da spreči dekodiranje mnogih tipova SQL injection napada i URL hakovanja i na taj način zaštiti vaš web sajt od mnogih opasnih .htaccess napada.

Evo tih pravila:

Omogućite rewrite engine

RewriteEngine On

Blokirajte sumnjive request metode

RewriteCond %{REQUEST_METHOD} ^(HEAD|TRACE|DELETE|TRACK|DEBUG) [NC]
RewriteRule ^(.*)$ - [F,L]

Blokirajte WP timthumb hack

RewriteCond %{REQUEST_URI} (timthumb.php|phpthumb.php|thumb.php|thumbs.php) [NC]
RewriteRule . - [S=1]

Blokirajte sumnjive user agente i zahteve

RewriteCond %{HTTP_USER_AGENT} (libwww-perl|wget|python|nikto|curl|scan|java|winhttp|clshttp|loader) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} (<|>|'|%0A|%0D|%27|%3C|%3E|%00) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} (;|<|>|'|"|)|(|%0A|%0D|%22|%27|%28|%3C|%3E|%00).*(libwww-perl|wget|python|nikto|curl|scan|java|winhttp|HTTrack|clshttp|archiver|loader|email|harvest|extract|grab|miner) [NC,OR]
RewriteCond %{THE_REQUEST} \?\ HTTP/ [NC,OR]
RewriteCond %{THE_REQUEST} \/*\ HTTP/ [NC,OR]
RewriteCond %{THE_REQUEST} etc/passwd [NC,OR]
RewriteCond %{THE_REQUEST} cgi-bin [NC,OR]
RewriteCond %{THE_REQUEST} (%0A|%0D) [NC,OR]

Blokirajte MySQL injekcije, RFI, base64, etc.

RewriteCond %{QUERY_STRING} [a-zA-Z0-9_]=http:// [OR]
RewriteCond %{QUERY_STRING} [a-zA-Z0-9_]=http%3A%2F%2F [OR]
RewriteCond %{QUERY_STRING} [a-zA-Z0-9_]=(..//?)+ [OR]
RewriteCond %{QUERY_STRING} [a-zA-Z0-9_]=/([a-z0-9_.]//?)+ [NC,OR]
RewriteCond %{QUERY_STRING} =PHP[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12} [NC,OR]
RewriteCond %{QUERY_STRING} (../|..) [OR]
RewriteCond %{QUERY_STRING} ftp\: [NC,OR]
RewriteCond %{QUERY_STRING} http\: [NC,OR]
RewriteCond %{QUERY_STRING} https\: [NC,OR]
RewriteCond %{QUERY_STRING} =|w| [NC,OR]
RewriteCond %{QUERY_STRING} ^(.)/self/(.)$ [NC,OR]
RewriteCond %{QUERY_STRING} ^(.)cPath=http://(.)$ [NC,OR]
RewriteCond %{QUERY_STRING} (\<|%3C).script.(>|%3E) [NC,OR] RewriteCond %{QUERY_STRING} (<|%3C)([^s]s)+cript.(>|%3E) [NC,OR]
RewriteCond %{QUERY_STRING} (\<|%3C).iframe.(>|%3E) [NC,OR] RewriteCond %{QUERY_STRING} (<|%3C)([^i]i)+frame.(>|%3E) [NC,OR]

RewriteCond %{QUERY_STRING} base64_encode.(.) [NC,OR]
RewriteCond %{QUERY_STRING} base64_(en|de)code[^(]([^)]) [NC,OR]
RewriteCond %{QUERY_STRING} GLOBALS(=|[|\%[0-9A-Z]{0,2}) [OR]
RewriteCond %{QUERY_STRING} _REQUEST(=|[|\%[0-9A-Z]{0,2}) [OR]
RewriteCond %{QUERY_STRING} ^.([|]|(|)|<|>). [NC,OR]
RewriteCond %{QUERY_STRING} (NULL|OUTFILE|LOAD_FILE) [OR]
RewriteCond %{QUERY_STRING} (./|../|.../)+(motd|etc|bin) [NC,OR]
RewriteCond %{QUERY_STRING} (localhost|loopback|127.0.0.1) [NC,OR]
RewriteCond %{QUERY_STRING} (<|>|'|%0A|%0D|%27|%3C|%3E|%00) [NC,OR]
RewriteCond %{QUERY_STRING} concat[^(]( [NC,OR] RewriteCond %{QUERY_STRING} union([^s]s)+elect [NC,OR]
RewriteCond %{QUERY_STRING} union([^a]a)+ll([^s]s)+elect [NC,OR]
RewriteCond %{QUERY_STRING} (;|<|>|'|"|)|%0A|%0D|%22|%27|%3C|%3E|%00).*(/*|union|select|insert|drop|delete|update|cast|create|char|convert|alter|declare|order|script|set|md5|benchmark|encode) [NC,OR]

PHP-CGI ranjivost

RewriteCond %{QUERY_STRING} ^(%2d|-)[^=]+$ [NC,OR]

proc/self/environ

RewriteCond %{QUERY_STRING} proc\/self\/environ [NC,OR]
RewriteCond %{QUERY_STRING} (sp_executesql) [NC]
RewriteRule ^(.*)$ - [F,L]

Brute-force login napadi

Kao što ime i samo ime sugeriše, ova vrsta ranjivosti se odnosi na situaciju kada hakeri pokušaju da se prijave na vaš admin panel tako što pokušavaju da pogode vaše kredencijale za logovanje. Hakeri se često oslanjaju na automatizovane skripte da bi napravili brojne pokušaje da se prijave na vašu WordPress admin stranicu isprobavajući hiljade i milione kombinacija korisničkih imena i lozinki. Ova vrsta napada ne samo da usporava vaš web sajt, već i u slučaju uspešnog logovanja hakerima omogućava potpunu kontrolu nad vašim web sajtom.

Kako blokirati brute-force login napade?

Možemo preporučiti dva efikasna načina za sprečavanje pokušaja brute-force login napada:

Počnite da koristite veoma jake lozinke. Dužu lozinku koja sadrži različite tipove karaktera nije lako pogoditi, čak ni specijalnim softverskim alatima.

Još jedna efikasna odbrana je korišćenje plugin-a pod nazivom WP Limit Login Attempts, posebno dizajniranog za zaštitu WordPress sajta od pomenute vrste napada.

Podrazumevani prefiks za tabele baze podataka

WordPress tabela sadrži sve informacije o vašem web sajtu. Zbog toga je veoma često jedna od najčešćih meta hakera. Vaš WordPress sajt ima više tabela u bazi podataka. Generalno, ove tabele baze podataka se nazivaju prefiksom „wp-“ što hakerima olakšava predviđanje i planiranje napada, a sve sa ciljem preuzimanja kontrole nad vašim sajtom.

Kako rešiti ovu vrstu ranjivosti:

Najpametniji način da zaštitite svoj WordPress web sajt od ove vrste ranjivosti je da promenite prefiks WordPress tabela.

Na primer, možete odabrati nešto nepredvidivo i jedinstveno što hakerima otežava predviđanje.

Da biste znali kako da promenite podrazumevani prefiks za vaše WordPress tabele, možete pogledati ovaj video. Da biste izbegli bilo kakav gubitak vaših podataka, toplo vam preporučujemo da svakodnevno pravite rezervne kopije.

Drugi način da zaštitite svoje tabele WordPress baze podataka od ranjivosti je da koristite sigurnosni plugin ithemes koji obezbeđuje sigurnost od ranjivosti dodataka, slabih napada lozinkom i zastarelog softvera.

Vidljivost osetljivih fajlova

Veliki broj WordPress web sajtova ima najmanje jedan osetljivi fajl koji je vidljiv svima na internetu.

Važan izvor ranjivosti leži u fajlovima koje nemaju nikakve veze sa vašim web sajtom i kreirani su samo kao rezervne kopije.

Ovi fajlovi predstavljaju ozbiljnu bezbednosnu pretnju za aplikaciju jer su najlakša meta za hakere. Ovo može uključivati konfiguracione fajlove, fajlove bez referenci, stranice, fajlove rezervnih kopija, osetljive log fajlove itd.

Kako se zaštiti od ove vrste ranjivosti

Za tipičnu instalaciju WordPress-a, blokirajte pristup listama direktorijuma tako što ćete dodati komande u .htaccess fajl da biste blokirali pristup osetljivim privatnim fajlovima u vezi sa WordPress-om i samim web serverom.

Da biste ograničili pristup samo svom wp-admin-u, dodajte sledeći isečak koda:

RewriteEngine on RewriteCond %{REQUEST_URI} ^(.)?wp-login.php(.)$ [OR] RewriteCond %{REQUEST_URI} ^(.)?wpadmin$ RewriteCond %{REMOTE_ADDR} !^42.114.178.163$ RewriteRule ^(.)$ - [R=403,L]

Ovo je odličan način da zaštitite svoj web sajt jer osigurava da su jedine osobe sa pristupom vašem wp-admin-u korisnici sa ovlašćenim IP adresama.

Ako želite da ograničite pristup vašem WordPress konfiguracionom fajlu (wp-config.php), potrebno je da dodate sledeće linije koda u svoj .htaccess fajl.

order allow,deny deny from all

Proveravajte svaku aktivnost koja se obavlja na WordPress fajlovima koji se nalaze na serveru.
Snapshot-ovi file system-a ne bi trebalo da budu dostupni preko weba. Konfigurišite svoj web server da zabrani pristup takvim folderima.

Zaključak

U ovom tekstu smo vam predstavili nekoliko jednostavnih rešenja za najčešće probleme i ranjivosti u WordPress-u. Ukoliko znate još neki način, slobodno nam pišite u komentarima ispod.

Nenad Mihajlović


Ostavite odgovor