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.
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:
- Zdokumentovať stav: zoznam procesov, sieťové spojenia, prihlásení používatelia.
- Podozrivé súbory a logy skopírovať s kontrolným súčtom bez ich otvárania alebo spúšťania.
- Ak je to možné, vytvoriť obraz systému alebo snapshot virtuálneho stroja.
- 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.