
Napadnutý WordPress: ako spoznať, že vás hacklo, a čo robiť hneď
Zvyčajne to začína telefonátom od zákazníka: „Kliknul som na váš web a skončil som na kasíne." Vy si web otvoríte na počítači a všetko je v poriadku. Nie je. Škodlivý kód na napadnutých WordPress weboch býva nastavený tak, aby sa neukazoval prihlásenému správcovi ani návštevníkovi, ktorý príde priamo, a presmerúval iba ľudí z vyhľadávania a z mobilu.
Nižšie je postup na prvú hodinu, poradie čistenia, ktoré naozaj funguje, a poctivá odpoveď na otázku, kedy už web nemá zmysel látať.
Web nefunguje alebo spomalil?
WordPress aj stránky na mieru. Väčšinu porúch riešim v deň nahlásenia.
Príznaky: podľa čoho spoznáte napadnutie
Stačí jeden z nich, aby ste konali hneď:
- Presmerovanie na cudzí web, najmä z mobilu alebo po kliknutí vo výsledkoch Googlu. Vyskúšajte to z telefónu cez mobilné dáta, nie z počítača, kde ste prihlásení.
- Upozornenie od Googlu. Pri výsledku vyhľadávania sa objaví poznámka, že web môže byť napadnutý, alebo Chrome ukáže červenú výstražnú obrazovku.
- Stránky, ktoré ste nikdy nevytvorili. Do vyhľadávania napíšte
site:vasadomena.sk. Ak uvidíte stovky stránok v japončine, s liekmi alebo kasínom, ide o takzvaný japonský spam, jedno z najrozšírenejších napadnutí. - Neznámy správca v zozname používateľov WordPressu.
- Hosting pozastavil účet alebo píše, že z vášho priestoru odchádza spam.
- Search Console, sekcia Zabezpečenie a ručné akcie: ak tam je hlásenie o bezpečnostnom probléme, Google už napadnutie potvrdil.
Prvá hodina: čo urobiť a čo nerobiť
Urobte:
- Kópiu aktuálneho stavu súborov aj databázy, ešte pred akoukoľvek zmenou. Je to dôkaz, podľa ktorého sa hľadá, kadiaľ útočník prišiel. Vymazaním si túto stopu zničíte.
- Zmeňte všetky heslá: hosting, FTP alebo SFTP, databáza, všetci správcovia WordPressu a e-mail, na ktorý chodí obnova hesla.
- Odstráňte neznámych správcov a skontrolujte práva ostatných účtov.
- Ak web posiela návštevníkov na podvodné stránky, zatvorte ho stránkou údržby. Chránite zákazníkov aj meno firmy. Deň bez webu je lacnejší než týždeň, keď ľudí posielate na podvod.
- Napíšte hostingu. Mávajú prístupové logy, z ktorých je vidieť, kedy a odkiaľ sa útok stal.
- Ak sú na webe formuláre alebo e-shop, zistite, či sa útočník mohol dostať k osobným údajom. Pri riziku pre ľudí platí oznamovacia povinnosť do 72 hodín, viac v článku GDPR pre malú firmu.
Nerobte:
- Neobnovujte naslepo poslednú zálohu a nepovažujte vec za vybavenú. Záloha už môže obsahovať zadné dvierka a diera, cez ktorú útočník prišiel, zostáva otvorená.
- Neinštalujte tri bezpečnostné pluginy naraz. Pridáte cudzí kód a pocit istoty, dieru nezavriete.
- Nečakajte, že to prejde. Google napadnutý web v priebehu dní vyradí z výsledkov a reklamy naň prestane zobrazovať.
Ako sa útočník dostal dnu
Na WordPresse sú to takmer vždy tie isté cesty:
- Neaktualizovaný plugin alebo téma so známou zraniteľnosťou. Autor vydá opravu, zraniteľnosť sa zverejní a automatické skripty ešte v ten týždeň prechádzajú internet a hľadajú weby, ktoré neaktualizovali.
- Pirátska „nulled" téma alebo plugin. Platená téma zadarmo zo zdieľacej stránky má zadné dvierka priamo v sebe. Tu nepomôže ani aktualizácia.
- Opustený plugin, ktorý autor prestal vyvíjať. Zraniteľnosť v ňom už nikto neopraví.
- Slabé alebo opakované heslo bez dvojfaktorového overenia.
- Iný web na tom istom hostingovom účte, napríklad zabudnutá testovacia kópia
stary.vasadomena.sk. Útočník vojde cez ňu a dostane sa ku všetkému vedľa.
Z toho plynie hlavné pravidlo: samotné vyčistenie bez nájdenia diery nemá zmysel. Web bude čistý do najbližšieho prechodu robota.
Čistenie v správnom poradí
Poradie je dôležité, lebo škodlivý kód sa obnovuje z miest, na ktoré sa pri rýchlom čistení zabúda:
- Jadro WordPressu porovnajte s oficiálnou verziou. Príkaz
wp core verify-checksumscez WP-CLI ukáže každý zmenený súbor. Najistejšie je jadro celé preinštalovať. - Pluginy a témy nahraďte čistými kópiami z oficiálnych zdrojov. Nepoužívané zmažte, pirátske bez diskusie.
- Priečinok
wp-content/uploads: nesmie v ňom byť žiadny PHP súbor. Ak tam je, je cudzí. - Súbory
wp-config.php,.htaccessa priečinokmu-plugins: sem sa presmerovania a zadné dvierka ukladajú najradšej. - Databáza: tabuľka s nastaveniami (adresa webu, zoznam aktívnych pluginov), používatelia, vložené skripty v obsahu článkov a naplánované úlohy.
- Nové bezpečnostné kľúče vo
wp-config.php. Odhlásia všetkých, aj útočníka s ukradnutou reláciou. - Aktualizácie, dvojfaktorové overenie a obmedzenie pokusov o prihlásenie.
- Search Console: v sekcii Zabezpečenie a ručné akcie požiadajte o opätovnú kontrolu. Stránky, ktoré vytvoril útočník, musia vracať 404 alebo 410, a pošlite znova sitemap.
Ako rozpoznať ostatné poruchy, ktoré s napadnutím nesúvisia, píšem v článku oprava WordPress stránky.
Chcete vedieť, čo brzdí váš web?
Prejdem ho tak, ako ho vidí Google, a pošlem konkrétny zoznam do 3 pracovných dní.
Koľko stojí, keď sa nerobí nič
Napadnutie nie je technická drobnosť, ktorá môže počkať do budúceho mesiaca:
- Návštevnosť z Googlu padá, kým upozornenie pri výsledku visí. A zmizne až po opätovnej kontrole.
- Reklama sa zastaví. Google Ads nezobrazuje reklamy, ktoré vedú na napadnuté weby, a platíte za kampaň, ktorá nebeží.
- E-maily končia v spame. Ak sa zo servera rozposielal spam, doména sa ocitne na čiernych listinách a s ňou aj vaše faktúry a ponuky.
- Dôvera. Zákazník, ktorého ste poslali na podvodnú stránku, sa už nevráti.
Kedy už nečistiť, ale postaviť web nanovo
Poviem to na rovinu: WordPress s pluginmi od dvadsiatich rôznych autorov je technológia, ktorej údržba je trvalý náklad, a napadnutie je len účet za vynechanú údržbu. Jednorazové napadnutie udržiavaného webu sa oplatí vyčistiť. Látanie prestáva dávať zmysel, keď:
- je to druhé napadnutie za rok;
- web stojí na pirátskej téme alebo na page builderi s tridsiatimi pluginmi, z ktorých polovicu už nikto nevyvíja;
- pluginy vyžadujú starú verziu PHP a pri aktualizácii sa web rozpadne;
- nikto nebude web mesačne aktualizovať, a teda o rok ste tu znova.
Vtedy je lacnejšie postaviť web nanovo na modernom stacku. Napríklad web generovaný vopred cez Next.js nemá na verejnej adrese prihlasovaciu stránku, nemá databázu, do ktorej by sa dalo zapísať, a nemá pluginy od cudzích autorov. Žiadny web nie je nenapadnuteľný, ale útočná plocha je zlomok toho, čo má bežný WordPress. Takto beží aj tento web: bez databázy a administrácie na verejnej adrese, s odpoveďou servera za približne 0,09 sekundy.
Porovnanie oboch prístupov je v článku WordPress alebo web na mieru, reálne ceny nového webu v článku koľko stojí web na Slovensku.
Ako sa napadnutiu vyhnúť, kým web ešte beží
Ak web zatiaľ nahradiť nechcete, minimum je jasné: aktualizácie raz mesačne, zálohy mimo servera s vyskúšaným obnovením, dvojfaktorové overenie pre všetkých správcov a zmazanie všetkého nepoužívaného. Čo presne patrí do údržby a koľko to stojí, rozoberám v článku správa a údržba WordPress webu.
Ak potrebujete pomoc
Čistím napadnuté weby vrátane nájdenia a zavretia diery, cez ktorú útočník prišiel, a vybavím opätovnú kontrolu v Search Console. Hodinová sadzba 35€, diagnostiku robím zvyčajne v deň nahlásenia a odhad poviem ešte pred prácou. Hosting za vás neprevádzkujem a právne poradenstvo ku GDPR neposkytujem. Moja časť je web, jeho vyčistenie a zabezpečenie.
Nové weby staviam na modernom stacku, bez pluginov a bez verejnej administrácie. Na Slovensku žijem viac ako desať rokov, spustil som 12+ webov pre slovenské firmy a pracujem ako slovenské s.r.o. s faktúrou, ktorú si dáte do nákladov.
Detaily na stránke služby „Oprava webstránky a WordPress webu". Ak chcete najprv vedieť, čo s webom je, bezplatný audit s výsledkom do 3 pracovných dní.
Potrebujete nový web?
Firemný web, e-shop alebo rezervačný systém. Väčšinu projektov odovzdávam do 15 pracovných dní.
