# Odstranitev zlonamerne kode in webshellov s spletne strani

> Odstranitev zlonamerne kode s spletne strani: poiščemo webshelle in stranska vrata, očistimo iz čistih virov in trajno zapremo vstopno točko.

Vir: https://phpsos.de/sl/leistungen/malware-entfernung/  
Stanje: 25.10.2026  
Ponudnik: PHP SOS, Nujna pomoč za PHP in varnost strežnikov. Takojšnja pomoč po WhatsAppu: https://wa.me/491736494914?text=Pozdravljeni%2C%20PHP%20SOS%2C%20potrebujemo%20pomo%C4%8D%20z%20na%C5%A1im%20stre%C5%BEnikom%20PHP.%20Podjetje%3A%20%E2%80%A6%20Spletna%20stran%3A%20%E2%80%A6

**Na kratko:** Če želite zlonamerno kodo odstraniti s svoje spletne strani, brisanje posameznih datotek redko zadošča. Najprej zavarujemo ugotovitve, poiščemo webshelle, stranska vrata in skrita opravila, znova zgradimo iz zaupanja vrednih virov in zapremo vstopno točko. Šele potem je čiščenje zanesljivo.

## Po čem prepoznate zlonamerno kodo na spletni strani

Škodljiva koda na spletnih straneh se pogosto opazi šele posredno. Značilne so preusmeritve na tuje strani, vsebine spama, vidne samo iskalnikom ali mobilnim napravam, Googlovo opozorilo v rezultatu iskanja, pritožbe strank ali blokada ponudnika gostovanja zaradi pošiljanja spama. Na strežniku se pokažejo neznane datoteke PHP, novi skrbniški računi, spremenjene datoteke `.htaccess` ali nerazložljiva cron opravila.

