54
Bezbednost WordPress sajtova - Uvod u WordPress Hardening #WPNS Nikola Petrov 15.02.2017.

Nikola Petrov-Bezbednost WordPress sajtova - Uvod u WordPress

Embed Size (px)

Citation preview

Page 1: Nikola Petrov-Bezbednost WordPress sajtova - Uvod u WordPress

Bezbednost WordPress sajtova - Uvod u WordPress

Hardening

#WPNSNikola Petrov15.02.2017.

Page 2: Nikola Petrov-Bezbednost WordPress sajtova - Uvod u WordPress

jhujhuhuhh

Bezbednost

Page 3: Nikola Petrov-Bezbednost WordPress sajtova - Uvod u WordPress

jhujhuhuhhBezbednost - ukratko

Kratak pregled• Zašto je bitna?• „Neće to meni da se desi“• Ljudska priroda

Misliti na vreme Biti temeljan Biti posvećen Ne znači da morate biti eksperti za bezbednost – samo pratite uputstva

Page 4: Nikola Petrov-Bezbednost WordPress sajtova - Uvod u WordPress

Popularnost “Idealan” sistem

• 100% siguran sistem ne postoji

WP platforma

• Fleksibilna• Otvorena• ≈ 50.000 dodataka

W3Techs.com, February 2017

Page 5: Nikola Petrov-Bezbednost WordPress sajtova - Uvod u WordPress

Primer

2.6 TB11.5 milliona dokumenata

Page 6: Nikola Petrov-Bezbednost WordPress sajtova - Uvod u WordPress

• Propust napravljen na Revolution Slider pluginu

• Njihov Web server nije bio iza Firewall-a

• Njihov Web server je na istoj mreži kao i njihov MAIL server s bazom u Panami

• Postavili su osetljive podatke o svojim klijentima sa svog portala, koji uključuju pristupne podatke portalu, kao i mail serveru klijenata

Jedan ne ažuriran WP dodatak, može dovesti do padasvetskih lidera i istorijski najvećeg odliva privatnih

podataka široj javnosti.

Page 7: Nikola Petrov-Bezbednost WordPress sajtova - Uvod u WordPress

Hardening

Page 8: Nikola Petrov-Bezbednost WordPress sajtova - Uvod u WordPress

hardening is the process of securing a system by

reducing its surface of vulnerability

Page 9: Nikola Petrov-Bezbednost WordPress sajtova - Uvod u WordPress

Zašto nam je potreban „hardening“ ?

Page 10: Nikola Petrov-Bezbednost WordPress sajtova - Uvod u WordPress

WP verzije

Kratak pregled

WordPress versions usage – January 2017 W3Techs.com

Page 11: Nikola Petrov-Bezbednost WordPress sajtova - Uvod u WordPress

PHP verzije

Kratak pregled

PHP versions run by WordPress websites – January 2017 W3Techs.com

Page 12: Nikola Petrov-Bezbednost WordPress sajtova - Uvod u WordPress

jhujhuhuhh

Zašto bi neko napao baš moj WP sajt?

Page 13: Nikola Petrov-Bezbednost WordPress sajtova - Uvod u WordPress

jhujhuhuhhSEO

Kratak pregled• Vaš kompromitovani sajt je moguće koristiti u svrhu poboljšanja SEO nekog

drugog sajta ubacivanjem back-link –ova.

• Ovde koriste dobru reputaciju Vašeg sajta za njihove zlonamerne ciljeve.

Page 14: Nikola Petrov-Bezbednost WordPress sajtova - Uvod u WordPress

jhujhuhuhhSPAM

Kratak pregled• Slanje SPAM e-mail poruka je takođe jedan od čestih razloga za zloupotrebu

vašeg WP sajta.

• Kada haker iskoristi Vaš sajt i hosting nalog, prelazi na drugi sajt, a Vama ostavlja „blacklistovan“ sajt sa dosta problema.

Page 15: Nikola Petrov-Bezbednost WordPress sajtova - Uvod u WordPress

