# PHP-fájlok a feltöltési mappában: a lelőhelyek helyes értelmezése

> PHP-fájlt talált a feltöltési mappában? Így értelmezze a leletet, ellenőrizze a naplóban a hozzáféréseket, különítse el az ártalmatlan helyőrzőket a webshellektől.

Forrás: https://phpsos.de/hu/blog/php-dateien-im-upload-ordner/  
Állapot: 2026. 10. 25.  
Szolgáltató: PHP SOS, PHP-vészhelyzeti segítség és szerverbiztonság. Azonnali segítség WhatsAppon: https://wa.me/491736494914?text=%C3%9Cdv%C3%B6zl%C3%B6m%2C%20PHP%20SOS%21%20Seg%C3%ADts%C3%A9gre%20van%20sz%C3%BCks%C3%A9g%C3%BCnk%20a%20PHP-szerver%C3%BCnkkel.%20C%C3%A9g%3A%20%E2%80%A6%20Weboldal%3A%20%E2%80%A6

**Röviden:** A feltöltési mappában lévő PHP-fájl komoly figyelmeztető jel, mert ott csak képeknek és dokumentumoknak kellene lenniük. A fájlt soha ne nyissa meg a böngészőben, hanem olvassa szövegként, ellenőrizze az időbélyegeket és a tulajdonost, és keresse a fájlnevet a hozzáférési naplókban. Többnyire csak az üres helyőrzők ártalmatlanok, például egy tartalom nélküli `index.php`; mindent mást lehetséges behatolásként kezeljen.

## Miért nincs helye a PHP-nak a feltöltési mappában

A feltöltési mappák azoknak a tartalmaknak valók, amelyeket a látogatók vagy a szerkesztők feltöltenek: képek, PDF-ek, videók. A webszerver-felhasználó ott írhat, különben a feltöltések nem működnének. Éppen ez teszi vonzóvá ezeket a mappákat a támadóknak. Aki egy résen keresztül fájlokat tud írni, oda helyezi őket, ahol az írás engedélyezett.

