zpět na technikálie

Zavirovaný web: jak se zbavit infekce krok za krokem?

Nedávno jsem řešil zavirovaný web, který byl prolezlý kousky cizího kódu.

Jak se zavirovaný web (postavený na WordPress) choval? Když přišel na web nový návštěvník, byl přesměrován na stránku typu "vyhráli jste iPhone" atd., ale při druhé návštěvě web již fungoval normálně.

Dále popisuji, jak se mi podařilo infikované soubory najít a odstranit.

Zavirovaný web: jak se zbavit infekce krok za krokem?

Datum poslední změny: 11. 12. 2023

Zběžný pohled do administrace

Mrkl jsem jak to vypadá v administraci WP: instalovaná dvě témata, aktivní (samozřejmě) jen jedno, to neaktivní nějaké neznámé. Kupa neaktualizovaných pluginů, některé roky. Zazálohoval jsem databázi a FTP a deaktivoval právě tyhle roky neudržované pluginy. Web dle zběžného proklikání "fachčil". Staré pluginy jsem tedy smazal a přesunul se na FTP.

WP-config

Své pátrání jsem začal klasicky ve wp-config.php a hned narazil na stopu: na konci souboru mě udeřila do očí přidaná cesta k souboru header.php:

include_once(ABSPATH . WPINC . '/header.php');

Proč header.php? Header by měl být přece v šabloně normálně. Šablony jsou ale běžně uložené ve /wp-content/themes. Ne ve složce /wp-includes (WPINC). Copá v tom souboru teda je?

První tři řádky jsou podezřelé samy o sobě: vypnutí výpisu chyb a definice globální proměnné zeeta:

<?php @ini_set('display_errors', '0');
error_reporting(0);
global $zeeta;

Co si o souboru myslel ChatGPT?

ChatGPT si taky myslí, že je soubor zavirovaný

Vida, “chytrá doplňovačka” si to taky myslí. Zkusmo jsem tedy soubor smazal. Web běžel dál. Smazal jsem tedy i řádek z wp-config, kde "spočívala" cesta na header.php.

Po stopách zeeta

Prohledal jsem instalaci WordPressu a vydal se po stopách tajemné zeeta.

Hledání infekce v instalaci WordPress

Tady ještě před smazáním header.php.

Do očí udeří, že zeeta je zavrtaná v šablonách. Nejprve jsem prokrastinoval a smazal složku “nějaké” zálohy. Zase beztrestně (web jel). Šablona Skeleteon nebyla použitá, takže jsem ji na férovku smazal. Kdoby také chtěl schraňovat kostlivce ve WordPressu, že? S aktivním tématem to takhle naneštěstí nejde. Fňuk.

Wordfence

Nainstaloval jsem Wordfence a spustil scan. Našel další prolezlé soubory:

  • wp-includes/class-wp-http-netfilter.php - obsahoval tučný seznam IP adres a po smazání se vždy objevil po chvíli znova (grrr).
  • wp-content/uploads/2021/05/wp-load.php - php soubor v uploads? Pravděpodobně tenhle soubor připutoval na server jako první. Uvnitř čekaly na svou příležitost řádky kódu, které nabádaly ke stahování (kdoví odkud) a nalézt se dal i již zmíněný include cesty k header.php.

Zpropadený netfilter.php

Po smazání souboru netfilter.php se ten všivák do minuty vždy natáhl zpět. Ale naděje umírá poslední! Stále není dořešena infekce v souboru function.php hlavního tématu.

Extrémní řešení (smazání souboru) se samozřejmě nevyplatilo. Z frontendu webu jsem tak udělal "kůlničku na dříví". Nezbylo než se ponořit do kódu.

Při otevření souboru nás s otevřenou náručí vítá nám již známá zeeta a samozřejmě vypnutí chybových hlášek. Ty stejně nikdo nevidí rád.

<?php
 @ini_set('display_errors', '0');
error_reporting(0);
global $zeeta;

Chvíli jsem koukal do kódu, jako husa do flašky, až jsem si všiml odlišného coding style mezi začátkem souboru a zbytkem. První část neměla vůbec žádné komentáře, proměnné neměly popisné názvy a navíc mi z kódu vůbec nebylo jasné, o co tam jde. A to by aspoň rámcově u šablony být asi mělo, ne?

Rozhodl jsem se tedy udělal “řez”. Voilà web šlapal. Co víc! Všivák netfilter.php se po smazání už neobjevil a Wordfence už také žádný podežřelý soubor nenalezl.

Přesměrování na frontendu je také pryč. Klient s kolegy jsou happy, that makes me taky happy.

Příště se podíváme na prevenci. Řešíš-li něco podobného a necítíš se na řešení, neváhej mě kontaktovat. Buď tě infekce "zbavím na klíč" nebo se na ni podíváme v rámci konzultace.

WordPressito

Měsíční newsletter pro lidi, kteří chtějí, aby jejich WordPress spolehlivě fungoval.

Dozvíš se:

🔌 Tipy na užitečné pluginy a nástroje.
🆕 Novinky z WordPress světa.
💡 Praktické návody a rady.

srknu WordPressito
linkedin facebook pinterest youtube rss twitter instagram facebook-blank rss-blank linkedin-blank pinterest youtube twitter instagram