jhujhuhuhhKrađa podataka

Kratak pregled• Prosečan korisnik ostavlja gomilu ličnih podataka na računaru.

• Krađa ovih podataka je moguća putem WP sajta, kao što su: lozinke, podatke o Vašoj kreditnoj kartici, bankovnom računu...

Page 16: Nikola Petrov-Bezbednost WordPress sajtova - Uvod u WordPress

jhujhuhuhhNapad na druge sajtove

Kratak pregled• Ponekada cilj hakera je da neki sajt učini nedostupan korisnica (DoS, Denial

of Service). • Da bi koristili ovu tehniku potrebna je mreža sajtova, koju su oni na

maliciozni način „regrutovali“.

Page 17: Nikola Petrov-Bezbednost WordPress sajtova - Uvod u WordPress

jhujhuhuhh

Najčešći hakerski napadiTehnike

Page 18: Nikola Petrov-Bezbednost WordPress sajtova - Uvod u WordPress

jhujhuhuhhBrute force

• Najčešće korišćen od strane script kiddie hakera

• Bruteforce podrazumeva skeniranje slabosti i ranjivosti sajta, kao iisprobavanje svih mogućih kombinacija i kriptografskih ključeva

• U teoriji, na ovakav način bi se moglo pristupiti svakom sistemu koji imaneku ranjivost, ali na svu sreću ovo je daleko od svakodnevne prakse, ali se svakako treba shvatiti ozbiljno

Page 19: Nikola Petrov-Bezbednost WordPress sajtova - Uvod u WordPress

jhujhuhuhhDeface

Kratak pregled• Nije svaki “hacker” osoba koja želi da Vam napakosti i obori sajt.

• Veliki broj ovih „osvetnika i boraca za pravdu“ nazivaju sebe “whitehat“ hakerima i njihov cilj je da ukažu drugima na bezbednosne probleme sajta.

• Njihov omiljeni metod je tehnika poznata kao deface sajta jer na ovaj način neće naneti veliku štetu Vašem sistemu. U pitanju je metoda pomoću koje hakeri iz vašeg direktorijuma uklanjaju index.php fajl i zamenjuju ga svojim index.html fajlom.

Page 20: Nikola Petrov-Bezbednost WordPress sajtova - Uvod u WordPress

jhujhuhuhhVirus/malware injection

Kratak pregled• Ovaj način je prilično jedinstven za WordPress, a to je injekcija virusa i

zlonamernog softvera (malicious software) kroz besplatne i piratizovane teme i dodatke (plugins).

• Ponekad je sasvim dovoljno rukoviditi se zdravim razumom ukoliko želite da izbegnete ovakav napad.

• Zlonamerni virusi i softver će pokušati da okače spam na Vaš sajt ili da ukradu poverljive podatke od Vaših korisnika.

• Ukoliko je Vaš sajt zaražen onda će vrlo brzo biti kažnjen od strane pretraživača.

Page 21: Nikola Petrov-Bezbednost WordPress sajtova - Uvod u WordPress

jhujhuhuhhBackdoor

Kratak pregled• Backdoor skripte su prilično opasne. U najgorem scenariju, backdoor

postavljen na vaš sajt može uzrokovati ozbiljne probleme i gubitak podataka na celom serveru.

• Napad se najčešće dešava zbog neažuriranog software-a i skripti koje koristi.

• Najčešće, malicioznu skriptu možete primetiti kao enkodovanu base64skriptu ili kao deo skripte koji je enkodovan.

Page 22: Nikola Petrov-Bezbednost WordPress sajtova - Uvod u WordPress

jhujhuhuhhDDoS (Distrubuited Denial of Service)

Kratak pregled• DDoS tehnika je gde „hacker“ šalje saobraćaj, preko kompromitovanih mreža

i računara, prema određenoj meti. • Na ovaj način “meta” je toliko zauzeta da prestaje da odgovara na zahteve

