Aktuálna situácia: PHP2Shell. Dve kritické zraniteľnosti PHP (CVSS 9.2) umožňujú spustenie škodlivého kódu bez prihlásenia. Záplaty od 21. 10. 2026.Čo treba urobiť teraz →

Rozpoznať webshell a odstrániť ju

Ako vypátrať backdoory na webových serveroch s PHP bez zničenia stôp a prečo samotné zmazanie zriedka stačí.

Stav 4 min čítaniaPríručky

Stručne: Webshell rozpoznáte podľa nových alebo zmenených súborov PHP na netypických miestach, podľa cudzích procesov používateľa webového servera a podľa nezvyčajných spojení. Zabezpečte stopy skôr, než niečo zmažete, a obnovte kód z čistého zdroja. Samotná záplata backdoor neodstráni.

Prečo sú webshelly po PHP2Shell téma

Zraniteľnosti CVE-2026-109618 a CVE-2026-109619 v samotnom PHP umožňujú vykonanie škodlivého kódu na diaľku bez prihlásenia. Samozrejmým cieľom po úspešnom útoku je trvalý backdoor, teda webshell. Zostane zachovaná, aj keď bolo PHP medzitým aktualizované.

Podľa správ médií sa prvý pokus o útok pozoroval už 17. 10. 2026, záplaty nasledovali 21. 10. Kto bol v tomto období zraniteľný, mal by cielene skontrolovať systém. Potvrdené Indicators of Compromise zatiaľ nie sú zverejnené. Hľadanie sa preto opiera o nápadnosti v správaní, nie o hotový zoznam.

Konajte hneď

Ak nájdete webshell na serveri so zákazníckymi údajmi: nič unáhlene nemažte. Najprv zabezpečte dôkazy, potom server izolujte a naplánujte ďalší postup.

Ako webshell rozpoznať: kontrola súborov

Väčšina webshellov sú súbory PHP vo webovom adresári. Nápadné sú súbory, ktoré vznikli alebo sa zmenili po 17. 10., súbory PHP v priečinkoch s uploadmi a cache a súbory so zahmleným kódom. Nasledujúce príkazy nič nemenia, iba vypisujú:

# Súbory PHP zmenené od 17. 10. 2026
find /var/www -type f -name "*.php*" -newermt "2026-10-17" -ls

# Súbory PHP v priečinkoch upload, cache alebo tmp
find /var/www -type f -name "*.php*" \( -path "*upload*" -o -path "*cache*" -o -path "*tmp*" \) -ls

# Typické zahmlenie: eval v kombinácii s dekódovaním
grep -rlE "eval\s*\(\s*(base64_decode|gzinflate|str_rot13|gzuncompress)" /var/www --include="*.php"

# Nezvyčajne dlhé riadky často naznačujú zabalený kód
grep -rlE ".{3000,}" /var/www --include="*.php"

Nálezy sú indície, nie dôkazy. Niektoré pluginy legitímne používajú kódovaný kód. Podozrivé súbory porovnajte s originálnym balíkom výrobcu. Najspoľahlivejšie je porovnanie s kontrolnými súčtami alebo so systémom na správu verzií, ako je Git:

# Odchýlky od posledného známeho stavu v repozitári Git
git -C /var/www/projekt status --porcelain

Časová pečiatka môže byť sfalšovaná. Nespoliehajte sa preto iba na dátum zmeny súboru.

Podľa akých znakov je súbor podozrivý

Znak Prečo je nápadný
Súbor PHP v priečinku s uploadmi alebo obrázkami Tam by mali ležať iba médiá
Dvojitá prípona ako .jpg.php alebo .php.png Maskovanie ako neškodný súbor
Veľmi dlhé riadky bez zalomenia Typické pre zabalený alebo zašifrovaný kód
Názov súboru podobný jadrovému súboru, ale nie v originálnom balíku Maskovanie v známom prostredí
Vlastník alebo oprávnenia sa líšia od susedných súborov Súbor bol vytvorený iným spôsobom

Čím viac znakov sa spojí, tým vyššia je pravdepodobnosť nálezu. Podozrivé súbory otvárajte iba ako text, nikdy cez prehliadač, pretože zavolanie cez web by kód vykonalo.

Kontrola procesov, spojení a cronjobov

Aktívna webshell často zanecháva stopy mimo súborového systému. Používateľ webového servera, napríklad www-data, apache alebo nginx, bežne nespúšťa shelly, sieťové nástroje ani kompilátory.

# Procesy typických používateľov webového servera
ps -eo user,pid,ppid,lstart,cmd | grep -E "^(www-data|apache|nginx)"

# Otvorené sieťové spojenia s príslušným procesom
sudo ss -tunap | grep -E "php|www-data|apache|nginx"

# Plánované úlohy používateľa webového servera
sudo crontab -u www-data -l
ls -la /etc/cron.d /var/spool/cron 2>/dev/null