Az új PHP-fájlok a feltöltési vagy gyorsítótár-mappákban a rendelkezésünkre álló beszámolók szerint a behatolás utáni általános figyelmeztető jelek közé tartoznak. A PHP2Shellre nincsenek megerősített Indicators of Compromise; egy lelet tehát nem mond semmit arról, melyik résen keresztül került oda a fájl. Hogyan lehet biztonságosan megvalósítani a feltöltési funkciókat, azt a [Fájlfeltöltés biztonságos megvalósítása PHP-ban](https://phpsos.de/hu/ratgeber/datei-upload-sicher/) írja le.

Hogy egy ilyen fájl kárt okozhat-e, azt a webszerver konfigurációja dönti el. Ha a feltöltési mappában végrehajtja a PHP-fájlokat, minden oda helyezett fájl lehetséges távirányítássá válik. Ha ott a végrehajtás tiltott, a fájl idegen test marad, de eleinte hatás nélkül. Sok telepítésben ezt a zárolást soha nem állították be.

## Hogyan kerül PHP-fájl a feltöltési mappába?

Az értékeléshez segít ismerni a lehetséges utakat. Mindegyik más következő kérdésekhez vezet.

| Út | Tipikus háttér | Következő kérdés |
|---|---|---|
| Nem biztonságos feltöltési űrlap | csak a végződés vagy a böngésző által jelzett típus ellenőrzése | Mely űrlapok fogadnak fájlokat? |
| Rés egy pluginban vagy témában | ismert sebezhetőség egy elavult bővítményben | Mely bővítmények elavultak? |
| Ellopott hozzáférési adatok | admin-, FTP- vagy tárhelyfiók | Milyen bejelentkezések voltak utoljára? |
| Kódvégrehajtás egy résen keresztül | például az értelmezőben, ahogyan a PHP2Shellnél lehetséges | Sebezhető volt a PHP az adott időszakban? |
| Jogos plugin | helyőrző, ritkán gyorsítótár-fájlok | A fájl az eredeti csomaghoz tartozik? |

Több út is összejöhet. Az a támadó, aki egy résen keresztül kódot hajt végre, a fájlt talán csak azért helyezi el, hogy később kényelmesebben visszatérhessen.

## A lelőhelyek rendszeres felsorolása

Mielőtt egyetlen fájlt értékelne, szerezzen áttekintést. A parancsok csak olvasnak. Az útvonalak WordPress-példák; más rendszereknél igazítsa a feltöltési útvonalat.

```bash
# PHP-szerű fájlok a feltöltési mappában mérettel, tulajdonossal, mtime-mal és ctime-mal
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'

# A fájltípus meghatározása tartalom, nem végződés alapján (a PHP-tartalmú képek feltűnnek)
find /var/www/html/wp-content/uploads -type f -newermt "2026-10-17" -exec file {} + | grep -viE "image|pdf|video|audio"
```

Más rendszerek más írható mappákat használnak, például a `fileadmin` a TYPO3-nál, az `images` a Joomlánál vagy a `public` alatti médiamappa a Shopware 6-nál. Ehhez jönnek az alkalmazás gyorsítótár- és ideiglenes könyvtárai. Multisite telepítéseknél és több weboldalnál egy szerveren ennek megfelelően sok feltöltési mappa van; mindegyik a keresésbe tartozik.

A feltöltési mappában lévő `.htaccess` és `.user.ini` fájlok is gyanúsak. Velük a PHP végrehajtása újra bekapcsolható ebben a mappában, vagy a konfiguráció módosítható.

## PHP-fájl a feltöltési mappában: a lelet helyes értelmezése

Nem minden találat egyformán komoly. A következő besorolás az első értékelésben segít. Nem helyettesíti a részletes vizsgálatot.

| Lelet | Első besorolás |
|---|---|
| `index.php` nulla bájttal vagy csak egy megjegyzéssel | többnyire helyőrző a könyvtárlistázás ellen, egyeztetni a pluginnal |
| Tartalmat hordozó PHP-fájl egy havi mappában | magas gyanú |
| Dupla végződés, például `bild.jpg.php` vagy `.php.png` | magas gyanú, tipikus álcázás |
| Kép, amely a `file` szerint PHP-kódot tartalmaz | magas gyanú, beágyazás révén végrehajtható |
| `.htaccess` vagy `.user.ini` a feltöltési mappában | gyanú, a konfigurációt ellenőrizni kell |
| A fájl a webszerver-felhasználóé, ctime október 17. után | illik egy weboldalon keresztüli behatoláshoz |

A gyanús fájlokat csak szövegként olvassa, például a `head -c 2000 datei.php` vagy a `less` paranccsal. Feltűnőek a nagyon hosszú sorok, a kódolt karakterláncok és az olyan függvénynevek, mint az `eval` vagy a `base64_decode`. Hogyan ismeri fel az elrejtett kódot, azt az [Elrejtett PHP-kód felismerése](https://phpsos.de/hu/blog/verschleierter-php-code/) mutatja.

## Meghívták a fájlt? Egy pillantás a naplóba

A lelet után a legfontosabb kérdés: használta valaki a fájlt? A válasz a webszerver hozzáférési naplóiban van. Keresse a fájlnevet, az archivált naplókban is.

```bash
# A gyanús fájl meghívásai az aktuális és a tömörített naplókban (a név példa)
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

# Csak a sikeres meghívások IP-címmel és időponttal
grep -h "uploads/2026/10/thumb.php" /var/log/nginx/access.log* | awk '$9 == 200 {print $1, $4, $6, $7}'
```

Kevés címről érkező, sok sikeres POST-kérés aktív webshellként való használatra utal. A találatok hiánya nem jelent automatikusan vészjelzést, mert a naplók rotálhatók, törölhetők vagy hiányosak lehetnek. Ha a weboldal CDN vagy proxy mögött fut, további naplók vannak ott; megosztott tárhelyen a tárhelyszolgáltató a hozzáférési naplókat többnyire az ügyfélterületen biztosítja. Figyeljen arra is, hogy ugyanezekről a címekről érkeznek-e kérések más új fájlokhoz, mert azok gyakran további összetevőkhöz vezetnek. Őrizze meg a naplókat 2026. október 20-tól. Hogyan értékeli ki alaposan a naplókat, azt az útmutató [A webszerver-naplók kiértékelése támadás után](https://phpsos.de/hu/ratgeber/logfiles-auswerten/) írja le.

> **Azonnal cselekedjen:**
> Ha a napló egy ismeretlen PHP-fájl sikeres meghívásait mutatja, számítson behatolásra. Mentse a fájlt és a naplókat, korlátozza a hozzáférést a szerverhez, és ellenőrizze, érintettek lehetnek-e személyes adatok.

## Az értékelés után: a helyes sorrend

1. **Mentés:** Másolja a fájlt ellenőrző összeggel és időbélyegekkel, mentse a naplókat.
2. **Az eredet tisztázása:** Ellenőrizze a feltöltési űrlapokat, a pluginokat és a lelet előtti időszakot.
3. **További összetevők keresése:** további fájlok, cron-feladatok, új admin-fiókok.
4. **A végrehajtás tiltása:** Tiltsa a PHP-t a feltöltési mappában webszerver szinten, ahogyan a [A PHP végrehajtásának tiltása a feltöltési mappákban](https://phpsos.de/hu/blog/php-in-uploads-verbieten/) cikk leírja.
5. **Tisztítás és hozzáférések cseréje:** csak ezután távolítsa el a fájlt, és újítsa meg az összes jelszót.

## Hogyan segít konkrétan a PHP SOS?

- **A lelet értékelése:** Végrehajtás nélkül ellenőrizzük a fájlt, és besoroljuk.
- **A használat tisztázása:** Kiértékeljük a naplókat, és rekonstruáljuk, ki mikor hívta meg a fájlt.
- **Teljes tisztítás:** A [kártevő-eltávolítással](https://phpsos.de/hu/leistungen/malware-entfernung/) megkeressük az összes összetevőt, lezárjuk az okot, és kicseréljük a hozzáféréseket.
- **Az ismétlődés megakadályozása:** Tiltjuk a PHP-végrehajtást az írható mappákban, és figyeljük az új fájlokat.


## Gyakori kérdések

**Veszélyes minden PHP-fájl a feltöltési mappában?**  
Nem mindegyik. Egyes pluginok üres index.php fájlt helyeznek el, hogy a mappa tartalma ne legyen listázható. Minden mást, különösen a tartalommal, szokatlan névvel vagy dupla végződéssel rendelkező fájlokat, kezeljen gyanús esetként.

**Megnyithatom a gyanús fájlt a böngészőben?**  
Nem. A weboldalon keresztüli meghívás végrehajtja a kódot. A fájlt csak szövegként olvassa a szerveren vagy egy másolatban, például a less vagy a head paranccsal.

**Hogyan derítem ki, hogy használták-e a fájlt?**  
Keresse a fájlnevet a webszerver hozzáférési naplóiban. A 200-as állapotú és POST metódusú kérések azt mutatják, hogy a fájlt meghívták. A hozzájuk tartozó IP-címek és időpontok segítenek a további vizsgálatban.

**Elég törölni a fájlt és letiltani a PHP-t a feltöltési mappában?**  
Mindkettő szükséges, de nem elegendő. Tisztázza emellett, hogyan került oda a fájl, keressen további összetevőket, és cserélje ki a hozzáférési adatokat. Különben a támadó ugyanazon az úton visszatér.

## Források

- [OWASP Cheat Sheet Series (többek között File Upload)](https://cheatsheetseries.owasp.org/)
- [OWASP Top 10](https://owasp.org/www-project-top-ten/)
- [php.net: biztonsági közlemények](https://www.php.net/)