koji dolaze od legitimnih korisnika. Ova taktika korišćena je čak i kao sredstvo ucene gde su hakeri zahtevali otkup kako bi oslobodili određeni veb-sajt.

• Tokom DDoS napada, ciljani server ili mreža prima zahteve iz kompromitovanih sistema. Učestalost zahteva je toliko velika da protok dostiže svoj maksimum koji može da ima kada su resursi i mogućnosti servera u pitanju.

• Server usporava do mere u kojoj postaje beskoristan sve dok napad traje.

Page 23: Nikola Petrov-Bezbednost WordPress sajtova - Uvod u WordPress

Rešenja

Page 24: Nikola Petrov-Bezbednost WordPress sajtova - Uvod u WordPress

Redovno pravite „backup“ sajta i baze podataka

Page 25: Nikola Petrov-Bezbednost WordPress sajtova - Uvod u WordPress

Kreiranje backup-a

• Ručno• Putem plugin-a:

• Obavezno testirajte backup !

Page 26: Nikola Petrov-Bezbednost WordPress sajtova - Uvod u WordPress

Redovno ažurirajte WP i njegove dodatake

Page 27: Nikola Petrov-Bezbednost WordPress sajtova - Uvod u WordPress

define('WP_AUTO_UPDATE_CORE', true);

wp-config.php

functions.php

add_filter( 'auto_update_theme', '__return_true' );add_filter( 'auto_update_plugin', '__return_true' );

Page 28: Nikola Petrov-Bezbednost WordPress sajtova - Uvod u WordPress

Sprečite da WP pokazuje informacije o korisnicima koji imaju pristup sajtu

Page 29: Nikola Petrov-Bezbednost WordPress sajtova - Uvod u WordPress

www.vaswpsajt.com/?author=1

www.vaswpsajt.com/?author=2

www.vaswpsajt.com/?author=3

Page 30: Nikola Petrov-Bezbednost WordPress sajtova - Uvod u WordPress

RewriteCond %{QUERY_STRING} (^|&)author=RewriteRule . http://%{SERVER_NAME}/? [L]

.htaccess

Page 31: Nikola Petrov-Bezbednost WordPress sajtova - Uvod u WordPress

Korisničke dozvole

Page 32: Nikola Petrov-Bezbednost WordPress sajtova - Uvod u WordPress

WP Roles

Page 33: Nikola Petrov-Bezbednost WordPress sajtova - Uvod u WordPress

„Honey Pot“ tehnika

Page 34: Nikola Petrov-Bezbednost WordPress sajtova - Uvod u WordPress

Sakrite vašu login stranicu

Page 35: Nikola Petrov-Bezbednost WordPress sajtova - Uvod u WordPress

Sakrite vašu login stranicu

RewriteRule ^mylogin$ wp-login.php?key=123&redirect_to=http://%{SERVER_NAME}/wp-admin/index.php [L]

RewriteCond %{HTTP_REFERER} !^http://%{SERVER_NAME}/wp-adminRewriteCond %{HTTP_REFERER} !^http://%{SERVER_NAME}/wp-login\.phpRewriteCond %{HTTP_REFERER} !^http://%{SERVER_NAME}/loginRewriteCond %{QUERY_STRING} !^key=123RewriteCond %{QUERY_STRING} !^action=logoutRewriteCond %{QUERY_STRING} !^action=lostpasswordRewriteCond %{REQUEST_METHOD} !POSTRewriteRule ^wp-login\.php http://%{SERVER_NAME}/? [R,L]

.htaccess

Page 36: Nikola Petrov-Bezbednost WordPress sajtova - Uvod u WordPress

Poruke o greškama

Page 37: Nikola Petrov-Bezbednost WordPress sajtova - Uvod u WordPress

Sakrivanje poruka o login greškama

// login errors / messageadd_filter('login_errors', '__return_false');add_filter('login_messages', '__return_false');

functions.php

Page 38: Nikola Petrov-Bezbednost WordPress sajtova - Uvod u WordPress

Onemogućiti PHP izvršenje