Nápadné sú trvalé odchádzajúce spojenia na neznáme ciele, procesy s kryptickými názvami a cronjoby, ktoré sťahujú súbory z internetu. Skontrolujte navyše prístupové logy, či neobsahujú požiadavky na súbory, ktoré predtým neexistovali. Ako na to, popisuje príručka Vyhodnotenie logov webového servera po útoku.

Zabezpečiť stopy skôr, než odstránite

Kto najprv maže, stratí odpoveď na najdôležitejšie otázky: ako sa útočník dostal dnu, čo videl, ktoré údaje sú dotknuté? Tieto odpovede potrebujete pre prípadné oznámenie podľa GDPR, pre poisťovateľov a pre rozhodnutie, či sú ohrozené ďalšie systémy.

Zmysluplné poradie:

  1. Zdokumentovať stav: zoznam procesov, sieťové spojenia, prihlásení používatelia.
  2. Podozrivé súbory a logy skopírovať s kontrolným súčtom bez ich otvárania alebo spúšťania.
  3. Ak je to možné, vytvoriť obraz systému alebo snapshot virtuálneho stroja.
  4. Server odpojiť od siete alebo prístup výrazne obmedziť.

Pri systémoch s citlivými údajmi alebo možným súdnym sporom by malo zabezpečenie prebehnúť forenzne čisto. Súvislosti nájdete na stránke IT forenzná analýza po útoku na webový server.

Čisto odstrániť webshelly

Zmazanie jedného súboru je zriedka koniec. Útočníci často zakladajú viac prístupov: ďalšie súbory na skrytých miestach, záznamy v konfiguračných súboroch ako .htaccess alebo .user.ini, nové administrátorské účty v aplikácii alebo cronjoby. Spoľahlivé vyčistenie sleduje tieto kroky:

  • PHP dostať na opravený stav (8.5.12, 8.4.27, 8.3.36, 8.2.35 alebo potvrdený backport) a reštartovať všetky procesy PHP.
  • Kód aplikácie nasadiť odznova z čistého zdroja namiesto opravovania jednotlivých súborov.
  • Prevziať iba preverené obsahy, ako sú uploady a databáza, a cielene v nich hľadať zavlečený kód.
  • Vymeniť všetky prístupové údaje: databáza, SSH, FTP, administrátorské účty, kľúče API.
  • Zápisové práva webového servera obmedziť na nevyhnutné minimum a zabrániť spúšťaniu PHP v priečinkoch s uploadmi.

Pre WordPress existujú vlastné typické skrýše, ktoré popisuje príručka Nájsť backdoory vo WordPresse. Potom by sa mal web istý čas prísnejšie monitorovať, aby sa opakovaný prístup zistil včas.

Ako konkrétne pomáha PHP SOS?

  • Logy, súbory a stav systému zabezpečíme dohľadateľným spôsobom skôr, než sa niečo zmení.
  • Hľadáme backdoory v súboroch, databáze, cronjoboch a konfigurácii a nálezy zaraďujeme.
  • Aplikáciu nasadíme odznova z čistého zdroja, vymeníme prístupy a server spevníme.
  • Incident dokumentujeme až do jeho uzavretia ako podklad pre oznámenia a poisťovateľov.

Priebeh vyčistenia popisuje služba Nechať odstrániť malvér a webshelly.

Časté otázky

Čo je webshell?

Webshell je zavlečený súbor, najčastejšie v PHP, cez ktorý môžu útočníci ovládať server na diaľku. Často sa maskuje ako neškodný súbor s nenápadným názvom a zostáva aktívna aj po aktualizácii.

Nájde antivírusový skener každú webshell?

Nie. Skenery rozpoznávajú známe vzory, nové alebo silne zahmlené varianty prekĺznu. K PHP2Shell navyše neexistujú zverejnené, potvrdené Indicators of Compromise, preto je analýza správania dôležitejšia než zoznam signatúr.

Stačí nájdený súbor zmazať?

Zvyčajne nie. Útočníci často zakladajú viac prístupov, napríklad ďalšie súbory, cronjoby alebo nové administrátorské účty. Bez analýzy príčiny a výmeny všetkých prístupových údajov je opakovaný prístup pravdepodobný.

Musím po náleze webshell niečo oznámiť?

Ak môžu byť dotknuté osobné údaje, môže existovať oznamovacia povinnosť podľa GDPR, spravidla do 72 hodín. Vyjasnite si to so svojou zodpovednou osobou pre ochranu údajov alebo s právnikom; nejde o právne poradenstvo.

Zdroje

Okamžitý kontakt

Každá hodina sa počíta. Napíšte nám hneď.

Stručne opíšte systém, verziu PHP a svoje pozorovanie. Ozveme sa, vyjasníme situáciu a budeme pracovať na diaľku, kým nebude incident uzavretý a zdokumentovaný.

Okamžitá pomoc