Dabartinė padėtis: PHP2Shell. Du kritiniai PHP pažeidžiamumai (CVSS 9,2) leidžia vykdyti kenkėjišką kodą be prisijungimo. Pataisos nuo 2026-10-21.Ką dabar daryti →

Webshell aptikimas ir šalinimas

Kaip aptikti užpakalines duris PHP žiniatinklio serveriuose nesunaikinant pėdsakų ir kodėl vien ištrynimo retai pakanka.

Būsena 4 min. skaitymoVadovai

Trumpai: Webshell atpažinsite iš naujų ar pakeistų PHP failų neįprastose vietose, iš svetimų žiniatinklio serverio naudotojo procesų ir iš neįprastų ryšių. Prieš ką nors trindami išsaugokite pėdsakus ir atkurkite kodą iš švaraus šaltinio. Vien pataisa užpakalinių durų nepašalina.

Kodėl po PHP2Shell webshell yra aktuali tema

Pažeidžiamumai CVE-2026-109618 ir CVE-2026-109619 pačiame PHP leidžia nuotoliu vykdyti kenkėjišką kodą be prisijungimo. Po sėkmingos atakos akivaizdus tikslas yra nuolatinės užpakalinės durys, t. y. webshell. Ji išlieka, net jei PHP tuo tarpu atnaujintas.

Pasak žiniasklaidos pranešimų, pirmasis atakos bandymas buvo pastebėtas jau 2026-10-17, o pataisos pasirodė spalio 21 d. Kas tuo laikotarpiu buvo pažeidžiamas, turėtų tikslingai patikrinti. Patvirtintų kompromitavimo indikatorių (IOC) kol kas nėra paskelbta. Todėl paieška remiasi elgsenos požymiais, o ne paruoštu sąrašu.

Veikti nedelsiant

Jei serveryje su klientų duomenimis radote webshell: nieko neskubėkite trinti. Pirmiausia išsaugokite įrodymus, tada izoliuokite serverį ir suplanuokite tolesnį darbą.

Kaip atpažinti webshell: failų patikra

Dauguma webshell yra PHP failai žiniatinklio kataloge. Krenta į akis failai, sukurti ar pakeisti po spalio 17 d., PHP failai įkėlimų ir talpyklos aplankuose bei failai su užmaskuotu kodu. Šios komandos nieko nekeičia, jos tik išvardija:

# PHP failai, pakeisti nuo 2026-10-17
find /var/www -type f -name "*.php*" -newermt "2026-10-17" -ls

# PHP failai įkėlimų, talpyklos ar Tmp aplankuose
find /var/www -type f -name "*.php*" \( -path "*upload*" -o -path "*cache*" -o -path "*tmp*" \) -ls

# Tipiškas užmaskavimas: eval kartu su dekodavimu
grep -rlE "eval\s*\(\s*(base64_decode|gzinflate|str_rot13|gzuncompress)" /var/www --include="*.php"

# Neįprastai ilgos eilutės dažnai rodo supakuotą kodą
grep -rlE ".{3000,}" /var/www --include="*.php"

Radiniai yra užuominos, o ne įrodymai. Kai kurie įskiepiai teisėtai naudoja užkoduotą kodą. Palyginkite įtartinus failus su gamintojo originaliu paketu. Patikimiausia lyginti su kontrolinėmis sumomis arba versijų valdymo sistema, pavyzdžiui, Git:

# Nukrypimai nuo paskutinės žinomos būsenos Git saugykloje
git -C /var/www/projekt status --porcelain

Laiko žymė gali būti suklastota. Todėl nepasikliaukite vien failo pakeitimo data.

Kokie požymiai daro failą įtartiną

Požymys Kodėl krenta į akis
PHP failas įkėlimų ar paveikslėlių aplanke Ten turėtų būti tik medija
Dvigubas plėtinys, pvz., .jpg.php ar .php.png Maskavimas po nekenksmingu failu
Labai ilgos eilutės be eilutės lūžio Tipiška supakuotam ar užšifruotam kodui
Failo pavadinimas panašus į branduolio failą, bet jo nėra originaliame pakete Maskavimas pažįstamoje aplinkoje
Savininkas ar teisės skiriasi nuo gretimų failų Failas sukurtas kitu keliu

Kuo daugiau požymių sutampa, tuo didesnė radinio tikimybė. Įtartinus failus atidarykite tik kaip tekstą, niekada per naršyklę, nes iškvietus per svetainę kodas būtų įvykdytas.

Procesų, ryšių ir cron užduočių patikra

Aktyvi webshell dažnai palieka pėdsakų ne tik failų sistemoje. Žiniatinklio serverio naudotojas, pavyzdžiui, www-data, apache ar nginx, paprastai nepaleidžia shell, tinklo įrankių ar kompiliatorių.

# Tipiškų žiniatinklio serverio naudotojų procesai
ps -eo user,pid,ppid,lstart,cmd | grep -E "^(www-data|apache|nginx)"

# Atviri tinklo ryšiai su atitinkamu procesu
sudo ss -tunap | grep -E "php|www-data|apache|nginx"

# Žiniatinklio serverio naudotojo suplanuotos užduotys
sudo crontab -u www-data -l
ls -la /etc/cron.d /var/spool/cron 2>/dev/null

