Praegune olukord: PHP2Shell. Kaks kriitilist PHP turvaauku (CVSS 9,2) lubavad kahjulikku koodi ilma sisselogimata. Paigad alates 21.10.2026.Mida nüüd teha →

PHP-failid üleslaadimiskaustas: leiukohtade õige tõlgendamine

PHP-fail üleslaadimiskaustas on peaaegu alati häirekell, kuid mitte iga fail ei ole kahjulik kood. Nii hindate leidu jälgi hävitamata ja selgitate, kas keegi on seda kutsunud.

Seis Lugemisaeg 5 minTuvastamine ja forensika

Lühidalt: PHP-fail üleslaadimiskaustas on tõsine hoiatusmärk, sest seal peaksid asuma ainult pildid ja dokumendid. Ärge avage faili kunagi brauseris, vaid lugege seda tekstina, kontrollige ajatempleid ja omanikku ning otsige failinime juurdepääsulogidest. Kahjutud on enamasti ainult tühjad kohahoidjad nagu sisuta index.php; kõike muud käsitlege võimaliku sissemurdmisena.

Miks PHP-l üleslaadimiskaustas midagi otsida pole

Üleslaadimiskaustad on mõeldud sisule, mida külastajad või toimetajad üles laadivad: pildid, PDF-id, videod. Veebiserveri kasutaja tohib seal kirjutada, muidu üleslaadimised ei tööta. Just see teeb need kaustad ründajatele atraktiivseks. Kes saab turvaaugu kaudu faile kirjutada, paigutab need sinna, kus kirjutamine on lubatud.

Uued PHP-failid üleslaadimis- või vahemälukaustades kuuluvad meie käsutuses olevate aruannete kohaselt sissemurdmise järgsete üldiste hoiatusmärkide hulka. PHP2Shelli kohta ei ole kinnitatud kompromiteerimistunnuseid (Indicators of Compromise); leid ei ütle seega midagi selle kohta, millise turvaauku kaudu fail tuli. Kuidas üleslaadimisfunktsioone turvaliselt ehitada, kirjeldab Failide üleslaadimine PHP-s turvaliselt.

Kas selline fail võib kahju teha, otsustab veebiserveri seadistus. Kui see käitab PHP-faile üleslaadimiskaustas, muutub iga sinna paigutatud fail võimalikuks kaugjuhtimiseks. Kui käivitamine on seal blokeeritud, jääb fail võõrkehaks, kuid esialgu ilma mõjuta. Paljudes paigaldustes ei ole seda blokeeringut kunagi seadistatud.

Kuidas PHP-fail üleslaadimiskausta satub?

Hindamiseks aitab võimalike teede tundmine. Igaüks viib erinevate järgküsimusteni.

Tee Tüüpiline taust Järgküsimus
Ebaturvaline üleslaadimisvorm kontrollitakse ainult laiendit või brauseri teatatud tüüpi Millised vormid faile vastu võtavad?
Turvauk pluginas või teemas teadaolev nõrkus aegunud laiendis Millised laiendused on aegunud?
Varastatud ligipääsuandmed administraatori-, FTP- või majutuskonto Millised sisselogimised viimasel ajal toimusid?
Koodi käivitamine turvaaugu kaudu nt interpretaatoris, nagu PHP2Shelli puhul võimalik Kas PHP oli selles ajavahemikus haavatav?
Legitiimne plugin kohahoidjad, harva vahemälufailid Kas fail kuulub originaalpaketi juurde?

Mitu teed võivad kokku langeda. Ründaja, kes käivitab turvaaugu kaudu koodi, paigutab faili võib-olla ainult selleks, et hiljem mugavamalt tagasi tulla.

Leiukohtade süstemaatiline loetlemine

Enne kui hindate üksikut faili, hankige ülevaade. Käsud ainult loevad. Teed on WordPressi näited; teiste süsteemide puhul kohandage üleslaadimistee.

# PHP-laadsed failid üleslaadimiskaustas koos suuruse, omaniku, mtime ja ctime'iga
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'

# Failitüübi määramine sisu, mitte laiendi järgi (PHP sisuga pildid jäävad silma)
find /var/www/html/wp-content/uploads -type f -newermt "2026-10-17" -exec file {} + | grep -viE "image|pdf|video|audio"

Teised süsteemid kasutavad teisi kirjutuskaustu, näiteks fileadmin TYPO3-s, images Joomlas või meediakaust kataloogi public all Shopware 6-s. Lisanduvad rakenduse vahemälu- ja ajutised kataloogid. Multisite-paigaldustes ja mitme veebisaidiga serverites on vastavalt palju üleslaadimiskaustu; igaüks kuulub otsingusse.

Kahtlased on ka .htaccess ja .user.ini failid üleslaadimiskaustas. Nendega saab PHP täitmise selles kaustas uuesti sisse lülitada või seadistust muuta.

PHP-fail uploads-kaustas: leidu õigesti tõlgendada

Mitte iga leid ei ole võrdselt tõsine. Järgmine liigitus aitab esimesel hindamisel. See ei asenda täpset uurimist.

