Kui sul on WordPressi koduleht või e-pood, siis võib tunduda, et suurim oht on nõrk parool. See on oht, jah. Aga asi on selles, et enne parooli murdmist on ründajal vaja teada ka kasutajanime. Ja päris tihti leitakse see täiesti automaatselt üles WordPressi enda kaudu.
Üks levinud koht selleks on REST API. See on WordPressi normaalne funktsioon, mida kasutavad pluginad, teemad ja vahel ka välised rakendused. Probleem tekib siis, kui sealt saab liiga lihtsalt kätte sinu kasutajate nimed. Nii et bot ei pea isegi eriti pingutama.
Mis REST API üldse on ja miks see oluline on?
REST API on lihtsas keeles kanal, mille kaudu üks süsteem saab teisega suhelda. Näiteks mobiilirakendus kuvab blogipostitusi või mingi tooriist toob su lehelt sisu välja. WordPressis on see vaikimisi olemas ja paljudel juhtudel täiesti kasulik.
Aga vaata, turva mõttes tähendab see ka seda, et osa infot võib olla avalikult nähtav. Kui kasutajate endpoint on lahti, siis võib bot proovida aadressi nagu /wp-json/wp/v2/users ja vaadata, kas sealt tuleb midagi tagasi. Üsna sageli tulebki.
- Kasutaja kuvatav nimi
- Autorilehe slug ehk osa URL-ist
- Mõnikord vihje päris kasutajanimele
- Info selle kohta, kes on saidil sisu loonud
See ei pruugi tunduda kohe katastroof. Samas annab see ründajale esimese vajaliku pusletüki kätte.
Kuidas botid seda päriselt kasutavad?
Enamasti ei istu keegi käsitsi sinu lehte uurima. Seda teevad skriptid ja botid automaatselt. Nad käivad korraga läbi sadu või tuhandeid WordPressi lehti ja otsivad hästi kindlaid märke.
Kui REST API kaudu leitakse näiteks kasutaja marek või adminn, siis järgmine samm on sisselogimislehe testimine. Seal proovitakse kas nõrku paroole, lekkest pärit paroole või lihtsalt robotrünnakut. Ehk nn brute force setup, mis käib taustal ja väsimatult.
- Bot tuvastab, et tegu on WordPressiga
- Ta proovib REST API kasutajate endpointi
- Leiab ühe või mitu nime
- Läheb
/wp-login.phpvõi XML-RPC kallale - Alustab automaatselt paroole testima
Praktikas on see väga tavaline muster. Ja kui sul on veel kasutajanimi “admin”, “info” või ettevõtte nimega sama nimi, muutub asi botile eriti mugavaks.
Miks just admini kasutajanimi on nii väärtuslik?
Sest admini konto annab terve lehe üle kontrolli. Kui keegi saab sisse administraatori õigustega, siis saab ta lisada pahavara, teha uusi kasutajaid, muuta sisu, suunata külastajad mujale või kasutada lehte spämmiks. E-poe puhul on kahju veel suurem. Klientide usaldus kaob momentiga.
Tegelikult pole isegi vaja, et konto nimi oleks sõna-sõnalt “admin”. Piisab sellest, kui bot saab kätte reaalse sisselogimisnime või midagi sellele väga lähedast. Sealt edasi on rünnak juba palju lihtsam.
Kui tahad näha, millised märgid viitavad sellele, et asi on juba halvasti, siis loe ka 5 märki, et sinu WordPress on juba häkkerite käes. See annab päris hea reality checki.
Kuidas kontrollida, kas sinu leht lekib kasutajanimesid?
Hea uudis on see, et saad seda ise vaadata. Ei pea olema arendaja. Ava oma brauseris aadress:
sinuveeb.ee/wp-json/wp/v2/users
Kui näed sealt kasutajate nimekirja või mingit kasutajainfot, siis on vähemalt osa andmeid avalikud. Mõnel saidil näitab see ainult autorite infot, mõnel juhul rohkem. Kui tuleb veateade või ligipääs on piiratud, on juba parem.
Vaata üle ka need kohad:
- Autorilehed - kas URL näitab kasutajanime
- Kommentaarid ja postituste autorid
- Vanad kasutajakontod, mida enam ei kasutata
- Kas on alles vaikimisi konto nimed
Seejuures üks oluline detail - kuvatav nimi ja sisselogimisnimi ei pea olema sama. Kui need on erinevad, on sul juba natuke parem seis.
Mida teha, et botid ei saaks nii lihtsalt infot kätte?
Siin ei ole ühte maagilist nuppu, aga mõned sammud aitavad väga palju. Ausalt öeldes on point selles, et sa ei tee oma lehte botile lihtsaks sihtmärgiks.
- Ära kasuta lihtsat või etteaimatavat kasutajanime
Kui sul on endiselt “admin”, vaheta see välja. Kui muuta otse ei saa, tee uus administraatori konto, logi vana alt välja ja kustuta vana konto turvaliselt. - Pane kuvatav nimi ja sisselogimisnimi erinevaks
See on väike asi, aga aitab. Külastaja näeb autorina näiteks “Mari K”, mitte päris login nime. - Piira kasutajate infot REST API kaudu
Mõni plugin või arendaja saab selle üsna lihtsalt kinni keerata või piirata ainult neile juhtudele, kus seda päriselt vaja on. - Kaitse sisselogimist
Kui kasutajanimi isegi lekib, siis järgmine kaitsekiht peab ründe kinni pidama. Näiteks katsete piiramine, 2FA ja robotite blokeerimine. - Hoia WordPress ja pluginad ajakohased
Vanad pluginad annavad tihti lisavõimalusi kasutajate lekitamiseks või üldse möödahiilimiseks.
Kui sa ei taha neid asju ise nokitseda, siis WordPressi hooldusteenus ongi sisuliselt selle jaoks - et keegi vaatab need riskid üle, teeb uuendused ära ja hoiab saidil silma peal.
Kas REST API tuleks täiesti kinni panna?
Mitte alati. See on koht, kus tehakse päris tihti liiga järsk otsus. Mõnel lehel pole REST API avalik osa üldse vajalik ja siis võib piiramine olla okei. Aga mõni plugin või editor kasutab seda aktiivselt, nii et täielik sulgemine võib midagi katki teha.
Normaalne lähenemine on selline:
- piira ainult kasutajate endpointi
- testi, kas leht töötab pärast muudatust
- vaata üle pluginad, mis REST API-t vajavad
- lisa kõrvale sisselogimise kaitse ja tegevuslogi
Üldiselt on turvalisus kihiline. Mitte nii, et üks setting päästab kõik. Parem on mitu väikest kaitset korraga.
Mis juhtub, kui seda ignoreerida?
Halvimal juhul mitte midagi… kuni ühel päeval juhtub. See ongi tüütu osa. Leht võib kuude kaupa töötada täiesti okei ja siis hakkavad äkki imelikud login katsed, spämm, tundmatud kasutajad või ümbersuunamised pihta.
Kui uuendused on ka tegemata, läheb risk veel suuremaks. Sellest kirjutasime lähemalt siin: Miks WordPressi uuendusi ei tohi edasi lükata. Väike viivitus võib päris kalliks minna.
Ja kui leht on juba pihta saanud, siis ei piisa ainult parooli vahetusest. Siis tuleb kontrollida failid, kasutajad, pluginad, andmebaas ja vahel taastada backupist puhas versioon. Omajagu tööd, eriti kui sul endal pole aega ega kogemust.
Lihtne tegevusplaan väikeettevõtjale
Kui sul on ettevõtte koduleht või WooCommerce e-pood, siis tee vähemalt need asjad täna ära. Mitte “kunagi hiljem”. Täna.
- Kontrolli, kas
/wp-json/wp/v2/usersnäitab kasutajaid - Veendu, et sul poleks kasutajanimega “admin” või muid liiga lihtsaid nimesid
- Muuda kuvatav nimi sisselogimisnimest erinevaks
- Lisa sisselogimisele kaitse ja võimalusel 2FA
- Uuenda WordPress, teemad ja pluginad
- Testi, et sul oleks toimiv backup
Kui tahad kiiremat ja kindlamat lahendust, siis vaata ka haavatavuste kontrolli. See aitab leida teadaolevaid turvaauke enne, kui keegi teine need ära kasutab.
Nii et jah - REST API kasutajate leidmine ei ole mingi teoreetiline nipp, mida ainult suured häkkerid teavad. See on võrdlemisi tavaline automaatne kontroll, mida botid teevad iga päev. Mida vähem infot sa neile tasuta kätte annad, seda parem.
Ja ausalt, väikese ettevõtte jaoks on see päris hea koht, kust alustada. Pole liiga keeruline. Aga mõju on suur.