Οι επισκέπτες σας καταλήγουν σε σελίδα λοταρίας, φαρμακείου ή ψεύτικης τεχνικής υποστήριξης, ενώ εσείς βλέπετε την ιστοσελίδα κανονικά. Αυτό είναι το σημάδι μιας ανακατεύθυνσης που μπήκε κρυφά, συνήθως υπό όρους. Ο οδηγός αυτός δείχνει πώς να την αναπαραγάγετε, πώς να τη βρείτε στα αρχεία ή στη βάση δεδομένων και πώς να κλείσετε την πρόσβαση από την οποία μπήκε.
wp-config.php..htaccess, αρχεία PHP, βάση δεδομένων, ρυθμίσεις διεύθυνσης της ιστοσελίδας.wp-content/uploads, πρόσθετα για επανεγκατάσταση ή διαγραφή.Μια ανακατεύθυνση που μπαίνει κατά την παραβίαση διαλέγει σε ποιους εφαρμόζεται. Τις περισσότερες φορές εξαιρεί το άτομο που διαχειρίζεται την ιστοσελίδα, ώστε να μείνει στη θέση της όσο περισσότερο γίνεται. Οι πιο συνηθισμένοι όροι:
Referer του αιτήματος.User-Agent.Ένα μήνυμα πελάτη που λέει «η ιστοσελίδα σας με στέλνει αλλού» αξίζει λοιπόν να ληφθεί σοβαρά υπόψη, ακόμη κι αν σε εσάς όλα εμφανίζονται σωστά.
Μπείτε στη θέση του επισκέπτη που τη βλέπει:
Αν έχετε πρόσβαση σε τερματικό, η παρακάτω εντολή ζητά την αρχική σας σελίδα παρουσιαζόμενη ως iPhone που έρχεται από το Google:
curl -s -i -A "Mozilla/5.0 (iPhone; CPU iPhone OS 17_0 like Mac OS X)" -e "https://www.google.com/" https://www.i-istoselida-sas.com/
Διαβάστε τις πρώτες γραμμές της απάντησης. Ένας κωδικός 301 ή 302 που ακολουθείται από γραμμή Location: προς άγνωστη διεύθυνση σημαίνει ανακατεύθυνση από τον διακομιστή: βρίσκεται στο .htaccess ή σε αρχείο PHP. Ένας κωδικός 200 ενώ το πρόγραμμα περιήγησης ανακατευθύνεται σημαίνει ανακατεύθυνση μέσα στη σελίδα, σε JavaScript: βρίσκεται συνήθως στη βάση δεδομένων ή σε αρχείο του θέματος.
wp-config.php, σταθερά DB_PASSWORD), και έπειτα κάθε λογαριασμός διαχειριστή του WordPress.AUTH_KEY έως NONCE_SALT του wp-config.php με ένα νέο σύνολο, που δημιουργείται στο https://api.wordpress.org/secret-key/1.1/salt/. Όλες οι ανοιχτές συνεδρίες κλείνουν, μαζί και του εισβολέα.wp config shuffle-salts
Στη ρίζα της ιστοσελίδας, και μερικές φορές σε υποφάκελο, το .htaccess μπορεί να περιέχει κανόνες επανεγγραφής που πρόσθεσε ο εισβολέας. Το μπλοκ που γράφει το ίδιο το WordPress είναι σύντομο, ανάμεσα στις γραμμές # BEGIN WordPress και # END WordPress:
# BEGIN WordPress
# Οι ντιρεκτίβες (γραμμές) ανάμεσα `BEGIN WordPress` και`END WordPress` είναι
# δυναμικά δημιουργημένες, και θα πρέπει να τροποποιούνται μόνο με την χρήση φίλτρων WordPress.
# Οποιεσδήποτε αλλαγές στις ντιρεκτίβες ανάμεσα στους δείκτες θα επανεγραφεί.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
Ένας κανόνας RewriteCond που ελέγχει το %{HTTP_REFERER} (google, bing, facebook) ή το %{HTTP_USER_AGENT} (android, iphone, mobile), και ακολουθείται από RewriteRule προς εξωτερική διεύθυνση, είναι η ανακατεύθυνση. Τα πρόσθετα cache και ασφάλειας γράφουν επίσης δικά τους μπλοκ, με το όνομά τους: αντιστοιχίστε κάθε μπλοκ με τη λίστα των πρόσθετών σας πριν το αφαιρέσετε.
Το WP-CLI συγκρίνει τα αρχεία του πυρήνα του WordPress και των πρόσθετων με τα αθροίσματα ελέγχου που δημοσιεύει το WordPress.org, και απαριθμεί κάθε αρχείο που τροποποιήθηκε ή προστέθηκε:
wp core verify-checksums
wp plugin verify-checksums --all
Η δεύτερη εντολή καλύπτει τα πρόσθετα που διανέμονται από τον κατάλογο του WordPress.org. Ένα πρόσθετο που αγοράστηκε από τον εκδότη του συγκρίνεται με ένα νέο αντίγραφο, που κατεβάζετε από τον λογαριασμό σας σε εκείνον. Η περίπτωση είναι συχνή: από τις 540 ιστοσελίδες ΜμΕ σε WordPress της μέτρησής μας της 1ης Σεπτεμβρίου 2026, το 66 % έχει τουλάχιστον ένα πρόσθετο εκτός του δημόσιου καταλόγου.
Χωρίς WP-CLI, δύο αναζητήσεις δίνουν μια πρώτη διαλογή:
find . -name "*.php" -mtime -30
find wp-content/uploads -name "*.php"
Η πρώτη απαριθμεί τα αρχεία PHP που τροποποιήθηκαν τις τελευταίες 30 ημέρες, η δεύτερη τα αρχεία PHP μέσα στον φάκελο των πολυμέσων, όπου είναι εξ ορισμού ύποπτα (ορισμένα πρόσθετα βάζουν εκεί ένα κενό index.php, που είναι θεμιτό). Μια ημερομηνία τροποποίησης μπορεί να παραποιηθεί: ένα παλιό αρχείο σε λάθος σημείο αξίζει κι αυτό έλεγχο.
Ανοίξτε πρώτα το wp-config.php, το index.php της ρίζας, τα functions.php και header.php του ενεργού θέματος, και τον φάκελο wp-content/mu-plugins: τα πρόσθετα που βρίσκονται εκεί φορτώνονται αυτόματα και δεν απενεργοποιούνται από τη διαχείριση. Τα σημάδια που αναζητάτε: eval(, base64_decode(, gzinflate(, str_rot13(, μεγάλες ακατάληπτες συμβολοσειρές, ή window.location ακολουθούμενο από διεύθυνση που δεν αναγνωρίζετε.
Μια ανακατεύθυνση σε JavaScript μπαίνει εύκολα στο περιεχόμενο των σελίδων ή στις ρυθμίσεις, όπου κανένα αρχείο δεν τη δείχνει. Το WP-CLI αναζητά μια συμβολοσειρά σε όλους τους πίνακες του WordPress:
wp db search "<script"
wp db search "fromCharCode"
Χωρίς WP-CLI, οι ίδιες αναζητήσεις γίνονται στο phpMyAdmin, στην καρτέλα SQL:
SELECT ID, post_title FROM wp_posts WHERE post_content LIKE '%<script%';
SELECT option_name FROM wp_options WHERE option_value LIKE '%<script%';
Ορισμένα αποτελέσματα είναι θεμιτά: ένα εργαλείο μέτρησης επισκεψιμότητας, ένα banner για τα cookies ή ένα widget που βάλατε εσείς. Ό,τι δεν αντιστοιχεί σε κάτι που εγκαταστήσατε αξίζει εξέταση, ιδίως ένα script που συνθέτει μια διεύθυνση από κωδικούς χαρακτήρων.
Στις Ρυθμίσεις > Γενικά, τα πεδία «Διεύθυνση URL του WordPress» και «Διεύθυνση URL ιστότοπου» πρέπει να έχουν τον δικό σας τομέα. Οι ίδιες τιμές μπορούν να επιβάλλονται στο wp-config.php με τις σταθερές WP_HOME και WP_SITEURL: ελέγξτε και τα δύο σημεία.
wp option get home
wp option get siteurl
wp user list --role=administrator
Όταν οι σταθερές είναι ορισμένες, οι δύο πρώτες εντολές επιστρέφουν την τιμή τους. Η τελευταία απαριθμεί τους διαχειριστές με την ημερομηνία εγγραφής τους. Στη διαχείριση, η ίδια λίστα βγαίνει από το μενού Χρήστες, με φίλτρο τον ρόλο Διαχειριστής. Ένας λογαριασμός που κανείς δεν αναγνωρίζει διαγράφεται, και το περιεχόμενό του αποδίδεται σε έναν νόμιμο λογαριασμό.
Η διαγραφή της γραμμής που ανακατευθύνει σταματά το σύμπτωμα. Η πρόσβαση που χρησιμοποίησε ο εισβολέας μένει ανοιχτή όσο δεν έχει βρεθεί, και η ανακατεύθυνση επιστρέφει τις επόμενες ημέρες. Η σειρά που αντέχει:
wp-admin και wp-includes και εκτελέστε wp core download --skip-content --force, που ξαναγράφει τον πυρήνα χωρίς να αγγίξει τα πρόσθετα, τα θέματα και τα πολυμέσα σας. Η εντολή αντικαθιστά τα υπάρχοντα αρχεία αλλά δεν διαγράφει κανένα αρχείο που προστέθηκε: γι’ αυτό οι δύο φάκελοι διαγράφονται πρώτα, και γι’ αυτό τα άγνωστα αρχεία PHP της ρίζας αφαιρούνται με το χέρι.wp-content/uploads, τους κανόνες που προστέθηκαν στο .htaccess και τα scripts που βρέθηκαν στη βάση.wp cron event list: μια εργασία με άγνωστο όνομα μπορεί να ξαναβάλει τον κώδικα.Αν η ιστοσελίδα διατηρεί δεδομένα προσωπικού χαρακτήρα (φόρμες, λογαριασμούς πελατών, παραγγελίες), σημειώστε την ώρα κατά την οποία διαπιστώσατε την παραβίαση. Στην Ευρωπαϊκή Ένωση, ο Γενικός Κανονισμός για την Προστασία Δεδομένων προβλέπει ότι μια παραβίαση δεδομένων προσωπικού χαρακτήρα γνωστοποιείται στην εποπτική αρχή εντός 72 ωρών από τη στιγμή που αποκτάτε γνώση του γεγονότος, εκτός εάν η παραβίαση δεν ενδέχεται να προκαλέσει κίνδυνο για τα δικαιώματα και τις ελευθερίες των φυσικών προσώπων.
Όταν η Google εντοπίσει την ανακατεύθυνση, το Chrome μπορεί να εμφανίσει μια κόκκινη σελίδα «Επικίνδυνος ιστότοπος» πριν ανοίξει την ιστοσελίδα, και η Google μπορεί να γράψει κάτω από το αποτέλεσμά σας «Αυτός ο ιστότοπος ενδέχεται να έχει παραβιαστεί». Η αναφορά Προβλήματα ασφάλειας του Google Search Console δείχνει τι εντοπίστηκε και σε ποιες διευθύνσεις. Μόλις καθαριστεί η ιστοσελίδα, το κουμπί του αιτήματος εξέτασης (Request Review στο αγγλικό περιβάλλον) ξεκινά τον έλεγχο.
Μια ανακατεύθυνση που αφαιρέθηκε αφήνει ένα ερώτημα: ποιος φροντίζει τον ιστότοπο στη συνέχεια; Η Simafri αναλαμβάνει τον ιστότοπό σας WordPress, τον επαναφέρει online σε μια βάση που φιλοξενούμε, θωρακίζουμε και κρατάμε ενημερωμένη, και έπειτα τον φροντίζει, μήνα με τον μήνα. Κρατάτε το όνομα τομέα και το περιεχόμενό σας.
Ο κώδικας που μπήκε διαβάζει το User-Agent του προγράμματος περιήγησης και ανακατευθύνει μόνο τα κινητά τηλέφωνα. Το άτομο που διαχειρίζεται την ιστοσελίδα, συχνά από υπολογιστή, δεν βλέπει τίποτα. Δοκιμάστε από κινητό με δεδομένα κινητής τηλεφωνίας, ή με το curl, στέλνοντας το αναγνωριστικό ενός προγράμματος περιήγησης για κινητά.
Η επανεγκατάσταση του πυρήνα ξαναγράφει τα αρχεία του WordPress, χωρίς να διαγράφει όσα μπορεί να πρόσθεσε ένας εισβολέας. Η βάση δεδομένων, το θέμα, τα πρόσθετα και ο φάκελος των πολυμέσων μένουν όπως είναι, και εκεί βρίσκονται συνήθως η ανακατεύθυνση και η πρόσβαση του εισβολέα. Ο νέος πυρήνας είναι ένα βήμα του καθαρισμού, που ολοκληρώνεται με τη βάση, τα πρόσθετα, τους λογαριασμούς και τους κωδικούς πρόσβασης.
Επειδή η πρόσβαση από την οποία μπήκε είναι ακόμη εκεί: ένας λογαριασμός διαχειριστή που προστέθηκε, ένα αρχείο PHP κρυμμένο στα πολυμέσα, μια προγραμματισμένη εργασία, ένα ευάλωτο πρόσθετο. Καθένα επιτρέπει να ξαναμπεί ο κώδικας μετά τον καθαρισμό. Ελέγξτε τους λογαριασμούς, τον φάκελο wp-content/uploads, τις προγραμματισμένες εργασίες και τις εκδόσεις των πρόσθετων, και αλλάξτε ξανά τους κωδικούς πρόσβασης.
Ανοίξτε το Google Search Console και την αναφορά Προβλήματα ασφάλειας: απαριθμεί τα προβλήματα που εντοπίστηκαν και παραδείγματα διευθύνσεων. Αν η ιστοσελίδα δεν έχει επαληθευτεί ακόμη στο Search Console, η επαλήθευση με εγγραφή DNS καλύπτει ολόκληρο τον τομέα.
Simafri
Ας μιλήσουμε για την ιστοσελίδα σας
Πείτε μας με λίγα λόγια για το έργο σας: θα επικοινωνήσουμε σύντομα μαζί σας.
Ευχαριστούμε! Το αίτημά σας εστάλη. Θα επικοινωνήσουμε σύντομα μαζί σας.
Προτιμάτε email; Γράψτε μας στο support@simafri.com.