# Αρχεία PHP στον φάκελο upload: σωστή ερμηνεία των ευρημάτων

> Βρήκατε αρχείο PHP στον φάκελο uploads; Ερμηνεύστε το εύρημα, ελέγξτε προσβάσεις στο log, ξεχωρίστε αθώους κατόχους θέσης από webshells και ενεργήστε σωστά.

Πηγή: https://phpsos.de/el/blog/php-dateien-im-upload-ordner/  
Ημερομηνία: 25/10/2026  
Πάροχος: PHP SOS, Επείγουσα βοήθεια PHP και ασφάλεια διακομιστών. Άμεση βοήθεια μέσω WhatsApp: https://wa.me/491736494914?text=%CE%93%CE%B5%CE%B9%CE%B1%20%CF%83%CE%B1%CF%82%2C%20PHP%20SOS%2C%20%CF%87%CF%81%CE%B5%CE%B9%CE%B1%CE%B6%CF%8C%CE%BC%CE%B1%CF%83%CF%84%CE%B5%20%CE%B2%CE%BF%CE%AE%CE%B8%CE%B5%CE%B9%CE%B1%20%CE%BC%CE%B5%20%CF%84%CE%BF%CE%BD%20%CE%B4%CE%B9%CE%B1%CE%BA%CE%BF%CE%BC%CE%B9%CF%83%CF%84%CE%AE%20PHP%20%CE%BC%CE%B1%CF%82.%20%CE%95%CF%84%CE%B1%CE%B9%CF%81%CE%B5%CE%AF%CE%B1%3A%20%E2%80%A6%20%CE%99%CF%83%CF%84%CF%8C%CF%84%CE%BF%CF%80%CE%BF%CF%82%3A%20%E2%80%A6

**Εν ολίγοις:** Ένα αρχείο PHP στον φάκελο upload είναι σοβαρό προειδοποιητικό σημάδι, επειδή εκεί πρέπει να βρίσκονται μόνο εικόνες και έγγραφα. Μην ανοίξετε ποτέ το αρχείο στο πρόγραμμα περιήγησης, διαβάστε το ως κείμενο, ελέγξτε χρονοσημάνσεις και ιδιοκτήτη και αναζητήστε το όνομα του αρχείου στα logs πρόσβασης. Αθώοι είναι συνήθως μόνο κενοί κάτοχοι θέσης, όπως ένα `index.php` χωρίς περιεχόμενο· όλα τα υπόλοιπα αντιμετωπίστε τα ως πιθανή εισβολή.

## Γιατί η PHP δεν έχει θέση στον φάκελο upload

Οι φάκελοι upload υπάρχουν για περιεχόμενο που ανεβάζουν επισκέπτες ή συντάκτες: εικόνες, PDF, βίντεο. Ο χρήστης του διακομιστή ιστού επιτρέπεται να γράφει εκεί, αλλιώς τα uploads δεν λειτουργούν. Αυτό ακριβώς κάνει αυτούς τους φακέλους ελκυστικούς για επιτιθέμενους. Όποιος μπορεί μέσω ευπάθειας να γράφει αρχεία, τα αποθέτει εκεί όπου επιτρέπεται η εγγραφή.