Tulemus Esmane hinnang
index.php null baidiga või ainult kommentaariga enamasti kohahoidja kataloogi loetlemise vastu, võrrelge pluginaga
PHP-fail sisuga kuukaustas kõrge kahtlus
Topeltlaiend nagu bild.jpg.php või .php.png kõrge kahtlus, tüüpiline maskeering
Pilt, mis sisaldab file järgi PHP-koodi kõrge kahtlus, võidakse sissekaasamise kaudu käivitada
.htaccess või .user.ini üleslaadimiskaustas kahtlus, kontrollige seadistust
Fail kuulub veebiserveri kasutajale, ctime pärast 17.10. sobib veebisaidi kaudu toimunud sissemurdmisega

Lugege kahtlasi faile ainult tekstina, näiteks käsuga head -c 2000 datei.php või less. Silma jäävad väga pikad read, kodeeritud märgijadad ja funktsiooninimed nagu eval või base64_decode. Kuidas hägustatud koodi ära tunda, näitab Hägustatud PHP-koodi tuvastamine.

Kas faili on kutsutud? Pilk logisse

Pärast leidu on kõige olulisem küsimus: kas keegi on faili kasutanud? Vastus asub veebiserveri juurdepääsulogides. Otsige failinime, ka arhiveeritud logidest.

# Kahtlase faili päringud praegustes ja pakitud logides (nimi näitena)
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

# Ainult edukad päringud koos IP-aadressi ja ajahetkega
grep -h "uploads/2026/10/thumb.php" /var/log/nginx/access.log* | awk '$9 == 200 {print $1, $4, $6, $7}'

Palju edukaid POST-päringuid vähestelt aadressidelt viitab aktiivsele kasutamisele veebishellina. Leidude puudumine ei tähenda automaatselt andestust, sest logid võivad olla pööratud, kustutatud või mittetäielikud. Kui veebisait töötab CDN-i või proksi taga, asuvad täiendavad protokollid seal; jagatud majutuse puhul pakub veebimajutaja juurdepääsulogisid enamasti kliendialas. Jälgige lisaks päringuid teistele uutele failidele samadelt aadressidelt, sest need viivad sageli muude osadeni. Säilitage logid alates 20. oktoobrist. Kuidas logisid põhjalikult hinnata, seisab juhendis Veebiserveri logide hindamine pärast rünnakut.

Tegutsege kohe

Kui logi näitab tundmatu PHP-faili edukaid päringuid, lähtuge sissemurdmisest. Kindlustage fail ja logid, piirake juurdepääsu serverile ja kontrollige, kas võivad olla mõjutatud isikuandmed.

Pärast hindamist: õige järjekord

  1. Kindlustage: kopeerige fail kontrollsumma ja ajatemplitega, kindlustage logid.
  2. Selgitage päritolu: kontrollige üleslaadimisvorme, pluginaid ja ajavahemikku enne leidu.
  3. Otsige muid osi: täiendavad failid, cron-tööd, uued administraatorikontod.
  4. Blokeerige täitmine: keelake PHP üleslaadimiskaustas veebiserveri tasemel, nagu on kirjeldatud artiklis PHP täitmise keelamine üleslaadimiskaustades.
  5. Puhastage ja vahetage ligipääsud: alles siis eemaldage fail ja uuendage kõik paroolid.

Kuidas PHP SOS konkreetselt aitab?

  • Leiu hindamine: Kontrollime faili seda käivitamata ja hindame selle.
  • Kasutuse selgitamine: Hindame logisid ja rekonstrueerime, kes faili millal kutsus.
  • Täielik puhastamine: Kahjuliku tarkvara eemaldamisega otsime kõik osad, sulgeme põhjuse ja vahetame ligipääsud.
  • Kordumise vältimine: Blokeerime PHP täitmise kirjutuskaustades ja jälgime uusi faile.

Korduma kippuvad küsimused

Kas iga PHP-fail üleslaadimiskaustas on ohtlik?

Mitte iga. Mõned pluginad paigutavad tühja index.php, et kausta sisu ei loetletaks. Kõike muud, eriti sisuga faile, ebatavalise nimega või topeltlaiendiga, peaksite käsitlema kahtlusjuhuna.

Kas tohin kahtlase faili brauseris avada?

Ei. Veebisaidi kaudu avamine käivitab koodi. Lugege faili ainult tekstina serveris või koopias, näiteks käskudega less või head.

Kuidas selgitan välja, kas faili on kasutatud?

Otsige failinime veebiserveri juurdepääsulogidest. Päringud staatusega 200 ja POST-meetodiga näitavad, et faili on kutsutud. Seotud IP-aadressid ja ajahetked aitavad edasisel uurimisel.

Kas piisab faili kustutamisest ja PHP blokeerimisest üleslaadimiskaustas?

Mõlemat on vaja, kuid see ei piisa. Selgitage lisaks, kuidas fail sinna sattus, otsige muid osi ja vahetage ligipääsuandmed. Muidu tuleb ründaja sama teed pidi tagasi.

Allikad

Kohene kontakt

Iga tund loeb. Kirjutage meile kohe.

Kirjeldage lühidalt süsteemi, PHP versiooni ja tähelepanekut. Võtame teiega ühendust, selgitame olukorra välja ja töötame kaugtööna, kuni intsident on lõpetatud ja dokumenteeritud.

Kohene abi