Trenutno stanje: PHP2Shell. Dvije kritične PHP ranjivosti (CVSS 9.2) omogućuju zlonamjerni kod bez prijave. Zakrpe od 21. 10. 2026.Što sada učiniti →

PHP datoteke u direktoriju za prijenose: ispravno protumačiti nalaze

PHP datoteka u direktoriju za prijenose gotovo je uvijek znak upozorenja, ali nije svaka zlonamjeran kod. Kako procijeniti nalaz bez uništavanja tragova i razjasniti je li je netko pozvao.

Stanje 5 min čitanjaOtkrivanje i forenzika

Ukratko: PHP datoteka u direktoriju za prijenose ozbiljan je znak upozorenja, jer bi tamo trebale ležati samo slike i dokumenti. Datoteku nikad ne otvarajte u pregledniku, nego je čitajte kao tekst, provjerite vremenske žigove i vlasnika te potražite naziv datoteke u pristupnim zapisnicima. Bezazlene su uglavnom samo prazne rezervirane datoteke poput index.php bez sadržaja; sve ostalo tretirajte kao moguću provalu.

Zašto PHP nema što tražiti u direktoriju za prijenose

Direktoriji za prijenose služe sadržaju koji učitavaju posjetitelji ili urednici: slike, PDF-ovi, videozapisi. Korisnik web-poslužitelja tamo smije pisati, inače prijenosi ne bi radili. Upravo to te direktorije čini privlačnima napadačima. Tko putem ranjivosti može pisati datoteke, odlaže ih tamo gdje je pisanje dopušteno.

Nove PHP datoteke u direktorijima za prijenose ili predmemoriju prema izvješćima koja su nam dostupna spadaju među opće znakove upozorenja nakon provale. Za PHP2Shell nema potvrđenih Indicators of Compromise; nalaz stoga ne govori putem koje je ranjivosti datoteka dospjela. Kako se funkcije prijenosa grade sigurno, opisuje članak Sigurno provesti prijenos datoteka u PHP-u.

Može li takva datoteka nanijeti štetu, odlučuje konfiguracija web-poslužitelja. Izvršava li PHP datoteke u direktoriju za prijenose, svaka tamo odložena datoteka postaje mogućnost daljinskog upravljanja. Ako je izvršavanje tamo blokirano, datoteka ostaje strano tijelo, ali isprva bez učinka. Mnoge instalacije nikad nisu postavile tu blokadu.

Kako PHP datoteka dospijeva u direktorij za prijenose?

Za procjenu pomaže poznavati moguće putove. Svaki vodi do drugih daljnjih pitanja.

Put Tipična pozadina Daljnje pitanje
Nesiguran obrazac za prijenos provjera samo nastavka ili tipa koji javlja preglednik Koji obrasci prihvaćaju datoteke?
Ranjivost u dodatku ili temi poznata slabost u zastarjelom proširenju Koja su proširenja zastarjela?
Ukradeni pristupni podaci administratorski, FTP ili hosting račun Kakve su prijave bile u posljednje vrijeme?
Izvršavanje koda putem ranjivosti npr. u interpreteru, kako je moguće kod PHP2Shella Je li PHP u tom razdoblju bio ranjiv?
Legitiman dodatak rezervirane datoteke, rijetko datoteke predmemorije Pripada li datoteka izvornom paketu?

Više putova može se spojiti. Napadač koji izvrši kod putem ranjivosti datoteku možda samo odloži kako bi se kasnije udobnije vratio.

Sustavno popisati mjesta nalaza

Prije nego procijenite pojedinu datoteku, steknite pregled. Naredbe samo čitaju. Putovi su primjeri za WordPress; kod drugih sustava prilagodite put do prijenosa.

# Datoteke nalik PHP-u u direktoriju za prijenose s veličinom, vlasnikom, mtime i ctime
find /var/www/html/wp-content/uploads -type f \
  \( -iname "*.php*" -o -iname "*.phtml" -o -iname "*.phar" -o -iname ".htaccess" -o -iname ".user.ini" \) \
  -printf '%s Bytes  %u  m:%T+  c:%C+  %p\n'

# Tip datoteke odrediti prema sadržaju umjesto prema nastavku (slike s PHP sadržajem upadaju u oči)
find /var/www/html/wp-content/uploads -type f -newermt "2026-10-17" -exec file {} + | grep -viE "image|pdf|video|audio"

Drugi sustavi koriste druge direktorije za pisanje, primjerice fileadmin kod TYPO3-a, images kod Joomle ili direktorij medija pod public kod Shopwarea 6. Tome se pridodaju direktoriji predmemorije i privremenih datoteka aplikacije. Kod multisite instalacija i više web-stranica na jednom poslužitelju odgovarajuće je mnogo direktorija za prijenose; svaki pripada u pretragu.

Sumnjive su i datoteke .htaccess i .user.ini u direktoriju za prijenose. Njima se izvršavanje PHP-a u tom direktoriju može ponovno uključiti ili izmijeniti konfiguracija.

PHP datoteka u direktoriju za prijenose: ispravno protumačiti nalaz

Nije svaki pogodak jednako ozbiljan. Sljedeće razvrstavanje pomaže pri prvoj procjeni. Ne zamjenjuje pomnu istragu.

