Kaj je CSRF ranljivost WordPressa?

CSRF (Cross-Site Request Forgery znan tudi kot Napad z enim klikom ) je napogostejša ranljivost na vtičnikih in temah.

Verzije starejše od 4.0. so ranljive za CSFR – posodobite svoj WP!

Kako lahko uporabimo NONCE?

NONCE (Number used ONCE) .NONCE se uporablja na zahtevo in prepreči nepooblaščen dostop tako, da uporabi skrivni “ključ” in to preveri vsakič, ko se uporabi koda.

Nonce lahko ustvarite in ga dodate v niz poizvedb v URLju, lahko ga dodate v skrito polje v formi ali ga uporabite kako drugače. Če ga boste uporabili v AJAX-u potem ga dodajte v skrito polje, iz kjer ga JavaScript lahko pridobi.

Upoštevati je potrebno, da so Nonce-nci edinstveni za trenutnega uporabnika seje, tako da, če se le ta logira ali odlogira asinhrono noben Nonce-ns na strani ne bo več veljaven.

Kako ga uporabite?
https://codex.wordpress.org/WordPress_Nonces

1. DODAJANJE

  • Dodajanje v URL

Kličite
wp_nonce_url()
navedite čisti URL in niz, ki predstavlja dejanje.

Primer: $complete_url = wp_nonce_url( $bare_url, ‘trash-post_’.$post->ID );

Poskrbite, da bo niz, ki predstavlja dejanje kar se da natančen.

wp_nonce_url() privzeto doda polje z imenom
 _wpnonce,
ime lahko spremenite pri klicu funkcije:
$complete_url = wp_nonce_url( $bare_url, ‘trash-post_’.$post->ID, ‘my_nonce’ );

  •  Dodajanje v formo

Kličite
wp_nonce_field()
natančno določite niz, ki predstavlja dejanje.
wp_nonce_field() privzeto generira dva skrita polja (eno katerega vrednost je Nonce in enega katerega vrednost je trenuten URL (the referrer), kar se odraža kot rezultat)).

Napr:
wp_nonce_field( ‘delete-comment_’.$comment_id );
Morda celo nekaj takega:
<input type=”hidden” id=”_wpnonce” name=”_wpnonce” value=”796c7766b1″ />
<input type=”hidden” name=”_wp_http_referer” value=”/wp-admin/edit-comments.php” />
Bolj podrobno: https://codex.wordpress.org/Function_Reference/wp_nonce_field

Poskrbite, da bo niz, ki predstavlja dejanje karseda natančen.

  • Ustvarjanje Nonce-nsa za uporabo na drug način

Kličite
wp_create_nonce()
natančno določite niz, ki predstavlja dejanje.

Napr:
$nonce = wp_create_nonce( ‘my-action_’.$post->ID );
Kar enostavno vrne nazaj Nonce:
Napr: 295a686963

2. PREVERJANJE

  •  Nonce, ki je bil poslan v URL iz admin zaslona

Kličite
check_admin_referer()
natančno določite niz, ki predstavlja dejanje.

Napr: check_admin_referer( ‘delete-comment_’.$comment_id );

Ta klic preverja Nonce in napotitelja (referrer), če pregled ni uspešen potem se izvede normalna akcija (zaključeno izvjanje skript s “403 Forbidden” odzivom in sporočilo o napaki).

Če niste uporabili privzetega imena polja  (_wpnonce), ko ste ustvarili Nonce, potem določite ime polja:
check_admin_referer( ‘delete-comment_’.$comment_id, ‘my_nonce’ );

  • Nonce, ki je bil poslan v AJAX zahtevo

Za preverjanje kličite
check_ajax_referer()
natančno določite niz, ki predstavlja dejanje.

Napr: check_ajax_referer( ‘process-comment’ );

Če niste uporabili privzetega imena polja (_wpnonce ali _ajax_nonce), ko ste ustvarili Nonce lahko določite dodatne parametre.
Za več glejte: https://codex.wordpress.org/Function_Reference/check_ajax_referer

  • Preverjanje nonce-nsa za uporabo na drug način

Kličite
wp_verify_nonce() določite nonce in niz, ki predstavlja dejanje.

Napr: wp_verify_nonce( $_REQUEST[‘my_nonce’], ‘process-comment’.$comment_id );