Įtartini yra nuolatiniai išeinantys ryšiai su nežinomais tikslais, procesai su paslaptingais pavadinimais ir cron užduotys, parsisiunčiančios failus iš interneto. Patikrinkite ir prieigos žurnalus dėl užklausų failams, kurių anksčiau nebuvo. Kaip tai daroma, aprašo vadovas Kaip išanalizuoti žiniatinklio serverio žurnalus po atakos.

Išsaugokite pėdsakus, prieš šalindami

Kas pirmiausia trina, praranda atsakymus į svarbiausius klausimus: kaip užpuolikas pateko, ką matė, kokie duomenys paveikti? Šių atsakymų reikia galimam pranešimui pagal BDAR, draudikams ir sprendimui, ar kitos sistemos pavojuje.

Prasminga tvarka:

  1. Dokumentuokite būseną: procesų sąrašą, tinklo ryšius, prisijungusius naudotojus.
  2. Nukopijuokite įtartinus failus ir žurnalus su kontroline suma, jų neatidarydami ir nevykdydami.
  3. Jei įmanoma, sukurkite sistemos atvaizdą arba virtualios mašinos momentinę kopiją (snapshot).
  4. Atjunkite serverį nuo tinklo arba smarkiai apribokite prieigą.

Sistemoms su jautriais duomenimis ar galimu teisminiu ginču išsaugojimas turėtų būti atliktas forensiškai tvarkingai. Pagrindą rasite puslapyje IT forensika po žiniatinklio serverio atakos.

Kaip saugiai pašalinti webshell

Vieno failo ištrynimas retai yra pabaiga. Užpuolikai dažnai įrengia kelias prieigas: papildomus failus paslėptose vietose, įrašus konfigūracijos failuose, tokiuose kaip .htaccess ar .user.ini, naujas administratoriaus paskyras programoje arba cron užduotis. Patikimas išvalymas atliekamas šiais žingsniais:

  • PHP atnaujinkite iki ištaisytos būsenos (8.5.12, 8.4.27, 8.3.36, 8.2.35 arba patvirtintas backport) ir iš naujo paleiskite visus PHP procesus.
  • Programos kodą iš naujo įdiekite iš švaraus šaltinio, o ne taisykite atskirus failus.
  • Perimkite tik patikrintą turinį, pavyzdžiui, įkėlimus ir duomenų bazę, ir ten tikslingai ieškokite įterpto kodo.
  • Pakeiskite visus prisijungimo duomenis: duomenų bazės, SSH, FTP, administratoriaus paskyrų, API raktus.
  • Žiniatinklio serverio rašymo teises apribokite iki būtiniausių ir uždrauskite PHP vykdymą įkėlimų aplankuose.

WordPress turi savų tipinių slėptuvių, kurias aprašo vadovas Užpakalinių durų paieška WordPress. Po to svetainę kurį laiką reikėtų stebėti atidžiau, kad pakartotinė prieiga būtų pastebėta anksti.

Kaip PHP SOS padeda konkrečiai?

  • Žurnalus, failus ir sistemos būseną išsaugome patikrinamai, prieš ką nors keisdami.
  • Ieškome užpakalinių durų failuose, duomenų bazėje, cron užduotyse ir konfigūracijoje ir įvertiname radinius.
  • Programą įdiegiame iš naujo iš švaraus šaltinio, pakeičiame prieigas ir sutvirtiname serverį.
  • Incidentą dokumentuojame, kol jis bus užbaigtas, kaip pagrindą pranešimams ir draudikams.

Išvalymo eigą aprašo paslauga Kenkėjiškų programų ir webshell šalinimas.

Dažni klausimai

Kas yra webshell?

Webshell yra įterptas failas, dažniausiai PHP, per kurį užpuolikai gali nuotoliu valdyti serverį. Jis dažnai maskuojasi kaip nekenksmingas failas su neįtartinu pavadinimu ir lieka aktyvus net po atnaujinimo.

Ar antivirusinė programa randa kiekvieną webshell?

Ne. Skeneriai atpažįsta žinomus šablonus, naujos ar stipriai užmaskuotos versijos praslysta. Dėl PHP2Shell be to nėra paskelbtų, patvirtintų kompromitavimo indikatorių (IOC), todėl elgsenos analizė svarbesnė nei parašų sąrašas.

Ar pakanka ištrinti rastą failą?

Dažniausiai ne. Užpuolikai dažnai įrengia kelias prieigas, pavyzdžiui, papildomus failus, cron užduotis ar naujas administratoriaus paskyras. Neištyrus priežasties ir nepakeitus visų prisijungimo duomenų pakartotinė prieiga labai tikėtina.

Ar radus webshell reikia apie ką nors pranešti?

Jei gali būti paveikti asmens duomenys, gali kilti pranešimo pareiga pagal BDAR, paprastai per 72 valandas. Išsiaiškinkite tai su savo duomenų apsaugos pareigūnu ar advokatu; tai nėra teisinė konsultacija.

Šaltiniai

Skubus kontaktas

Kiekviena valanda svarbi. Parašykite mums dabar.

Trumpai aprašykite sistemą, PHP versiją ir pastebėjimus. Mes atsakysime, išsiaiškinsime padėtį ir dirbsime nuotoliu, kol incidentas bus užbaigtas ir dokumentuotas.

Skubi pagalba