Νέα αρχεία PHP σε φακέλους upload ή cache συγκαταλέγονται, σύμφωνα με τις αναφορές που διαθέτουμε, στα γενικά προειδοποιητικά σημάδια μετά από εισβολή. Για το PHP2Shell δεν υπάρχουν επιβεβαιωμένοι Indicators of Compromise· ένα εύρημα δεν λέει λοιπόν τίποτα για το μέσω ποιας ευπάθειας έφτασε το αρχείο. Πώς χτίζονται με ασφάλεια οι λειτουργίες upload, περιγράφει το [Ασφαλής υλοποίηση uploads αρχείων στην PHP](https://phpsos.de/el/ratgeber/datei-upload-sicher/).

Το αν ένα τέτοιο αρχείο μπορεί να προκαλέσει ζημιά, το αποφασίζει η διαμόρφωση του διακομιστή ιστού. Αν εκτελεί αρχεία PHP στον φάκελο upload, κάθε αρχείο που αποτίθεται εκεί γίνεται πιθανός απομακρυσμένος έλεγχος. Αν η εκτέλεση εκεί είναι αποκλεισμένη, το αρχείο παραμένει ξένο σώμα, αλλά αρχικά χωρίς επίδραση. Πολλές εγκαταστάσεις δεν έχουν ρυθμίσει ποτέ αυτόν τον αποκλεισμό.

## Πώς φτάνει ένα αρχείο PHP στον φάκελο upload;

Για την αξιολόγηση βοηθά να γνωρίζετε τους πιθανούς δρόμους. Καθένας οδηγεί σε διαφορετικά επόμενα ερωτήματα.

| Δρόμος | Τυπικό υπόβαθρο | Επόμενο ερώτημα |
|---|---|---|
| Μη ασφαλής φόρμα upload | έλεγχος μόνο της κατάληξης ή του τύπου που δηλώνει το πρόγραμμα περιήγησης | Ποιες φόρμες δέχονται αρχεία; |
| Ευπάθεια σε plugin ή theme | γνωστή αδυναμία σε παρωχημένη επέκταση | Ποιες επεκτάσεις είναι παρωχημένες; |
| Κλεμμένα διαπιστευτήρια | λογαριασμός διαχειριστή, FTP ή φιλοξενίας | Ποιες συνδέσεις υπήρξαν πρόσφατα; |
| Εκτέλεση κώδικα μέσω ευπάθειας | π.χ. στον διερμηνέα, όπως είναι δυνατό στο PHP2Shell | Ήταν η PHP ευπαθής στο διάστημα αυτό; |
| Θεμιτό plugin | κάτοχοι θέσης, σπάνια αρχεία cache | Ανήκει το αρχείο στο αρχικό πακέτο; |

Πολλοί δρόμοι μπορεί να συντρέχουν. Ένας επιτιθέμενος που εκτελεί κώδικα μέσω ευπάθειας ίσως αποθέτει το αρχείο μόνο για να επιστρέφει αργότερα πιο βολικά.

## Καταγραφή των σημείων εύρεσης με συστηματικό τρόπο

Πριν αξιολογήσετε ένα μεμονωμένο αρχείο, αποκτήστε μια επισκόπηση. Οι εντολές απλώς διαβάζουν. Οι διαδρομές είναι παραδείγματα για το WordPress· σε άλλα συστήματα προσαρμόστε τη διαδρομή του upload.

```bash
# Αρχεία τύπου PHP στον φάκελο upload με μέγεθος, ιδιοκτήτη, mtime και 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'

# Προσδιορισμός τύπου αρχείου από το περιεχόμενο και όχι από την κατάληξη (εικόνες με περιεχόμενο PHP ξεχωρίζουν)
find /var/www/html/wp-content/uploads -type f -newermt "2026-10-17" -exec file {} + | grep -viE "image|pdf|video|audio"
```

Άλλα συστήματα χρησιμοποιούν άλλους φακέλους εγγραφής, όπως το `fileadmin` στο TYPO3, το `images` στο Joomla ή τον φάκελο πολυμέσων κάτω από το `public` στο Shopware 6. Προστίθενται κατάλογοι cache και temp της εφαρμογής. Σε εγκαταστάσεις multisite και σε πολλούς ιστότοπους σε έναν διακομιστή υπάρχουν αντίστοιχα πολλοί φάκελοι upload· καθένας ανήκει στην αναζήτηση.

Ύποπτα είναι και τα αρχεία `.htaccess` και `.user.ini` στον φάκελο upload. Με αυτά μπορεί να ενεργοποιηθεί ξανά η εκτέλεση PHP σε αυτόν τον φάκελο ή να αλλάξει η διαμόρφωση.

## Αρχείο PHP στον φάκελο uploads: σωστή ερμηνεία του ευρήματος

Δεν είναι κάθε εύρημα εξίσου σοβαρό. Η παρακάτω κατάταξη βοηθά στην πρώτη αξιολόγηση. Δεν υποκαθιστά μια ακριβή διερεύνηση.

| Εύρημα | Πρώτη κατάταξη |
|---|---|
| `index.php` με μηδέν bytes ή μόνο ένα σχόλιο | συνήθως κάτοχος θέσης κατά της καταγραφής καταλόγου, αντιπαραβολή με το plugin |
| Αρχείο PHP με περιεχόμενο σε μηνιαίο φάκελο | υψηλή υποψία |
| Διπλή κατάληξη όπως `bild.jpg.php` ή `.php.png` | υψηλή υποψία, τυπική συγκάλυψη |
| Εικόνα που σύμφωνα με το `file` περιέχει κώδικα PHP | υψηλή υποψία, μπορεί να εκτελεστεί μέσω ενσωμάτωσης |
| `.htaccess` ή `.user.ini` στον φάκελο upload | υποψία, έλεγχος της διαμόρφωσης |
| Το αρχείο ανήκει στον χρήστη του διακομιστή ιστού, ctime μετά τις 17.10. | ταιριάζει σε εισβολή μέσω του ιστότοπου |

Διαβάστε τα ύποπτα αρχεία μόνο ως κείμενο, για παράδειγμα με `head -c 2000 datei.php` ή `less`. Προκαλούν προσοχή πολύ μακριές γραμμές, κωδικοποιημένες συμβολοσειρές και ονόματα συναρτήσεων όπως `eval` ή `base64_decode`. Πώς αναγνωρίζετε συγκαλυμμένο κώδικα, δείχνει το [Αναγνώριση συγκαλυμμένου κώδικα PHP](https://phpsos.de/el/blog/verschleierter-php-code/).

## Κλήθηκε το αρχείο; Μια ματιά στο log

Το σημαντικότερο ερώτημα μετά το εύρημα είναι: χρησιμοποίησε κάποιος το αρχείο; Η απάντηση βρίσκεται στα logs πρόσβασης του διακομιστή ιστού. Αναζητήστε το όνομα του αρχείου, και στα αρχειοθετημένα logs.

```bash
# Κλήσεις του ύποπτου αρχείου σε τρέχοντα και συμπιεσμένα logs (το όνομα ως παράδειγμα)
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

# Μόνο επιτυχημένες κλήσεις με διεύθυνση IP και χρονική στιγμή
grep -h "uploads/2026/10/thumb.php" /var/log/nginx/access.log* | awk '$9 == 200 {print $1, $4, $6, $7}'
```

Πολλά επιτυχημένα αιτήματα POST από λίγες διευθύνσεις δείχνουν ενεργή χρήση ως webshell. Η απουσία ευρημάτων δεν σημαίνει αυτόματα ασφάλεια, επειδή τα logs μπορεί να έχουν περιστραφεί, διαγραφεί ή να είναι ελλιπή. Αν ο ιστότοπος λειτουργεί πίσω από CDN ή proxy, υπάρχουν εκεί περαιτέρω πρωτόκολλα· στο shared hosting ο πάροχος παρέχει συνήθως τα logs πρόσβασης στην περιοχή πελατών. Προσέξτε επιπλέον αιτήματα προς άλλα νέα αρχεία από τις ίδιες διευθύνσεις, γιατί οδηγούν συχνά σε περαιτέρω συστατικά. Φυλάξτε τα logs από τις 20 Οκτωβρίου. Πώς αξιολογείτε τα logs σε βάθος, αναφέρει ο οδηγός [Αξιολόγηση των logs του διακομιστή ιστού μετά από επίθεση](https://phpsos.de/el/ratgeber/logfiles-auswerten/).

> **Δράστε άμεσα:**
> Αν το log δείχνει επιτυχημένες κλήσεις ενός άγνωστου αρχείου PHP, θεωρήστε δεδομένη μια εισβολή. Διασφαλίστε το αρχείο και τα logs, περιορίστε την πρόσβαση στον διακομιστή και ελέγξτε αν ενδέχεται να θίγονται δεδομένα προσωπικού χαρακτήρα.

## Μετά την αξιολόγηση: η σωστή σειρά

1. **Διασφάλιση:** Αντιγράψτε το αρχείο με άθροισμα ελέγχου και χρονοσημάνσεις, διασφαλίστε τα logs.
2. **Διευκρίνιση προέλευσης:** Ελέγξτε φόρμες upload, plugins και την περίοδο πριν από το εύρημα.
3. **Αναζήτηση περαιτέρω συστατικών:** πρόσθετα αρχεία, cronjobs, νέοι λογαριασμοί διαχειριστή.
4. **Αποκλεισμός εκτέλεσης:** Απαγορεύστε την PHP στον φάκελο upload σε επίπεδο διακομιστή ιστού, όπως περιγράφεται στο άρθρο [Απαγόρευση εκτέλεσης PHP σε φακέλους upload](https://phpsos.de/el/blog/php-in-uploads-verbieten/).
5. **Καθαρισμός και αλλαγή πρόσβασης:** μόνο τότε αφαιρέστε το αρχείο και ανανεώστε όλους τους κωδικούς.

## Πώς βοηθά συγκεκριμένα η PHP SOS;

- **Αξιολόγηση του ευρήματος:** Ελέγχουμε το αρχείο χωρίς να το εκτελέσουμε και το κατατάσσουμε.
- **Διευκρίνιση χρήσης:** Αξιολογούμε τα logs και ανασυνθέτουμε ποιος κάλεσε το αρχείο και πότε.
- **Πλήρης καθαρισμός:** Με την [αφαίρεση κακόβουλου λογισμικού](https://phpsos.de/el/leistungen/malware-entfernung/) αναζητούμε όλα τα συστατικά, κλείνουμε την αιτία και αλλάζουμε τις προσβάσεις.
- **Αποτροπή επανάληψης:** Αποκλείουμε την εκτέλεση PHP σε φακέλους εγγραφής και παρακολουθούμε νέα αρχεία.


## Συχνές ερωτήσεις

**Είναι επικίνδυνο κάθε αρχείο PHP στον φάκελο upload;**  
Όχι κάθε ένα. Ορισμένα plugins αποθέτουν ένα κενό index.php, ώστε να μη εμφανίζεται το περιεχόμενο του φακέλου. Όλα τα υπόλοιπα, ιδίως αρχεία με περιεχόμενο, ασυνήθιστο όνομα ή διπλή κατάληξη, πρέπει να τα αντιμετωπίσετε ως ύποπτη περίπτωση.

**Επιτρέπεται να ανοίξω το ύποπτο αρχείο στο πρόγραμμα περιήγησης;**  
Όχι. Η κλήση μέσω του ιστότοπου εκτελεί τον κώδικα. Διαβάστε το αρχείο μόνο ως κείμενο στον διακομιστή ή σε αντίγραφο, για παράδειγμα με less ή head.

**Πώς μαθαίνω αν το αρχείο χρησιμοποιήθηκε;**  
Αναζητήστε το όνομα του αρχείου στα logs πρόσβασης του διακομιστή ιστού. Αιτήματα με κατάσταση 200 και μέθοδο POST δείχνουν ότι το αρχείο κλήθηκε. Οι σχετικές διευθύνσεις IP και χρονικές στιγμές βοηθούν στην περαιτέρω διερεύνηση.

**Αρκεί να διαγράψω το αρχείο και να αποκλείσω την PHP στον φάκελο upload;**  
Και τα δύο είναι απαραίτητα, δεν είναι όμως επαρκή. Διευκρινίστε επιπλέον πώς έφτασε το αρχείο εκεί, αναζητήστε περαιτέρω συστατικά και αλλάξτε τα διαπιστευτήρια πρόσβασης. Αλλιώς ο επιτιθέμενος επιστρέφει από τον ίδιο δρόμο.

## Πηγές

- [OWASP Cheat Sheet Series (μεταξύ άλλων File Upload)](https://cheatsheetseries.owasp.org/)
- [OWASP Top 10](https://owasp.org/www-project-top-ten/)
- [php.net: ανακοινώσεις ασφαλείας](https://www.php.net/)