Če je rezultat napačen ne nadaljujete s procesom, raje kličite wp_nonce_ays(), kar bo naredilo “403 Forbidden” odziv v brskalniku z error sporočilom: “Are you sure you want to do this?”.

3. SPREMINJANJE NONCE SISTEMA

Nonce sistem lahko prilagodite tako, da dodate različna dejanja in filtre.

  • Spreminjanje Error sporočila

function my_nonce_message ($translation) {
 if ($translation == ‘Are you sure you want to do this?’)
    return ‘No! No! No!’;
  else
    return $translation;
  }

add_filter(‘gettext’, ‘my_nonce_message’);

  • Izvajanje dodatne verifikacije (preverjanja)

Dodajte
check_admin_referer dejanje.
Napr:
function my_additional_check ( $action, $result ) { … }
add_action( ‘check_admin_referrer’, ‘my_additional_check’, 10, 2 );

Za pregled check_ajax_referer() dodaj check_ajax_referer dejanje na isti način.

  • Spreminjanje Nonce Lifetime

Privzeto ima Nonce “življensko dobo” enega dneva, po tem času Nonce ni več veljaven četudi se ujema z nizom dejanj (akcije).

Če želite spremeniti lifetime dodajte
nonce_life
filter in določite lifetime v sekundah.

Napr:
add_filter( ‘nonce_life’, function () { return 4 * HOUR_IN_SECONDS; } );

4. VARNOST

Nonce je generiran tako, da uporablja KEY in SALT, ki sta edinstvena za vašo stran, če ste namestili WP pravilno.
Definirana sta v wp-config.php datoteki (datoteka vsebije komentarje, ki vam bodo dali več informacij).

Nonce se nikoli ne sme sklicevati na avtentikacijo ali avtorizacijo kontole dostopa.
Zaščitite funkcijo z uporabo current_user_can().

Vtičniki za zaščito:

Zadnje ranljivosti lahko spremljate na:

 

Viri:

Kako preusmerim svojo WordPress spletno stran iz HTTP na HTTPS

Ko imate na strežniku nameščen SSL certifikat za varno povezavo preko HTTPS je potrebno vašo spletno stran preusmeriti iz HTTP na HTTPS.

Na primer, da imate domeno vasadomena.nekaj, ki se prikazuje takole; http://www.vasadomena.nekaj

Spletno stran ustvarjeno v WordPress lahko preusmerite na dva načina:

  • preko vtičnika (plug-in) ali
  • preko .htaccess datoteke, ki se nahaja na vašem strežniku.

Ko boste preusmerili vašo spletno stran na HTTPS se bo vaša povezava prikazovala takole; https://www.vasadomena.nekaj
 

POZOR, VAŠA DOMENA MORA IMETI SSL CERTIFIKAT!
SSL certifikati so vam na voljo na naši spletni strani > SSL certifikati
Pri izbiri pravega vam z veseljem pomagamo, pišite nam na info@zabec.net.

  • Preusmeritev spletne strani preko vtičnika (plug-in)

Če ste začeli z uporabo SSL od prvega dane objave vaše spletne strani, potem so že vse statične datoteke (npr. slike) že objavljene tako, da uporabljajo HTTPS.

Če ste si uredili SSL certifikat kasneje, pa imate spletno stran na kateri je veliko statičnih datotek, ki so objavljene na strani z »NON-HTTPS«, torej HTTP naslovi. V tem primeru jih boste morali spremeniti. Če tega ne uredite bo brskalnik prikazal opozorilo o varnostni težavi, tudi če imate na samem strežniku že nameščen SSL certifikat.

Vtičnik »Easy HTTPS Redirection Plugin« vam omogoči, da lahko »na silo« preusmerite statične datoteke na varno povezavo, HTTPS. Tako bo vaša spletna stran v celoti združljiva s SSL certifikatom.

Uporaba vtičnika omogoči samodejno preusmeritev na HTTPS (Enable automatic redirection to the HTTPS).

Ko omogočite to možnost se bo vaša spletna stran http://www.vasadomena.nekaj avtomatsko preusmerila na varno povezavo https://www.vasadomena.nekaj , tako vas bodo obiskovalci vaše spletne strani obiskali preko varne povezave.

Ko namestite vtičnik, ga poiščite v Nastavitvah (Settings) in izberite HTTPS Redirection.