Po PHP2Shell se pridruži še ena skrb: prek CVE-2026-109618 in CVE-2026-109619 lahko napadalci izvajajo kodo brez prijave. Objavljenih, potrjenih indikatorjev ogroženosti (Indicators of Compromise) ni; odkrivanje temelji na analizi vedenja. Kako webshelli tipično izgledajo in kje ležijo, opisuje stran [Prepoznavanje in odstranjevanje webshellov](https://phpsos.de/sl/ratgeber/webshell-erkennen/).

## Odstranitev zlonamerne kode s spletne strani: zakaj je temeljitost pomembnejša od hitrosti

Napadalci le redko odložijo samo eno datoteko. Običajna so številna stranska vrata na različnih mestih: v mapah za nalaganje, v vtičnikih ali temah, v must-use vtičnikih, v podatkovni zbirki, v cron opravilih ali v dodatnih uporabniških računih. Če se izbriše samo najbolj očitna datoteka, se škodljiva koda vrne.

Hkrati je okuženo stanje dokazno gradivo. Kdor prenagljeno čisti, izgubi možnost ugotoviti, ali so prizadeti podatki strank. Zato pred vsako spremembo zavarujemo stanje. To zahteva malo časa in vam ohranja vse poti odprte, tudi poznejšo prijavo nadzornemu organu ali zavarovalnici.

> **Pomembno:**
> Posodobitev PHP ali CMS-ja ne odstrani škodljive programske opreme, ki že leži na strežniku. In očiščena spletna stran bo znova okužena, dokler je vstopna točka odprta.

## Kje se škodljiva koda tipično skriva

Naslednja mesta preverimo pri vsakem čiščenju, ker so v praksi vedno znova prizadeta:

| Mesto | Tipična najdba |
|---|---|
| Mape za nalaganje | datoteke PHP z neškodljivo videzom imen ali preoblečene v slike |
| Vtičniki, teme, moduli | dodatne datoteke ali spremenjene izvirne datoteke |
| Konfiguracija | vnesene vrstice v `.htaccess`, `.user.ini` ali vstopnih datotekah |
| Podatkovna zbirka | tuji skrbniški računi, skripte v vsebinah ali opcijah |
| Sistem | cron opravila, dodatni ključi SSH, procesi brez razvidnega namena |
| Predpomnilniki in začasne mape | kopije škodljive kode, ki se po brisanju znova pojavijo |

Pomembna je povezava: posamezna najdba redko pojasni celoten incident. Šele celotna slika pokaže, kako je napadalec ravnal in ali je odnesel dostopne podatke.

## Kako konkretno pomaga PHP SOS?

1. **Zavarovanje:** ustvarimo kopijo datotek, podatkovne zbirke in dnevnikov v okuženem stanju. Ostane ohranjena za poznejšo analizo.
2. **Iskanje:** programske datoteke primerjamo z originali proizvajalca, mape za nalaganje preverimo glede izvedljive kode, preiščemo podatkovno zbirko, cron opravila, uporabniške račune in konfiguracijo strežnika. Za okolja WordPress ravnamo, kot je opisano na strani [Iskanje stranskih vrat v WordPressu](https://phpsos.de/sl/ratgeber/backdoor-wordpress-finden/).
3. **Čiščenje:** jedro, razširitve in teme znova namestimo iz zaupanja vrednih virov, namesto da bi sumljive datoteke krpali posamično. Lastne vsebine in nalaganja preverimo posebej in prevzamemo samo, kar je neoporečno.
4. **Zapreti vzrok:** popravimo PHP in aplikacijo, odstranimo tuje račune ter zamenjamo vse dostopne podatke in ključe, ki bi jih napadalec lahko videl.
5. **Naknadna kontrola:** spletno stran po čiščenju opazujemo glede ponovnih sprememb in vam pomagamo, da Googlovo opozorilo preverite prek Search Console. Več o tem na strani [Odstranitev Googlovega opozorila](https://phpsos.de/sl/ratgeber/google-warnung-entfernen/).

Za skrbnike neškodljiv prvi pogled na nedavno spremenjene datoteke PHP:

```bash
# Datoteke PHP v spletni mapi, spremenjene v zadnjih 10 dneh
find /var/www -type f -name "*.php" -mtime -10 -printf "%TY-%Tm-%Td %TH:%TM %p\n" | sort
```

Rezultat je namig, ne dokaz: napadalci lahko spremenijo časovne žige.

## Kaj dobite in kaj potrebujemo

Prejmete poročilo z najdenimi škodljivimi komponentami in njihovo lokacijo, ukrepi za čiščenje, seznamom zamenjanih dostopnih podatkov in verjetno vstopno točko. Pri tem jasno ločimo, kaj je dokazano, kaj verjetno in kaj neznano.

Od vas potrebujemo:

- **dostop** do strežnika ali panela gostovanja, zaledja CMS-ja in podatkovne zbirke
- **kontaktno osebo**, ki lahko odobri zamenjavo gesel in izklope
- **informacije** o agenciji, razvijalcu ali ponudniku gostovanja in o lastnih prilagoditvah sistema
- **obstoječe varnostne kopije** z datumom, da lahko ocenimo, katero stanje bi bilo lahko čisto
- **dostop do Google Search Console**, če je prikazano opozorilo

## Česa ne obljubljamo

Ne obljubljamo, da bodo na vsakem sistemu zanesljivo najdena vsa stranska vrata, če dnevniki manjkajo ali je okužba stara. Pri nejasnem stanju priporočamo novo postavitev na svežem strežniku, na katerega se prenesejo samo preverjene vsebine. To je bolj zamudno, a pogosto zanesljivejša pot. Prav tako ne napovedujemo, kdaj bo Google ali druga storitev opozorilo odstranila; o tem odločajo ti ponudniki.

Če je treba tako, da obstane pred sodiščem, razjasniti, kaj natanko se je zgodilo in kateri podatki so prizadeti, pritegnemo [IT-forenziko](https://phpsos.de/sl/leistungen/it-forensik/) s specializiranimi partnerji. Pri akutnem, še potekajočem napadu se delo začne z [nujno pomočjo pri vdrti spletni strani](https://phpsos.de/sl/leistungen/website-gehackt-notfallhilfe/).


## Pogosta vprašanja

**Ali za čiščenje moje spletne strani zadošča vtičnik za iskanje zlonamerne kode?**  
Skener najde znane vzorce, ne pa vsakih stranskih vrat. Webshelli so pogosto zakriti, ležijo v slikah, predpomnilnikih ali podatkovni zbirki ali so zasidrani kot cron opravilo. Skener je pripomoček, ne popolno čiščenje.

**Ali lahko preprosto obnovim staro varnostno kopijo?**  
Samo če je gotovo, da je kopija nastala pred vdorom, in če se nato zapre vstopna točka. Sicer je spletna stran kratek čas čista, nato pa jo isti napad po isti poti znova okuži.

**Zakaj se zlonamerna koda po brisanju vedno znova pojavi?**  
Običajno obstajajo druga stranska vrata, cron opravilo, spremenjen skrbniški račun ali pa je ranljivost še odprta. Šele ko so najdeni vsi mehanizmi obstojnosti in je vzrok odpravljen, čiščenje drži.

**Ali posodobitev PHP odstrani obstoječo zlonamerno kodo?**  
Ne. Popravek zapre ranljivost, ne odstrani pa že vnesene škodljive programske opreme. Gre za ločena delovna koraka.

## Viri

- [OWASP Cheat Sheet Series](https://cheatsheetseries.owasp.org/)
- [Pomoč za Google Search Console](https://support.google.com/webmasters/)
- [php.net: varnostna obvestila](https://www.php.net/)