Nalaz Prvo razvrstavanje
index.php s nula bajtova ili samo komentarom uglavnom rezervirana datoteka protiv ispisa direktorija, uskladiti s dodatkom
PHP datoteka sa sadržajem u mjesečnom direktoriju visoka sumnja
Dvostruki nastavak poput bild.jpg.php ili .php.png visoka sumnja, tipično maskiranje
Slika koja prema file sadrži PHP kod visoka sumnja, može se izvršiti uključivanjem
.htaccess ili .user.ini u direktoriju za prijenose sumnja, provjeriti konfiguraciju
Datoteka pripada korisniku web-poslužitelja, ctime nakon 17. 10. odgovara provali putem web-stranice

Sumnjive datoteke čitajte samo kao tekst, primjerice s head -c 2000 datei.php ili less. Upadljivi su vrlo dugi retci, kodirani nizovi znakova i nazivi funkcija poput eval ili base64_decode. Po čemu prepoznati zamagljeni kod, pokazuje članak Prepoznati zamagljeni PHP kod.

Je li datoteka pozvana? Pogled u zapisnik

Najvažnije pitanje nakon nalaza glasi: je li je netko koristio? Odgovor stoji u pristupnim zapisnicima web-poslužitelja. Potražite naziv datoteke, i u arhiviranim zapisnicima.

# Pozivi sumnjive datoteke u aktualnim i spakiranim zapisnicima (ime kao primjer)
grep -h "uploads/2026/10/thumb.php" /var/log/nginx/access.log* 2>/dev/null
zgrep -h "uploads/2026/10/thumb.php" /var/log/nginx/access.log*.gz 2>/dev/null

# Samo uspješni pozivi s IP adresom i trenutkom
grep -h "uploads/2026/10/thumb.php" /var/log/nginx/access.log* | awk '$9 == 200 {print $1, $4, $6, $7}'

Mnogo uspješnih POST zahtjeva s nekoliko adresa upućuje na aktivnu uporabu kao web shell. Nema li pogodaka, to automatski ne znači otkaz uzbune, jer zapisnici mogu biti rotirani, obrisani ili nepotpuni. Ako web-stranica radi iza CDN-a ili proxyja, dodatni zapisnici nalaze se tamo; kod zajedničkog hostinga hoster pristupne zapisnike uglavnom stavlja na raspolaganje u korisničkom području. Pazite i na zahtjeve prema drugim novim datotekama s istih adresa, jer često vode do daljnjih sastavnica. Zapisnike od 20. listopada sačuvajte. Kako temeljito analizirati zapisnike, piše u vodiču Analizirati zapisnike web-poslužitelja nakon napada.

Djelujte odmah

Ako zapisnik pokazuje uspješne pozive nepoznate PHP datoteke, pretpostavite provalu. Osigurajte datoteku i zapisnike, ograničite pristup poslužitelju i provjerite mogu li biti pogođeni osobni podaci.

Nakon procjene: pravi redoslijed

  1. Osigurati: Kopirati datoteku s kontrolnim zbrojem i vremenskim žigovima, osigurati zapisnike.
  2. Razjasniti podrijetlo: Provjeriti obrasce za prijenos, dodatke i razdoblje prije nalaza.
  3. Tražiti daljnje sastavnice: dodatne datoteke, cron poslove, nove administratorske račune.
  4. Blokirati izvršavanje: Zabraniti PHP u direktoriju za prijenose na razini web-poslužitelja, kako opisuje članak Zabraniti izvršavanje PHP-a u direktorijima za prijenose.
  5. Očistiti i promijeniti pristupe: tek tada ukloniti datoteku i obnoviti sve lozinke.

Kako PHP SOS konkretno pomaže?

  • Procijeniti nalaz: Provjeravamo datoteku bez izvršavanja i razvrstavamo je.
  • Razjasniti uporabu: Analiziramo zapisnike i rekonstruiramo tko je i kada pozvao datoteku.
  • Potpuno očistiti: Uz uklanjanje zlonamjernog softvera tražimo sve sastavnice, zatvaramo uzrok i mijenjamo pristupe.
  • Spriječiti ponavljanje: Blokiramo izvršavanje PHP-a u direktorijima za pisanje i nadziremo nove datoteke.

Česta pitanja

Je li svaka PHP datoteka u direktoriju za prijenose opasna?

Ne svaka. Neki dodaci odlažu praznu index.php kako se sadržaj direktorija ne bi ispisivao. Sve ostalo, osobito datoteke sa sadržajem, neobičnim imenom ili dvostrukim nastavkom, tretirajte kao sumnju.

Smijem li sumnjivu datoteku otvoriti u pregledniku?

Ne. Poziv preko web-stranice izvršava kod. Datoteku čitajte samo kao tekst na poslužitelju ili u kopiji, primjerice naredbom less ili head.

Kako saznati je li datoteka korištena?

Potražite naziv datoteke u pristupnim zapisnicima web-poslužitelja. Zahtjevi sa statusom 200 i metodom POST pokazuju da je datoteka pozvana. Pripadajuće IP adrese i trenuci pomažu u daljnjoj istrazi.

Je li dovoljno obrisati datoteku i blokirati PHP u direktoriju za prijenose?

Oboje je potrebno, ali nije dovoljno. Dodatno razjasnite kako je datoteka tamo dospjela, potražite daljnje sastavnice i promijenite pristupne podatke. Inače se napadač vraća istim putom.

Izvori

Hitni kontakt

Svaki sat se računa. Pišite nam odmah.

Ukratko opišite sustav, verziju PHP-a i opažanje. Javit ćemo Vam se, razjasniti situaciju i raditi na daljinu dok incident nije zaključen i dokumentiran.

Hitna pomoć