Návod
Ako odvíriť web krok za krokom: návod na napadnutý web

Odvíriť web znamená viac než vymazať pár podozrivých súborov. Škodlivý kód sa na napadnutom webe schováva na niekoľkých miestach naraz, v súboroch aj v databáze, a útočník si k tomu takmer vždy nechá zadné vrátka, aby sa po vyčistení mohol vrátiť. Ak sa odstráni len to, čo je vidieť, web býva o dva týždne napadnutý znova. Tento postup odvírovania webu preto ide od zálohy cez čistenie až po zaplátanie diery a zrušenie varovania v Google, aby bol napadnutý web čistý natrvalo.
Postup je písaný pre WordPress, na ktorom beží väčšina slovenských firemných webov, ale princíp je rovnaký pri ktoromkoľvek systéme. Ak si ešte nie ste istí, či je web vôbec napadnutý, začnite článkom Ako zistiť, či je váš web napadnutý. A ak nemáte prístup na hosting alebo sa do súborov púšťať nechcete, odvírovanie webu robím s diagnostikou zadarmo, bežný web je čistý do 24 hodín.
Čo budete potrebovať
- prístup do administrácie webu s rolou administrátora,
- prístup na hosting: správcu súborov alebo FTP a správu databázy (phpMyAdmin),
- čistú kópiu jadra WordPressu, šablóny a doplnkov v rovnakých verziách, aké máte na webe (stiahnete z wordpress.org a od výrobcov),
- hodinu až tri hodiny času podľa veľkosti webu. Neponáhľajte sa, polovičné čistenie je horšie než žiadne.
Krok 1: Zastavte škody a urobte zálohu
Prvé, čo treba spraviť, je vziať útočníkovi prístup, ktorý má práve teraz. Zmeňte heslo do administrácie, na hosting, k databáze aj k FTP. Ak web posiela spam alebo presmerúva návštevníkov, dočasne ho vypnite (režim údržby alebo jednoduchá stránka „pracujeme na tom“), aby ďalej neškodil vašej doméne.
Potom urobte zálohu všetkého: súborov aj databázy. Áno, aj napadnutú. Slúži na dve veci: keby ste pri čistení niečo pokazili, máte sa kam vrátiť, a pri hľadaní škodlivého kódu sa hodí porovnať, čo bolo kde. Zálohu uložte mimo hostingu, do počítača alebo do cloudu.
Krok 2: Zistite, kadiaľ sa útočník dostal dnu
Toto je krok, ktorý ľudia najčastejšie preskočia, a preto sa im napadnutie opakuje. Diera býva jedna z troch: zastaraný doplnok alebo šablóna so známou chybou, slabé heslo (alebo účet, ktorého heslo uniklo inde), alebo cudzí administrátorský účet, ktorý si útočník vytvoril pri predošlom napadnutí.
Pozrite si zoznam doplnkov a ich verzie a porovnajte s tým, čo je aktuálne. Doplnok, ktorý je dva roky neaktualizovaný alebo ho výrobca už nevyvíja, je hlavný podozrivý. Skontrolujte zoznam používateľov a zmažte každého administrátora, ktorého nepoznáte. Ak má hosting prístupové logy, hľadajte v nich opakované požiadavky na jeden súbor tesne pred napadnutím; tam je zvyčajne odpoveď.
Krok 3: Vyčistite súbory
Najspoľahlivejšia metóda nie je hľadať škodlivý kód, ale nahradiť všetko, čo sa nahradiť dá, čistými originálmi:
- Jadro WordPressu. Zmažte priečinky wp-admin a wp-includes a nahrajte ich z čistej kópie rovnakej verzie. V koreni webu nahraďte všetky súbory okrem wp-config.php a .htaccess.
- Šablóna a doplnky. Každý priečinok v wp-content/themes a wp-content/plugins zmažte a nahrajte z originálu. Doplnky, ktoré nepoužívate, nenahrávajte späť vôbec.
- Priečinok uploads. Sem patria len obrázky, videá a dokumenty. Každý súbor .php, .js alebo súbor s náhodným názvom v ňom je cudzí. Prezrite ho celý, útočníci sem radi ukladajú zadné vrátka, lebo sa tu nikto nepozerá.
- wp-config.php a .htaccess. Tieto dva súbory otvorte a prečítajte. V wp-config.php nemá byť nič okrem nastavení databázy a kľúčov, dlhý zakódovaný riadok na začiatku alebo konci je škodlivý. V .htaccess nemajú byť pravidlá s presmerovaním, ktoré ste nepísali.
- Hľadajte zvyšky. Cez správcu súborov vyhľadajte výrazy ako eval(, base64_decode(, gzinflate( a str_rot13( vo všetkých .php súboroch. Legitímny kód ich používa výnimočne, škodlivý takmer vždy.

Krok 4: Vyčistite databázu
Na databázu sa zabúda najčastejšie, a pritom je to obľúbené miesto na presmerovania a spam. V phpMyAdmin prezrite tri miesta:
- Tabuľka wp_options, hlavne riadky siteurl a home (musia byť vaša doména) a všetky riadky, v ktorých je cudzí JavaScript alebo dlhý zakódovaný text.
- Tabuľka wp_posts: cudzie príspevky a stránky (tie „japonské“ podstránky z vyhľadávania sú práve tu) a vložené skripty v obsahu existujúcich stránok.
- Tabuľka wp_users: ešte raz účty. Cez databázu je vidieť aj tie, ktoré sa v administrácii schovávajú.
Vyhľadávanie v celej databáze zvládne phpMyAdmin (záložka Hľadať, výrazy <script, eval(, base64). Pred každým mazaním v databáze majte zálohu z kroku 1, tu sa chyby nedajú vrátiť tlačidlom späť.
Krok 5: Zaplátajte dieru a vymeňte všetky prístupy
Teraz to, čo rozhoduje, či bude web čistý aj o mesiac. Aktualizujte jadro, šablónu a všetky doplnky na najnovšie verzie. Doplnok, ktorý bol dierou a nemá opravu, nahraďte iným alebo ho zmažte. Ak hosting ponúka novšiu verziu PHP, prepnite na ňu, stará verzia PHP má vlastné diery.
Potom vymeňte úplne všetky heslá ešte raz, lebo tie z kroku 1 mohol útočník zachytiť, kým bol jeho kód aktívny: administrácia, hosting, databáza (nové heslo zapíšte do wp-config.php), FTP a e-mailové schránky na doméne. V wp-config.php vygenerujte nové bezpečnostné kľúče (WordPress má na to generátor na api.wordpress.org/secret-key/1.1/salt/), tým sa odhlásia všetky prihlásené relácie vrátane útočníkovej. Zapnite dvojfaktorové prihlásenie.
Krok 6: Skontrolujte web a požiadajte Google o prehodnotenie
Prejdite hlavné stránky, formulár a pri e-shope celú objednávku s platbou. Otvorte web z telefónu cez Google, aby ste videli to, čo vidia zákazníci. Spustite online skener (Sucuri SiteCheck, VirusTotal), či už nič nehlási.
Ak Google pri webe ukazoval varovanie, otvorte Search Console, časť Bezpečnosť a manuálne akcie, a odošlite žiadosť o prehodnotenie. Do správy stručne napíšte, čo bolo napadnuté a čo ste spravili. Google web znova prezrie a varovanie zruší zvyčajne do jedného až troch dní. Ak web pozastavil hosting, pošlite im rovnakú správu, aby ho spustili. Ak doména skončila na čiernych listinách pre spam, požiadajte o vyradenie (napríklad na mxtoolbox.com nájdete, na ktorých ste).
Najčastejšie chyby pri odvírovaní
| Chyba | Prečo to nestačí |
|---|---|
| Obnoviť zálohu a hotovo | Záloha obsahuje tú istú dieru a často aj samotný škodlivý kód, ktorý bol na webe týždne pred tým, než sa prejavil. |
| Vymazať len to, čo hlási skener | Skener vidí zvonku a nájde prejav, nie príčinu. Zadné vrátka v uploads a v databáze ostanú. |
| Nezmeniť heslá a kľúče | Útočník má stále platné prihlásenie, aj keď je kód preč. |
| Neaktualizovať po vyčistení | Diera ostáva otvorená a automaty ju nájdu znova, zvyčajne do dvoch týždňov. |
| Nechať vypnuté doplnky na serveri | Vypnutý doplnok je stále kód so známou dierou, ktorý sa dá spustiť priamo. |
Kedy to radšej nechať na niekoho iného
Odvíriť web podľa tohto postupu zvládne každý, kto sa nebojí správcu súborov a phpMyAdmin. Sú ale situácie, kde je lepšie zavolať pomoc: e-shop, kde je v hre platobná brána a údaje zákazníkov. Web, ktorý je napadnutý opakovane; hosting, na ktorom beží viac webov naraz (napadnutie sa medzi nimi šíri) alebo jednoducho nedostatok času, lebo každý deň s varovaním v Google stojí zákazníkov.
V takom prípade mi pošlite adresu webu. Diagnostika je zadarmo, poviem, čo sa deje a koľko bude náprava stáť: odvírovanie webu stojí 199 €, e-shopu 499 €, vrátane zaplátania diery, nových prístupov a žiadosti o zrušenie varovania v Google. Bežný web je čistý do 24 hodín. A aby sa to neopakovalo, pravidelná správa webu drží aktualizácie, zálohy a kontrolu súborov za vás.
Zhrnutie: ako odvíriť web v šiestich krokoch
- Zmeňte heslá, vypnite web a urobte zálohu súborov aj databázy.
- Nájdite dieru: zastaraný doplnok, slabé heslo alebo cudzí účet.
- Nahraďte jadro, šablónu a doplnky čistými originálmi, prezrite uploads, wp-config.php a .htaccess.
- Vyčistite databázu: wp_options, wp_posts, wp_users.
- Aktualizujte všetko, vymeňte všetky prístupy a bezpečnostné kľúče, zapnite dvojfaktorové prihlásenie.
- Skontrolujte web a požiadajte Google, hosting a čierne listiny o prehodnotenie.
Cenová ponuka