Page 39: Nikola Petrov-Bezbednost WordPress sajtova - Uvod u WordPress

Onemogućiti PHP izvršenje u upload direktorijumu

Order Allow,DenyDeny from all<Files ~ "\.(xls|doc|rtf|pdf|zip|mp3|flv|swf|png|gif|jpg|ico|js|css|kmz|ttf|woff|woff2)$">

Allow from all</Files>

-uploads.htaccess

Page 40: Nikola Petrov-Bezbednost WordPress sajtova - Uvod u WordPress

Uklonite nepotrebne dodatke (plugins)

Page 41: Nikola Petrov-Bezbednost WordPress sajtova - Uvod u WordPress

• Uklonite neaktivne dodatke• One koje nekoristite

Uklonite nepotrebne dodatke (plugins)

Page 42: Nikola Petrov-Bezbednost WordPress sajtova - Uvod u WordPress

Koristite „jake“ lozinke

Page 43: Nikola Petrov-Bezbednost WordPress sajtova - Uvod u WordPress

Koristite „jake“ lozinke

„slabe lozinke“• pera1990• password• 123456• qwerty• admin

„jake“ lozinke• D7u8hI928FJYusx• Z5BLl20T8by1524• TLv7p64P63V5Hr1• 6b83668I15qRP2I• Um2d4Ejd9T1ExPr

Page 44: Nikola Petrov-Bezbednost WordPress sajtova - Uvod u WordPress

Proizvoljni direktorijum

Page 45: Nikola Petrov-Bezbednost WordPress sajtova - Uvod u WordPress

- WP-ADMIN

- WP-INCLUDE

- WP-CONTENT

Standardni prikaz WP direktorijuma

Page 46: Nikola Petrov-Bezbednost WordPress sajtova - Uvod u WordPress

- APPLICATION

--- WP-ADMIN

--- WP-INCLUDES

- PUBLIC

--- WP-CONTENT

- UPLOADS

Proizvoljan prikaz WP direktorijuma

Page 47: Nikola Petrov-Bezbednost WordPress sajtova - Uvod u WordPress

Proizvoljan prikaz WP direktorijuma

define('WP_CONTENT_DIR', dirname(__FILE__) . '/public);define('WP_CONTENT_URL', 'http://' . $_SERVER['HTTP_HOST'] . '/public');

define( 'WP_UPLOADS_DIR', dirname(__FILE__) . '/uploads' );

define('WP_SITEURL', 'http://' . $_SERVER['SERVER_NAME'] . '/application');define('WP_HOME', 'http://' . $_SERVER['SERVER_NAME']);

wp-config.php

Page 48: Nikola Petrov-Bezbednost WordPress sajtova - Uvod u WordPress

Gotova rešenja

Page 49: Nikola Petrov-Bezbednost WordPress sajtova - Uvod u WordPress

Gotova bezbednosna rešenja

Page 50: Nikola Petrov-Bezbednost WordPress sajtova - Uvod u WordPress

Pravite redovan “backup” fajlova i baze podataka

Koristite kompleksne lozinke ( Cpanel, WP login, FTP, DB user)

Redovno ažuriranje WP-a i njegovih dodataka (pluginova)

Monitoring stanja WP sajta (u pogledu bezbednosti)

Pravilan odabir hosting provajdera

Rezime

Page 51: Nikola Petrov-Bezbednost WordPress sajtova - Uvod u WordPress

Testiranje WP zaštite

Page 52: Nikola Petrov-Bezbednost WordPress sajtova - Uvod u WordPress

Testiranje WP zaštite

Kratak pregled• Security-testing distibucija – Kali Linux

• WPScan, Sponsored by Sucuriwpscan --url http://www.ime.domen

Page 53: Nikola Petrov-Bezbednost WordPress sajtova - Uvod u WordPress

Kratak pregled

Page 54: Nikola Petrov-Bezbednost WordPress sajtova - Uvod u WordPress

Hvala na pažnji !

Nikola [email protected]/nikola-petrov