Stručně: Webshell je malý soubor, přes který může cizí osoba vzdáleně ovládat váš server. Kdo ji našel, je velmi pravděpodobně zasažen a měl by se ihned ozvat. Nemazat, neotevírat, nejdřív zajistit. Na dálku objasníme, jak se na server dostala, zda existují další přístupy, a server vyčistíme.
Nyní nic nemažte a nic znovu nenasazujte. Také samotná webshell zatím zůstane ležet, aby ji bylo možné zajistit. Týká se to vás? Zavolejte nebo napište přes WhatsApp, nebo nález nahlaste přes Nahlásit nouzi.
Našli jste webshell: co to znamená?
Webshell je skript PHP (nebo skript v jiném serverovém jazyce), který přijímá příkazy zvenčí. Útočníci tak mohou číst soubory, stahovat data, dohrávat škodlivý kód a dosáhnout dalších systémů. Soubor proto jen zřídka bývá cílem útoku. Je to zadní vrátka, která po sobě zanechává vloupač, aby se mohl vrátit.
Z toho plynou dva důsledky. Za prvé: někdo už měl na váš server přístup pro zápis nebo mohl spouštět kód. Za druhé: nalezený soubor pravděpodobně není jediný. K tomu přistupuje, co často nevíte: od kdy tam leží a co se s ním mezitím dělo?
Podle čeho webshell poznáte
- soubor PHP ve složce, kde žádný být nemá, například v nahraných souborech, cache, obrázcích nebo dočasných adresářích
- názvy souborů, které vypadají jako systémové soubory, ale k vašemu software nepatří, nebo názvy s dvojitou příponou
- nečitelný kód s dlouhými řetězci znaků, kódováním a funkcemi pro spouštění příkazů, viz Rozpoznání zastřeného kódu PHP
- datum změny, které nesedí k vašim aktualizacím
- přístupy k tomuto souboru v lozích, často z cizích adres a s požadavky POST
- procesy webového serveru, které spouštějí shell, jak je popsáno v článku Varovný signál: webový server spouští shell
Jak nálezy správně vyložit, najdete v článku Soubory PHP ve složce pro nahrávání a podrobně v článku Rozpoznání a odstranění webshellů.
Co udělat hned
- Soubor neotevírat a nespouštět. Žádné testy v prohlížeči.
- Nemazat ani nepřesouvat. Neměňte obsah ani časová razítka.
- Zapsat si: úplnou cestu, název souboru, čas nálezu, kdo ho objevil a čím.
- Zajistit soubor a metadata: kopii s vlastníkem, oprávněními a časovými razítky. Stačí kontrolní příkazy jen pro čtení, například:
bash
stat /pfad/zur/datei.php
sha256sum /pfad/zur/datei.php
- Uchovat logy: nenechte přepsat přístupové a chybové protokoly webového serveru a PHP. Odborný tisk radí uchovat logy serveru od 20. 10. 2026.
- Server v případě potřeby odstínit: pokud tušíte, že unikají data, odpojte web od sítě. Jak přitom zachovat důkazy, popisuje stránka Zajistit důkazy před novou instalací.
- Informovat nás, než se změní hesla nebo vyčistí soubory.
Jak PHP SOS konkrétně pomáhá?
- Zmapování situace: Co bylo nalezeno, kde, kdy a kým? Jaké systémy leží na stejném serveru?
- Zajištění a uzavření: Zajistíme nález, soubory, databázi a logy a zablokujeme přístupy, které působí podezřele.
- Kontrola a vyčištění: Hledáme další webshelly, změněné základní soubory, skryté cron úlohy, cizí účty administrátorů a neznámé klíče SSH a odstraňujeme je. Postup odpovídá službě Odstranění malwaru a webshellů.
- Hardening a zpráva: Pojmenujeme pravděpodobný vstupní bod, uzavřeme ho a server zabezpečíme. Dostanete dokumentaci s nálezy a časovou osou.
Jak se webshell dostala na server?
Typické cesty jsou zastaralé pluginy nebo rozšíření, nezabezpečená nahrávání souborů, odcizené přístupové údaje a zranitelnosti v software serveru. Od zveřejnění PHP2Shell přibývá další možnost: PHP bez oprav z verzí 8.5.12, 8.4.27, 8.3.36 nebo 8.2.35 lze zneužít ke vzdálenému spuštění kódu. Potvrzené indikátory kompromitace (Indicators of Compromise) k tomu neexistují, detekce se opírá o chování. Zda vstup u vás vedl přes PHP2Shell, nebo jinou cestou, lze odvodit jen ze stop, a my označujeme, co je doloženo a co domněnka. Jak v tom pomáhají logy, ukazuje článek Vyhodnocení logů webového serveru.
Záplata přitom existující webshell neodstraní. K tomu patří i ochrana proti budoucím nálezům: Zakázat spouštění PHP ve složkách pro nahrávání brání mnoha případům. Mějte také na paměti hranice skenerů malwaru: sken bez nálezu není signál, že je vše v pořádku.
Pokud potřebujete vědět, co přesně se stalo, například pro pojišťovnu nebo úřady, může být smysluplná IT forenzní analýza.
A co když se webshell po smazání vrací?
To se stává často a mívá to zpravidla dvě příčiny. Buď existují alespoň jedna další zadní vrátka, která nález znovu vytvářejí, nebo je vstupní brána dál otevřená a útočník prostě přijde znovu. Ani jedno se nevyřeší opakovaným mazáním. Proto hledáme souhrn všech změn: nové a změněné soubory, záznamy v databázi a konfiguraci, naplánované úlohy, účty. Seznam nedávno změněných souborů je přitom rozumným začátkem, ale nenahrazuje kontrolu odborníky.
Co nám poslat
- cestu a název souboru, pokud možno jako kopii s časovými razítky (způsob předání dohodneme)
- výňatky z přístupových logů kolem tohoto souboru, pokud máte přístup
- druh serveru, hosting, verzi PHP a provozní režim, pokud jsou známy
- jaké weby a aplikace na serveru běží
- kdy naposledy proběhly aktualizace, nahrávání nebo změny
Proč PHP SOS
Pracujeme v duchu „Made in Germany“ a spolu s naší partnerskou sítí odborníků na kybernetickou bezpečnost se již více než 25 let specializujeme na IT bezpečnost. Jeden kontaktní bod vás incidentem provede. Pracujeme na dálku bez cestování v celém Německu i v Evropě, dokumentujeme každý krok a nedáváme sliby, které nikdo nemůže splnit. Zůstáváme u toho, dokud není incident uzavřen a zdokumentován.
Týká se to vás? Zavolejte nám. Pomůžeme.
Nalezená webshell je varovné znamení, které byste měli brát vážně. Ozvěte se hned, telefonem nebo přes WhatsApp, a my přebíráme situaci od první zprávy. Nahlásit nouzi hned
Časté dotazy
Našel jsem webshell. Smím soubor jednoduše smazat?
Prosím ne jako první krok. Soubor ukazuje, kdy a čím útočník přišel. Nejdřív ho zajistěte včetně časových razítek a vlastníka, poté se cíleně odstraní. Kdo jen maže, zpravidla zanechá další přístupy.
Mám podezřelý soubor otevřít v prohlížeči, abych viděl, co dělá?
Ne. Otevření může škodlivý kód spustit a smazat další stopy. Soubor kontrolujte jen pro čtení a nejlépe na kopii.
Stačí skener malwaru k nalezení všech webshellů?
Ne spolehlivě. Skenery rozpoznávají známé vzory, ale zastřené nebo nově vytvořené webshelly jim unikají. Čistý sken neprokazuje, že už nic nezbylo.
Jak zjistím, jak dlouho už webshell na serveru leží?
Vodítko dávají datum změny, přístupové a chybové logy i srovnání s dalšími novými soubory. Časová razítka však lze zfalšovat. Proto posuzujeme více zdrojů a označujeme, co je doloženo a co domněnka.
Musím nález nahlásit?
Jakmile by mohly být dotčeny osobní údaje, může být nutné hlášení dozorovému úřadu. K tomu poradí pověřenec pro ochranu osobních údajů nebo právníci; technická fakta dodáme my.