Ko imate pred seboj nastavitve vtičnika pri prvi izbiri določite, da se vaša stran usmeri na HTTPS, pri drugi izbiri pa omogočite, da se vse statične datoteke (slike) prikazuje preko HTTPS povezave.

Vtičnik vas vpraša ali želite preusmeriti celotno stran na HTTPS ali samo določene strani – izberite preusmeritev celotne strani (Whole page) in kliknite Shrani (Save).

  • Preusmeritev vaše spletne strani preko .htaccess datoteke

Če želite vašo spletno stran preusmeriti »ročno« na varno povezavo HTTPS, to storite z urejanjem .htaccess datoteke na vašem gostovanju in pa z urejanjem povezave v administraciji WordPress-a vaše spletne strani.

V administraciji spletne strani poiščite Nastavitve (Settings) in Splošno (General) – Tukaj uredite Naslov za WordPress ((URL) (WordPress Address (URL)) in Naslov spletišča ((URL) (Site Address (URL))

Uredite jih tako, da pri http://www.vasadomena.nekaj spremenite http v https.

Ko ste naredili sledeče, morate v kontrolni plošči urediti še .htaccess datoteko – odprete .htaccess datoteko, ki se nahaja v public_html mapi in čisto na začetku dodate naslednje vrstice:

<IfModule mod_rewrite.c>

RewriteEngine On

RewriteCond %{SERVER_PORT} 80

RewriteRule ^(.*)$ https://www.vasadomena.nekaj/$1 [R,L]

</IfModule>

Bodite pozorni, da »https://www.vasadomena.nekaj« spremenite v vašo kupljeno domeno.

V wp-config.php dodamo še zapis:

define(‘FORCE_SSL_ADMIN’, true);

Čisto na koncu pa ne pozabite dodati vašo https stran ponovno v Google Webmaster Tools, tako boste Googla obvestili o spremembi, ki ste jo naredili.

Zgodba o Vidi in Staši

 

To je zgodba o Vidi in Staši. Vida in Staša sta računovodji in vsako leto pride mesec, ko sta zaradi oddaje letnih poročil in bilanc še posebej zasuti z delom, delata tako rekoč od jutra do večera, računalnik pa je pri njunem delu nepogrešljivo orodje. V petek pozno popoldne, sta od Nataše, dobre prijateljice, ki petkovo popoldne običajno popestri s kakšno dobro šalo, prejeli elektronsko sporočilo s povezavo na nadvse zabavno video vsebino, in to v slovenskem jeziku. Ker je to v Natašini navadi, sta Vida in Staša brez pomisleka povezavo obiskali.

A šlo je za prevaro….
Nepridiprav je spretno izkoristil njuno zaupanje in naivnost ter na takšen način v njune računalnike vsilil zlonamerno programsko kodo, izsiljevalski kripto virus. Takoj po obisku povezave, ki je sicer zvito postregla tudi s prikupno video vsebino, v ozadju osebnega računalnika pa je koda spletne strani izkoristila ranljivost in namestila kripto izsiljevalski virus, ki je nemudoma pričel s šifriranjem vseh vsebin v računalniku.

Po ogledu posnetka sta obe nadaljevali z delom. Obe sta sicer opazili, da računalnika delujeta nekoliko upočasnjeno, vendar temu nista posvečali posebne pozornosti, navsezadnje to niti ni nič nenavadnega. Čez nekaj ur je sledilo presenečenje. Oba računalnika sta zahtevala ponoven zagon, ki ga ni bilo mogoče preskočiti, po vnovičnem zagonu, pa je obe na zaslonu pričakalo sporočilo. Sporočilo, da so vsi podatki v njunih računalnikih šifrirani, spletni kriminalci, pa so od njiju za prevzem gesla za dešifriranje zahtevali, da preko plačilnega sistema Bitcoin opravita plačilo v vrednosti 1.000,00 EUR.

Staša čaka v skrbeh ali bo lahko nadaljevala z delom…
Podatki v obeh računalnikih so bili nedostopno šifrirani, tako rekoč edina možnost za povrnitev, vsaj v doglednem času, pa je plačilo izsiljevalske kupnine. Staša je nemudoma stopila v stik s podjetjem, ki vzdržuje programsko opremo za vodenje računovodstva. Obvestili so jo, da ji lahko vzpostavijo stanje na čas, ko je bilo opravljeno zadnje varnostno kopiranje, da zato potrebujejo sveže nameščen računalnik in da bo postopek trajal do dva dni.

Pa Vida? Vida lahko z delom nadaljujeje takoj! Kako je to mogoče…
Vida je, kljub temu, da se ji je pripetila popolnoma enaka situacija, svoje delo lahko nadaljevala že čez pol ure. Kako je to mogoče? Vida je potrebovala le nadomestni računalnik, vse svoje delo namreč opravlja znotraj namizja v oblaku. Tako kot Staši, je, tudi Vidi isti kripto izsiljevalski virus zaklenil vse datoteke v osebnem računalniku, vendar pa Vida v svojem osebnem računalniku ni hranila pomembnih datotek. Je že res, da je izgubila kakšno fotografijo, in morda še kakšno nepomembno reč, za poklicno delo pa je uporabljala izključno storitev namizja v oblaku, kamor je vestno odlagala tudi vse pomembne dokumente.

Staši zaradi časovne stiske žal ni preostalo drugega, kot da spletnim goljufom izplača visok želeni znesek. To je bila najhitrejša pot za povrnitev podatkov, saj bi alternativna možnost, ki bi verjetno bila nekoliko cenejša, prinesla preveliko  izgubo, trajala pa bi predolgo.

Zgodba je izmišljena, ampak to sploh ni važno. Za več informacij obiščite https://zabec.cloud/ .

Pozor, vaš FB račun bo blokiran! Razen, če kliknete na link…

Ste tudi vi oz. vaša Facebook stran prejela od t.i. Notification Pages (nekateri prejemajo tudi od FB Security Pages), da bo vaš račun blokiran v kolikor ponovno ne potrdite računa? Seveda s klikom na link…

Goljufi z naslovno sliko in uporabo besed kot sta Facebook, Bloking… ter naslova Facebooka želijo prestrašiti uporabnike, da ti kliknejo na link ter ponovno vpišejo uporabniško ime (spletno pošto) in geslo.

Gre za krajo gesel (phishing) s čimer si pridobijo nadzor nad vašo FB stranjo oz. profilom.

Kako veste, da vas niso kontaktirali iz Facebooka?

  • Kot prvo njihove uradne strani imajo modro kljukico.

    Facebook uporablja dve barvno različni kljukici – modro kljukico (pomeni, da je Facebook potrdil profil ali stran kot avtentično. Uporablja se za javne osebnosti, medijska podjetja in znamke) ter sivo kljukico (z njo Facebook potrdi, da gre za pravo, avtentično stran, profil podjetja ali organizacije)
    Žal kljukice še niso vsem (geografsko) na voljo.
  • Facebook vas ne kontaktira z deljenjem objave
  • Stran deli enake komentarje za vsako stran, ki jo bodo “izključili”
  • S klikom na povezavo se več ne nahajate na Facebook strani (domeni)

Kaj lahko storite?

  • Blokirajte sporočila te strani
  • Prijavite stran kot prevaro
  • Povezavo do FB strani, ki je komentirala vašo objavo lahko pošljete tudi na cert@cert.si kjer bodo poskrbeli, da onemogočijo krajo gesel.

Kako izboljšati varnost Joomla spletne strani v 6 korakih

  1. Geslo
    – Ko ste si ustvarili spletno stran, ne obdržite prednastavljenega uporabniškega imena in gesla (ta je navadno kar admin).
    – Za vstop v administratorsko okolje zahtevajte geslo.

    Za pomoč:
    – Najslabša gesla, kako ustvariti dobro geslo:
    https://blog.zabec.net/kraja-gesel-najslabsa-gesla-so/
    – Administrativno okolje > ustvarite .httaccess v administrator directory: https://docs.joomla.org/How_do_you_password_protect_directories_using_htaccess%3F

  1. Razširitve
    Joomla vam ponuja ogromno možnosti razširitev, kadarkoli potrebujete kaj novega, vam je na voljo malo morje razširitev, ki jih lahko opravite s samo nekaj kliki.
    Pa vendar je potrebno pri tem biti izjemno previden, veliko razširitev je t.i. third party, kar pomeni, da niso uradne in večina vdorov se zgodi prav preko njih.

    – V kolikor razširitev več ne uporabljate, potrebujete, jih izbrišite. Več ko imate neposodobljene kode v vaši spletni strani, večja je možnost vdora in zlorabe.

    – Posodabljajte razširitve! Največkrat so na voljo t.i. security fixes, ki odpravljajo varnostne pomankljivosti. Nikoli jih ne izpustite.

    Za pomoč:
    – Lista ranljivih razširitev, ki se sproti posodablja:
    https://vel.joomla.org/live-vel
    – Testiranje razširitev v varnem okolju:
    https://www.joomlatools.com/developer/tools/vagrant/
    Sporočanje posodobitev razširitev:
    https://docs.joomla.org/Help36:Extensions_Extension_Manager_Update

  1. Dovoljenja
    Največji problem predstavlja dovoljenje, ki prav vsem dovoljuje, da lahko prilagajajo, dostopajo do datotek in jih gledajo, dovoljenje se imenuje 777.

    – Dovoljenja uporabljate samo tam kjer jih resnično potrebujete (pa še ta lahko omejite), vse ostalo naj ostane zaklenjeno.

    Za pomoč:
    – Tipična Joomla dovoljenja:
    PHP nastavljen na 0444 > nihče ne more zapisovati v dokument
    Imeniki nastavljeni na 0755 > samo lastnik imenika lahko zapisuje vanj, ostali ga lahko berejo in izvedejo.
    Datoteke nastavljene na 0644 > lastnik lahko zapisuje, ostali jih lahko samo berejo

  2. SSL certifikati
    SSL certifikat potrebujete v kolikor želite ustvariti varno komunikacijo med vašo spletno stranjo in uporabnikom.
    Če imate t.i. e-commerce spletno stran potem je ta certifikat nujno potreben (s SSLjem se med spletno prijavo v trgovino in uporabnikom ustvari kriptirana povezava, v kolikor SSLja nimate je prijava uporabnika v t.i. plain textu), za manjše spletne strani lahko sami precenite ali ga potrebujete ali ne. Vsekakor pa bo doprinesel https zaupanje v vašo spletno stran.

    Za pomoč:
    – Varna in zaupanja vredna spletna trgovina:
    https://blog.zabec.net/varna-in-zaupanja-vredna-spletna-trgovina/
    – Kateri SSL certifikat naj izberem:
    https://blog.zabec.net/kateri-ssl-certifikat-naj-izberem/
    Za pomoč pri izbiri se lahko obrnete tudi na naš podporni center: info@zabec.net
    Ponujamo vam več kot 30 različnih certifikatov: https://www.zabec.net/gostovanje/ssl-certifikati

  3. Posodobljena različica Joomle
    Ena izmed najbolj pomembnih stvari je redno posodabljanje Joomle na najnovejšo različico.
    Vendar pred vsako večjo posodobitvijo naredite backup.

    Za pomoč:
    – Joomla obvestila:
    https://www.joomla.org/announcements.html

  1. Utrdite PHP konfikuracijo
    Če potrebujete prenos dokumentov za upravljalca dokumentov, kot je napr. DOCman ali FILEman, sledečih možnosti ne nastavljajte.

    PHP directives lahko spremenite v vašem php.ini datoteki:

  • expose_php = 0 :
    s tem prikrijete katero različico PHPja uporabljate, tako napadalcem otežite delo, saj ne vedo točno katero ranljivost je najbolje izrabiti.
  • open_basedir = “/var/www/yoursite.com:/tmp/” :
    s tem ukažete PHPju, da lahko uporablja samo to mapo (privzeto je na shared strežnikih nastavljeno pravilno)
  • display_errors = 0 :
    s tem boste preprečili, da bi napadalci vedeli kje je možnost vdora v vašo stran
  • disable_functions = exec,passthru,shell_exec,system,
proc_open,proc_close,proc_terminate,popen,curl_exec,curl_multi_exec,
show_source,posix_kill,posix_getpwuid,posix_mkfifo,posix_setpgid,
posix_setsid,posix_setuid,posix_setuid,posix_uname,php_uname,syslog
    s tem onemogočite (izklopite) nevarne PHP metode, tako, da jih napadalci ne morejo uporabiti oz. škodovati vašemu sistemu.

Vir: https://www.incapsula.com/blog/10-tips-to-improve-your-joomla-website-security.html