Stručně: Pokud chcete nechat odstranit malware ze svého webu, smazání jednotlivých souborů zřídka stačí. Nejprve zajistíme nález, najdeme webshelly, zadní vrátka a skryté úlohy, znovu sestavíme z důvěryhodných zdrojů a uzavřeme vstupní bránu. Teprve pak je vyčištění spolehlivé.
Podle čeho poznáte malware na webu
Škodlivý kód na webech se často projeví jen nepřímo. Typická jsou přesměrování na cizí stránky, spamový obsah viditelný jen pro vyhledávače nebo mobilní zařízení, varování Googlu ve výsledcích vyhledávání, stížnosti zákazníků nebo zablokování poskytovatelem hostingu kvůli rozesílání spamu. Na serveru se objevují neznámé soubory PHP, nové administrátorské účty, změněné soubory .htaccess nebo nevysvětlitelné cron úlohy.
Po PHP2Shell přibývá další obava: přes CVE-2026-109618 a CVE-2026-109619 mohou útočníci bez přihlášení spouštět kód. Neexistují zveřejněné potvrzené indikátory kompromitace (IOC); detekce se opírá o analýzu chování. Jak webshelly typicky vypadají a kde leží, popisuje stránka Rozpoznání a odstranění webshellů.
Odstranění malwaru z webu: proč je důkladnost důležitější než rychlost
Útočníci málokdy uloží jen jeden soubor. Obvyklých je více zadních vrátek na různých místech: ve složkách s nahranými soubory, v pluginech nebo šablonách, v must-use pluginech, v databázi, v cron úlohách nebo v dalších uživatelských účtech. Pokud se smaže jen nejnápadnější soubor, škodlivý kód se vrátí.
Napadený stav je zároveň důkazní prostředek. Kdo vyčistí předčasně, ztratí možnost zjistit, zda jsou dotčena data zákazníků. Proto před každou změnou vše zajistíme. Stojí to málo času a zachová vám to všechny cesty, i pozdější hlášení dozorovému úřadu nebo pojišťovně.
Aktualizace PHP ani CMS neodstraní škodlivý software, který už na serveru leží. A vyčištěný web bude znovu napaden, dokud je vstupní brána otevřená.
Kde se škodlivý kód typicky ukrývá
Následující místa kontrolujeme při každém vyčištění, protože jsou v praxi opakovaně postižena:
| Místo | Typický nález |
|---|---|
| Složky s nahranými soubory | soubory PHP s neškodně vypadajícími názvy nebo maskované jako obrázek |
| Pluginy, šablony, moduly | další soubory nebo změněné originální soubory |
| Konfigurace | vložené řádky v .htaccess, .user.ini nebo vstupních souborech |
| Databáze | cizí administrátorské účty, skripty v obsahu nebo v nastavení |
| Systém | cron úlohy, další klíče SSH, procesy bez rozpoznatelného účelu |
| Cache a dočasné složky | kopie škodlivého kódu, které se po smazání objeví znovu |
Důležitá je souvislost: jednotlivý nález málokdy vysvětlí celý incident. Teprve celkový obraz ukáže, jak útočník postupoval a zda si odnesl přístupové údaje.
Jak konkrétně pomáhá PHP SOS?
- Zajištění: Vytvoříme kopii souborů, databáze a logů v napadeném stavu. Zůstane zachována pro pozdější vyhodnocení.
- Hledání: Porovnáme programové soubory s originály výrobce, zkontrolujeme složky s nahranými soubory na spustitelný kód a prohledáme databázi, cron úlohy, uživatelské účty a konfiguraci serveru. Pro prostředí WordPress postupujeme podle popisu na stránce Hledání zadních vrátek ve WordPressu.
- Vyčištění: Jádro, rozšíření a šablony znovu nainstalujeme z důvěryhodných zdrojů, místo abychom podezřelé soubory jednotlivě záplatovali. Vlastní obsah a nahrané soubory kontrolujeme zvlášť a přebíráme jen to, co je nezávadné.
- Uzavření příčiny: Záplatujeme PHP a aplikaci, odstraníme cizí účty a vyměníme všechny přístupové údaje a klíče, které mohl útočník vidět.
- Následná kontrola: Po vyčištění sledujeme, zda se web znovu nemění, a podpoříme vás při ověření varování Googlu přes Search Console. Více na stránce Odstranění varování Googlu.
Pro administrátory neškodný první pohled na nedávno změněné soubory PHP:
# Soubory PHP ve webovém adresáři změněné za posledních 10 dní
find /var/www -type f -name "*.php" -mtime -10 -printf "%TY-%Tm-%Td %TH:%TM %p\n" | sort
Výsledek je indicie, ne důkaz: útočníci mohou měnit časová razítka.
Co získáte a co potřebujeme
Obdržíte zprávu s nalezenými škodlivými komponentami a místem jejich nálezu, opatřeními k vyčištění, seznamem vyměněných přístupových údajů a pravděpodobnou vstupní bránou. Jasně přitom rozlišujeme, co je doloženo, co pravděpodobné a co neznámé.
Od vás potřebujeme:
- přístup k serveru nebo hostingovému panelu, administraci CMS a databázi
- kontaktní osobu, která může schválit změny hesel a vypnutí
- informace o agentuře, vývojáři nebo poskytovateli hostingu a o vlastních úpravách systému
- existující zálohy s datem, abychom mohli posoudit, který stav by mohl být čistý
- přístup ke Google Search Console, pokud se zobrazuje varování
Co neslibujeme
Neslibujeme, že budou spolehlivě nalezena všechna zadní vrátka na každém systému, pokud chybí logy nebo je napadení dávné. Při nejasné situaci doporučujeme nové sestavení na čerstvém serveru, na který se přenese jen zkontrolovaný obsah. Je to náročnější, ale často spolehlivější cesta. Nepředvídáme ani, kdy Google nebo jiné služby varování odstraní; o tom rozhodují tito poskytovatelé.
Pokud je nutné soudně použitelně objasnit, co přesně se stalo a která data jsou dotčena, přizveme IT forenzní analýzu se specializovanými partnery. U akutního, stále probíhajícího útoku začíná práce nouzovou pomocí při napadeném webu.
Časté dotazy
Stačí plugin s antimalwarovým skenerem k vyčištění mého webu?
Skener najde známé vzorce, ale ne každá zadní vrátka. Webshelly jsou často zamaskované, leží v obrázcích, cache nebo databázi nebo jsou zakotvené jako cron úloha. Skener je pomůcka, ne úplné vyčištění.
Mohu prostě obnovit starou zálohu?
Jen pokud je jisté, že záloha vznikla před průnikem, a pokud se poté uzavře vstupní brána. Jinak je web krátce čistý a stejnou cestou je znovu napaden.
Proč se malware po smazání stále znovu objevuje?
Většinou existují druhá zadní vrátka, cron úloha, manipulovaný administrátorský účet, nebo je zranitelnost stále otevřená. Teprve když jsou nalezeny všechny mechanismy přetrvání a odstraněna příčina, vyčištění vydrží.
Odstraní aktualizace PHP existující malware?
Ne. Záplata zranitelnost uzavře, ale již vložený škodlivý software neodstraní. Jde o dva oddělené pracovní kroky.