Īsi sakot: PHP fails augšupielāžu mapē ir nopietna brīdinājuma pazīme, jo tur jābūt tikai attēliem un dokumentiem. Failu nekad neatveriet pārlūkprogrammā, bet lasiet kā tekstu, pārbaudiet laika zīmogus un īpašnieku un meklējiet faila nosaukumu piekļuves žurnālos. Nekaitīgi parasti ir tikai tukši vietturi, piemēram, index.php bez satura; visu pārējo uzskatiet par iespējamu ielaušanos.
Kāpēc PHP augšupielāžu mapē nav ko meklēt
Augšupielāžu mapes paredzētas saturam, ko augšupielādē apmeklētāji vai redaktori: attēliem, PDF, video. Tīmekļa servera lietotājs tur drīkst rakstīt, citādi augšupielādes nedarbotos. Tieši tas šīs mapes dara pievilcīgas uzbrucējiem. Kas ar ievainojamību var rakstīt failus, tos novieto tur, kur rakstīšana ir atļauta.
Jauni PHP faili augšupielāžu vai kešatmiņas mapēs saskaņā ar mūsu rīcībā esošajiem ziņojumiem pieder pie vispārējām brīdinājuma pazīmēm pēc ielaušanās. PHP2Shell nav apstiprinātu Indicators of Compromise; atradums tāpēc neko nesaka par to, caur kuru ievainojamību fails nonāca. Kā augšupielādes funkcijas uzbūvēt droši, apraksta Failu augšupielāžu droša īstenošana PHP.
Vai šāds fails var nodarīt kaitējumu, izšķir tīmekļa servera konfigurācija. Ja tas augšupielāžu mapē PHP failus izpilda, katrs tur novietots fails kļūst par iespējamu tālvadību. Ja izpilde tur ir bloķēta, fails paliek svešķermenis, bet sākotnēji bez iedarbības. Daudzās instalācijās šī bloķēšana nekad nav iestatīta.
Kā PHP fails nonāk augšupielāžu mapē?
Novērtēšanā palīdz zināt iespējamos ceļus. Katrs rada citus turpmākos jautājumus.
| Ceļš | Tipisks fons | Turpmākais jautājums |
|---|---|---|
| Nedroša augšupielādes veidlapa | pārbaudīts tikai paplašinājums vai pārlūka paziņotais tips | Kuras veidlapas pieņem failus? |
| Ievainojamība spraudnī vai motīvā | zināma vājā vieta novecojušā paplašinājumā | Kuri paplašinājumi ir novecojuši? |
| Nozagti piekļuves dati | administratora, FTP vai hostinga konts | Kādas pieteikšanās bija pēdējā laikā? |
| Koda izpilde caur ievainojamību | piemēram, interpretatorā, kā iespējams PHP2Shell gadījumā | Vai PHP šajā periodā bija ievainojams? |
| Likumīgs spraudnis | vietturis, reti kešatmiņas faili | Vai fails pieder oriģinālajai pakotnei? |
Var sakrist vairāki ceļi. Uzbrucējs, kas ar ievainojamību izpilda kodu, failu varbūt tikai novieto, lai vēlāk ērtāk atgrieztos.
Atradumu vietu sistemātiska uzskaitīšana
Pirms vērtējat atsevišķu failu, gūstiet pārskatu. Komandas tikai lasa. Ceļi ir WordPress piemēri; citām sistēmām augšupielāžu ceļu pielāgojiet.
# PHP līdzīgi faili augšupielāžu mapē ar izmēru, īpašnieku, mtime un 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'
# Faila tipu noteikt pēc satura, nevis paplašinājuma (attēli ar PHP saturu uzkrīt)
find /var/www/html/wp-content/uploads -type f -newermt "2026-10-17" -exec file {} + | grep -viE "image|pdf|video|audio"
Citas sistēmas izmanto citas rakstīšanas mapes, piemēram, fileadmin TYPO3, images Joomla vai multivides mapi zem public Shopware 6. Klāt nāk lietojumprogrammas kešatmiņas un pagaidu direktoriji. Multisite instalācijās un vairākās vietnēs vienā serverī ir attiecīgi daudz augšupielāžu mapju; katra pieder meklēšanai.
Arī .htaccess un .user.ini faili augšupielāžu mapē ir aizdomīgi. Ar tiem var atkal ieslēgt PHP izpildi šajā mapē vai mainīt konfigurāciju.
PHP fails augšupielāžu mapē: atradumu pareiza izpratne
Ne katrs trāpījums ir vienlīdz nopietns. Šis iedalījums palīdz pirmajā novērtējumā. Tas neaizstāj rūpīgu izmeklēšanu.
| Atradums | Pirmais iedalījums |
|---|---|
index.php ar nulle baitu vai tikai komentāru |
parasti vietturis pret direktorija uzskaitīšanu, salīdzināt ar spraudni |
| PHP fails ar saturu mēneša mapē | augstas aizdomas |
Dubults paplašinājums, piemēram, bild.jpg.php vai .php.png |
augstas aizdomas, tipiska maskēšanās |
Attēls, kas saskaņā ar file satur PHP kodu |
augstas aizdomas, var tikt izpildīts ar iekļaušanu |
.htaccess vai .user.ini augšupielāžu mapē |
aizdomas, pārbaudīt konfigurāciju |
| Fails pieder tīmekļa servera lietotājam, ctime pēc 17.10. | atbilst ielaušanās caur vietni gadījumam |
Aizdomīgus failus lasiet tikai kā tekstu, piemēram, ar head -c 2000 datei.php vai less. Uzkrītošas ir ļoti garas rindas, kodētas rakstzīmju virknes un funkciju nosaukumi, piemēram, eval vai base64_decode. Kā atpazīt apmaskotu kodu, parāda Apmaskota PHP koda atpazīšana.
Vai fails ir izsaukts? Skatiens žurnālā
Svarīgākais jautājums pēc atrašanas: vai kāds failu ir izmantojis? Atbilde ir tīmekļa servera piekļuves žurnālos. Meklējiet faila nosaukumu, arī arhivētajos žurnālos.
# Aizdomīgā faila izsaukumi pašreizējos un saspiestos žurnālos (nosaukums kā piemērs)
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
# Tikai sekmīgi izsaukumi ar IP adresi un laiku
grep -h "uploads/2026/10/thumb.php" /var/log/nginx/access.log* | awk '$9 == 200 {print $1, $4, $6, $7}'
Daudzi sekmīgi POST pieprasījumi no dažām adresēm norāda uz aktīvu izmantošanu kā webshell. Trāpījumu trūkums automātiski nenozīmē atvieglojumu, jo žurnāli var būt rotēti, izdzēsti vai nepilnīgi. Ja vietne atrodas aiz CDN vai starpniekservera, tur ir citi protokoli; koplietošanas hostingā piekļuves žurnālus hostinga sniedzējs parasti nodrošina klientu sadaļā. Pievērsiet uzmanību arī pieprasījumiem uz citiem jauniem failiem no tām pašām adresēm, jo tie bieži ved pie citām sastāvdaļām. Žurnālus saglabājiet no 20. oktobra. Kā žurnālus rūpīgi izvērtēt, apraksta ceļvedis Tīmekļa servera žurnālu izvērtēšana pēc uzbrukuma.
Ja žurnāls rāda sekmīgus nezināma PHP faila izsaukumus, pieņemiet ielaušanos. Nodrošiniet failu un žurnālus, ierobežojiet piekļuvi serverim un pārbaudiet, vai var būt skarti personas dati.
Pēc novērtēšanas: pareizā secība
- Nodrošināt: failu nokopēt ar kontrolsummu un laika zīmogiem, nodrošināt žurnālus.
- Noskaidrot izcelsmi: pārbaudīt augšupielādes veidlapas, spraudņus un laiku pirms atrašanas.
- Meklēt citas sastāvdaļas: papildu faili, cronjobs, jauni administratoru konti.
- Bloķēt izpildi: PHP augšupielāžu mapē aizliegt tīmekļa servera līmenī, kā aprakstīts rakstā PHP izpildes aizliegšana augšupielāžu mapēs.
- Attīrīt un mainīt piekļuves: tikai tad failu noņemt un atjaunot visas paroles.
Kā PHP SOS palīdz konkrēti?
- Novērtēt atradumu: Mēs failu pārbaudām, to neizpildot, un to klasificējam.
- Noskaidrot izmantošanu: Mēs izvērtējam žurnālus un rekonstruējam, kurš failu kad ir izsaucis.
- Attīrīt pilnībā: Ar ļaunprogrammatūras noņemšanu mēs meklējam visas sastāvdaļas, aizveram cēloni un mainām piekļuves.
- Novērst atkārtošanos: Mēs bloķējam PHP izpildi rakstāmajās mapēs un uzraugām jaunus failus.
Biežāk uzdotie jautājumi
Vai katrs PHP fails augšupielāžu mapē ir bīstams?
Ne katrs. Daži spraudņi novieto tukšu index.php, lai mapes saturs netiktu uzskaitīts. Visu pārējo, īpaši failus ar saturu, neparastu nosaukumu vai dubultu paplašinājumu, uzskatiet par aizdomu gadījumu.
Vai aizdomīgo failu drīkst atvērt pārlūkprogrammā?
Nē. Izsaukums caur vietni kodu izpilda. Failu lasiet tikai kā tekstu serverī vai kopijā, piemēram, ar less vai head.
Kā noskaidrot, vai fails ir izmantots?
Meklējiet faila nosaukumu tīmekļa servera piekļuves žurnālos. Pieprasījumi ar statusu 200 un POST metodi rāda, ka fails ir izsaukts. Attiecīgās IP adreses un laiki palīdz tālākā izmeklēšanā.
Vai pietiek ar faila izdzēšanu un PHP bloķēšanu augšupielāžu mapē?
Abi ir nepieciešami, bet nepietiekami. Papildus noskaidrojiet, kā fails tur nonāca, meklējiet citas sastāvdaļas un nomainiet piekļuves datus. Citādi uzbrucējs atgriežas pa to pašu ceļu.