Īsi: webshell atpazīstat pēc jauniem vai mainītiem PHP failiem neparastās vietās, pēc tīmekļa servera lietotāja svešiem procesiem un neparastiem savienojumiem. Pirms kaut ko dzēšat, saglabājiet pēdas, un atjaunojiet kodu no tīra avota. Ielāps vien slēpto piekļuvi nenoņem.
Kāpēc webshell pēc PHP2Shell ir aktuāla tēma
Ievainojamības CVE-2026-109618 un CVE-2026-109619 pašā PHP ļauj attālināti izpildīt ļaunprātīgu kodu bez pieteikšanās. Pēc sekmīga uzbrukuma acīmredzams mērķis ir pastāvīga slēptā piekļuve, tātad webshell. Tā paliek spēkā arī tad, ja PHP starplaikā ir atjaunināts.
Saskaņā ar plašsaziņas līdzekļu ziņojumiem pirmais uzbrukuma mēģinājums tika novērots jau 17.10.2026, ielāpi sekoja 21.10. Kas šajā laikā bija ievainojams, tam jāpārbauda mērķtiecīgi. Apstiprināti Indicators of Compromise līdz šim nav publicēti. Meklēšana tāpēc balstās uz uzvedības novirzēm, nevis uz gatavu sarakstu.
Ja serverī ar klientu datiem atrodat webshell: neko nedzēsiet pārsteidzīgi. Vispirms saglabājiet pierādījumus, pēc tam izolējiet serveri un plānojiet tālāko apstrādi.
Kā atpazīt webshell: failu pārbaude
Lielākā daļa webshell ir PHP faili tīmekļa direktorijā. Uzkrītoši ir faili, kas radušies vai mainīti pēc 17.10., PHP faili augšupielāžu un kešatmiņas mapēs, kā arī faili ar aizsegtu kodu. Turpmākās komandas neko nemaina, tās tikai uzskaita:
# PHP faili, kas mainīti kopš 17.10.2026
find /var/www -type f -name "*.php*" -newermt "2026-10-17" -ls
# PHP faili augšupielāžu, kešatmiņas vai tmp mapēs
find /var/www -type f -name "*.php*" \( -path "*upload*" -o -path "*cache*" -o -path "*tmp*" \) -ls
# Tipisks aizsegums: eval kopā ar dekodēšanu
grep -rlE "eval\s*\(\s*(base64_decode|gzinflate|str_rot13|gzuncompress)" /var/www --include="*.php"
# Neparasti garas rindas bieži norāda uz saspiestu kodu
grep -rlE ".{3000,}" /var/www --include="*.php"
Atradumi ir norādes, nevis pierādījumi. Daži spraudņi likumīgi izmanto kodētu kodu. Salīdziniet aizdomīgos failus ar ražotāja oriģinālo pakotni. Visuzticamāk ir salīdzinājums ar kontrolsummām vai versiju kontroles sistēmu, piemēram, Git:
# Novirzes no pēdējā zināmā stāvokļa Git repozitorijā
git -C /var/www/projekt status --porcelain
Laika zīmogu var viltot. Tāpēc nepaļaujieties ne tikai uz faila izmaiņu datumu.
Kādas pazīmes failu padara aizdomīgu
| Pazīme | Kāpēc tā krīt acīs |
|---|---|
| PHP fails augšupielāžu vai attēlu mapē | Tur jābūt tikai multividei |
Dubults paplašinājums, piemēram, .jpg.php vai .php.png |
Maskēšanās kā nekaitīgs fails |
| Ļoti garas rindas bez pārtraukuma | Tipiski saspiestam vai šifrētam kodam |
| Faila nosaukums līdzīgs kodola failam, bet nav oriģinālajā pakotnē | Maskēšanās zināmā vidē |
| Īpašnieks vai tiesības atšķiras no blakus failiem | Fails radīts citā veidā |
Jo vairāk pazīmju sakrīt, jo lielāka varbūtība, ka atradums ir patiess. Aizdomīgus failus atveriet tikai kā tekstu, nekad ar pārlūku, jo izsaukums caur vietni kodu izpildītu.
Procesu, savienojumu un cron uzdevumu pārbaude
Aktīva webshell bieži atstāj pēdas ārpus failu sistēmas. Tīmekļa servera lietotājs, piemēram, www-data, apache vai nginx, parasti nestartē čaulas, tīkla rīkus vai kompilatorus.
# Tipisko tīmekļa servera lietotāju procesi
ps -eo user,pid,ppid,lstart,cmd | grep -E "^(www-data|apache|nginx)"
# Atvērtie tīkla savienojumi ar piederošo procesu
sudo ss -tunap | grep -E "php|www-data|apache|nginx"
# Tīmekļa servera lietotāja ieplānotie uzdevumi
sudo crontab -u www-data -l
ls -la /etc/cron.d /var/spool/cron 2>/dev/null
Uzkrītoši ir pastāvīgi izejoši savienojumi uz nezināmiem mērķiem, procesi ar mīklainiem nosaukumiem un cron uzdevumi, kas no interneta lejupielādē failus. Pārbaudiet arī piekļuves žurnālus, vai nav pieprasījumu uz failiem, kuru agrāk nebija. Kā to izdarīt, apraksta ceļvedis Tīmekļa servera žurnālu izvērtēšana pēc uzbrukuma.
Pēdu saglabāšana pirms noņemšanas
Kas dzēš pirmais, zaudē atbildes uz svarīgākajiem jautājumiem: kā uzbrucējs iekļuva, ko viņš redzēja, kuri dati ir skarti? Šīs atbildes jums vajadzīgas iespējamam VDAR ziņojumam, apdrošinātājiem un lēmumam, vai ir apdraudātas arī citas sistēmas.
Lietderīga secība:
- Dokumentēt stāvokli: procesu saraksts, tīkla savienojumi, pieteikušies lietotāji.
- Aizdomīgos failus un žurnālus nokopēt ar kontrolsummu, tos neatverot un neizpildot.
- Ja iespējams, izveidot sistēmas attēlu vai virtuālās mašīnas momentuzņēmumu.
- Serveri atvienot no tīkla vai stipri ierobežot piekļuvi.
Sistēmām ar sensitīviem datiem vai iespējamu tiesvedību saglabāšanai jānotiek forensiski tīri. Fona informāciju atradīsiet rakstā IT forensika pēc tīmekļa servera uzbrukuma.
Webshell tīra noņemšana
Viena faila dzēšana reti ir beigas. Uzbrucēji bieži izveido vairākas piekļuves: papildu failus slēptās vietās, ierakstus konfigurācijas failos, piemēram, .htaccess vai .user.ini, jaunus administratoru kontus lietojumprogrammā vai cron uzdevumus. Uzticama attīrīšana seko šiem soļiem:
- PHP novest līdz izlabotam stāvoklim (8.5.12, 8.4.27, 8.3.36, 8.2.35 vai apstiprināts backports) un pārstartēt visus PHP procesus.
- Lietojumprogrammas kodu uzstādīt no jauna no tīra avota, nevis labot atsevišķus failus.
- Pārņemt tikai pārbaudītu saturu, piemēram, augšupielādes un datubāzi, un tur mērķtiecīgi meklēt ievadītu kodu.
- Nomainīt visus piekļuves datus: datubāzi, SSH, FTP, administratoru kontus, API atslēgas.
- Ierobežot tīmekļa servera rakstīšanas tiesības līdz nepieciešamajam un aizliegt PHP izpildi augšupielāžu mapēs.
WordPress ir savas tipiskas slēptuves, ko apraksta ceļvedis Backdoor atrašana WordPress. Pēc tam vietne kādu laiku jāuzrauga stingrāk, lai atkārtotu piekļuvi pamanītu savlaicīgi.
Kā PHP SOS palīdz konkrēti?
- Žurnālus, failus un sistēmas stāvokli saglabājam izsekojami, pirms kaut kas tiek mainīts.
- Meklējam slēptās piekļuves failos, datubāzē, cron uzdevumos un konfigurācijā un klasificējam atradumus.
- Lietojumprogrammu uzstādām no jauna no tīra avota, nomainām piekļuves un nostiprinām serveri.
- Incidentu dokumentējam līdz tā noslēgumam, kā pamatu ziņojumiem un apdrošinātājiem.
Attīrīšanas norisi apraksta pakalpojums Ļaunprogrammatūras un webshell noņemšana.
Biežāk uzdotie jautājumi
Kas ir webshell?
Webshell ir ievadīts fails, parasti PHP, ar kura palīdzību uzbrucēji var attālināti vadīt serveri. Tas bieži maskējas kā nekaitīgs fails ar neuzkrītošu nosaukumu un paliek aktīvs arī pēc atjauninājuma.
Vai antivīrusa skeneris atrod katru webshell?
Nē. Skeneri atpazīst zināmus paraugus, jaunie vai stipri aizsegtie varianti izslīd cauri. Par PHP2Shell turklāt nav publicētu, apstiprinātu Indicators of Compromise, tāpēc uzvedības analīze ir svarīgāka par parakstu sarakstu.
Vai pietiek ar atrastā faila dzēšanu?
Parasti nē. Uzbrucēji bieži izveido vairākas piekļuves, piemēram, papildu failus, cron uzdevumus vai jaunus administratoru kontus. Bez cēloņu analīzes un visu piekļuves datu nomaiņas atkārtota piekļuve ir ticama.
Vai pēc webshell atrašanas man kaut kas jāpaziņo?
Ja var būt skarti personas dati, var pastāvēt ziņošanas pienākums saskaņā ar VDAR, parasti 72 stundu laikā. Noskaidrojiet to ar savu datu aizsardzības speciālistu vai advokātu; šī nav juridiska konsultācija.