ΟΙ φάκελος wp-content/themes χάνεται ή αδειάζει
-
Καλησπέρα,
Τον τελευταίο καιρό αντιμετωπίζουμε ένα παράξενο πρόβλημα με ένα site που συντηρούμε.
Περίπου κάθε 1 εβδομάδα (δεν είναι στάνταρ το κάθε πότε), το site ξαφνικά σταματάει να λειτουργεί ή χάνει την μορφοποίησή του και ο φάκελος themes είτε είναι άδειος, είτε λείπει εντελώς από τα αρχεία του plesk.
Δεν έχουμε καταφέρει να δούμε τι συμβαίνει. Στην αρχή υποθέσαμε ότι είναι το LiteSpeed plugin αλλά το απενεργοποιήσαμε και πάλι έχουμε προβλήματα. Μέχρι πριν 20 μέρες δούλευε μια χαρά και με το LiteSpeed.Το πρόβλημα διορθώνεται όταν ανεβάζουμε τα αρχεία που λείπουν από προηγούμενο backup, απλά πρέπει να δούμε τι συμβαίνει για να διορθωθεί μια και καλή το πρόβλημα. Τώρα το site παίζει, αλλά φοβόμαστε ότι θα ξαναχαλάσει, οπότε πρέπει να δούμε την ρίζα του προβλήματος και να το διορθώσουμε.
Ο φάκελος και τα αρχεία του δεν βρίσκονται πουθενά μέσα στο πακέτο hosting, ούτε σε άλλους φακέλους ούτε στο trash. Πρόσβαση στα αρχεία δεν έχει κανένας άλλος.
Έχουμε ελέγξει τα logs του server και το μόνο που φαίνεται να επαναλαμβάνεται είναι κάποια security_mod rules που χτυπάνε.
Θα μπορούσε να είναι αποτέλεσμα κάποιας επίθεσης; Σκεφτήκαμε μήπως φταίει το update που κάναμε σε κάποια plugins, αλλά έχουν περάσει μέρες από τότε και τοι πρόβλημα επαναλαμβάνεται,
Έχει αντιμετωπίσει κάποιος κάτι παρόμοιο; Έχετε καμιά ιδέα του τι μπορεί να φταίει;
Οι πληροφορίες του συστήματος είναι οι εξής:
WordPress v6.2.2
Woocommerce v7.9.0
Shoptimizer theme with Kirki plugin
PHP 8.1.9
Το site λειτουργεί σε Plesk με LiteSpeed.Ευχαριστώ εκ των προτέρων,
Δήμητρα- Το θέμα τροποποιήθηκε 1 έτος, 1 μήνα πριν από τον/ην dimi993.
Η σελίδα για την οποία χρειάζομαι βοήθεια: [συνδεθείτε για να δείτε τον σύνδεσμο]
-
Καλησπέρα. Θεωρητικά ο Hosting Provider θα μπορούσε να σου δώσει κάποια απάντηση σε αυτά βλέποντας τις καταγραφές του Server, καθότι σίγουρα θα έχει μια πιο ξεκάθαρη εικόνα από εμάς.
Με βάση όσα ανέφερες:
Το LiteSpeed δεν έχει δικαιώματα να κάνει διαγραφές αρχείων, πέρα από εκείνων που βρίσκονται μέσα στο φάκελο που διαχειρίζεται.
Επίθεση που να διαγράφει μόνο το theme δεν έχω ξανακούσει και δεν έχει λογική. Αν είναι επίθεση, τότε έχει πρόσβαση είτε στο FTP account σου είτε στο Plesk account σου που σημαίνει ότι θα μπορούσε να κάνει πάρα πολύ χειρότερα πράγματα.
Χτυπάνε διαβάζω mod sec rules άρα πάει να πει ότι είτε το theme σου είτε κάποιο plugin σου παρουσιάζει προβλήματα. Μου ακούγεται πολύ πιο λογικό είτε το server firewall/antivirus/etc, είτε το WordPress Toolkit (αν το χρησιμοποίησες), είτε κάποιο security plugin να σου σβήνει τα αρχεία παρά οτιδήποτε άλλο.
Έλεγξε στα παραπάνω τα logs και ταυτόχρονα επικοινώνησε με τον developer του theme/plugin που σου προκαλεί τα mod sec rules για να κοιτάξει να τα διορθώσει.
Επίσης, έλεγξε αν το theme είναι αγορασμένο και δεν είναι σπασμένο. Τα σπασμένα themes/plugins πολύ συχνά να ενεργοποιούν το server firewall/antivirus/etc.
Ελπίζω να οδηγηθείς σε κάποια λύση.
Καλημέρα. Ευχαριστώ πολύ για τις συμβουλές, αποδείχθηκαν εξαιρετικά χρήσιμες.
Κοιτάζοντας τα logs, τα security rules που χτυπάνε είναι κυρίως αποτυχημένες προσπάθειες σύνδεσης στο admin (οι οποίες έγιναν με πολλά υπαρκτά και μη usernames) και αρκετές προσπάθειες να ανοίξουν αρχεία που το mod security θεωρεί επικίνδυνα. Δεν είδα να χτυπάει σε κάποιο συγκεκριμένο αρχείο plugin/theme.
Το WordPress Toolkit είναι εγκατεστημένο στον server αλλά δεν βλέπω να έχει ρυθμίσεις για διαχείριση/διαγραφή αρχείων. Επικοινώνησα και με την Plesk μήπως μπορούν να μου πουν κάτι παραπάνω για αυτό.
Καλημέρα. Χαίρομαι που μπόρεσες να βρεις κάποια στοιχεία. 🙂
Το WordPress Toolkit είναι προεγκατεστημένο σε όλους τους cPanel, Plesk κλπ servers. Το θέμα είναι αν του έχεις δώσει διαχείριση επί του site κάνοντας εγκατάσταση το WordPress μέσω εκείνου. Αν το έχεις κάνει, πρέπει να του τα αφαιρέσεις για να είστε σίγουροι ότι εκείνο δεν κάνει τη ζημιά (δυνητικά μπορεί).
Παρόλα αυτά, οι επιθέσεις που αναφέρεις ότι δέχεστε δεν είναι ικανές να σου διαγράψουν τον φάκελο των themes (με ένα καθώς πρέπει server firewall). Μπορούν να κάνουν ζημιά σε άλλα σημεία, όχι όμως και διαγραφή του φακέλου (δεν τους συμφέρει). Ή το firewall δεν κάνει καλά τη δουλειά του, ή κάτι άλλο συμβαίνει σε επίπεδο ασφαλείας. Δείτε αν υπάρχει κάποιος “δούρειος ίππος” (όχι trojan, γενικά το λέω) από κάποιο theme/plugin. Πρόσφατα χακαρίστηκαν πολλά γνωστά plugins οπότε εξετάστε και αυτό το ενδεχόμενο. Εστίασε σε αυτά που έγραψα στην πρώτη απάντηση για να εντοπίσετε την πηγή του προβλήματος.
Αν δεν βγάλεις άκρη, δοκίμασε να αλλάξεις server στο site για να δεις αν και σε άλλο server σου προκαλούνται τα ίδια προβλήματα.
Μετά από αρκετό ψάξιμο, ανακαλύψατε στο log του Litespeed τα εξής περίεργα αποτελέσματα:
1. Αρχικά, χτυπάνε τα mod security rules, ωστόσο τα plugins/themes αυτά δεν υπάρχουν στην εγκατάστασή μας
[1157760] [T0] [ModSecurity] failed to parse a modsec variable. while parsing: IM360 WAF: Possible Authenticated Privilege Escalation and Post deletion in Jupiter Theme <= 6.10.1 and JupiterX Core Plugin <= 2.0.7 for WordPress (CVE-2022-1654)||T:LITESPEED||MV:%{ARGS}||
[1157760] [T0] [ModSecurity] failed to parse a modsec variable. while parsing: IM360 WAF: WordPress WP Private Content Plus plugin – unauthenticated options change (CVE-2019-15816)||T:LITESPEED||REMOTE_ADDR=%{REMOTE_ADDR}||page=%{ARGS.page}||class method=save_%{ARGS.wppcp_tab}[1157760] [T0] [ModSecurity] failed to parse a modsec variable. while parsing: IM360 WAF: WordPress Merge + Minify + Refresh < 1.10.7 Authenticated Arbitrary File Delete||T:LITESPEED||F:%{ARGS.purge}||MVN:%{MATCHED_VAR_NAME}||MV:%{MATCHED_VAR}||
Επίσης, είδαμε ότι ο server έκανε restart μόνος του κάποιες φορές. Στην αρχή το log γράφει Server Restart Request via Signal, στη συνέχεια Forked [1157694] for graceful restart και μετά Apache configuration file has changed, restart gracefully to apply the change.
Καλησπέρα. Η Plesk βοήθησε τελικά;
Για να χτυπάει το mod sec rule για κάποιο plugin/theme σημαίνει ότι αυτό υπάρχει εγκατεστημένο. Να κάνει τόσο λάθος το mod sec είναι κομματάκι δύσκολο. Ενδεχομένως να βλέπετε λάθος logs ή logs που ανήκουν σε άλλον account ή να είναι σπασμένο κάποιο theme/plugin. Αν κάνω λάθος και όντως χωρίς να έχετε κανένα από αυτά τα theme/plugin σάς βγάζει αυτά τα μηνύματα, τότε δείτε με την LiteSpeed ή τον δημιουργό του Firewall τι πάει στραβά.
Όσο για τα restart του LiteSpeed, δεν λένε τίποτα από μόνα τους τα συγκεκριμένα log entries. Θα μπορούσαν να συμβαίνουν υπό πλήρως normal συνθήκες. Αν έχετε γενικότερη υπόνοια ότι κάτι πάει στραβά στον server, πρέπει να εξετάσετε γιατί έγιναν τα restarts.
Πάντως, εξ όσων καταλαβαίνω, το θέμα σας 1) είτε αφορά τον hosting provider σας, 2) είτε κάποιο σπασμένο plugin/theme του WordPress, 3) είτε κάποιο WordPress Firewall σαν τον WordFence. Εάν δεν είναι το 2 ή το 3, από εδώ μέσα δύσκολα να σας δοθεί λύση χωρίς πλήρη εικόνα της εγκατάστασης εκ των έσω. Μπορώ να κάνω εικασίες το τι φταίει αλλά θα μείνουν στο επίπεδο των εικασιών δίχως δεδομένα. Για αυτό καλύτερα ας το ελέγξει ο hosting provider σας. Για εκείνον θα είναι πολύ πολύ πιο ξεκάθαρα τα πράγματα.
Καλημέρα και από εμένα, ειμαι συνάδελφος της dimi993 και δουλεύουμε μαζί στο ίδιο project. Θέλω να συμπληρώσω και εγώ μερικά δεδομένα μπας και βρούμε καμιά άκρη.
Τα logs που διαβάζουμε είναι τα logs του server.
Τα βρήκαμε:
– Στα logs του plesk στο αντιστοιχο subscription (error_log, access_ssl_log).
– Στα logs του server (μέσα από το webmin: /var/logs/secure, /var/www/vhosts/system/sitedomain.gr/logs, /var/logs/httpd/error_log, /var/logs/httpd/access_log)
– Στα logs του litespeed (Τα οποία ταυτίζονται με αυτά του server παραπάνω – οι ίδιες εγγραφές υπάρχουν και στο litespeed και στο server).Πάμε τώρα στα παράδοξα:
– Ενώ χτυπάει το theme Jupiter, δεν υπάρχει στην εγκατάσταση του wordpress (Ψαξαμε όλα τα themes σε όλες τις εγκαταστάσεις στο server, σε διαφορετικά subscriptions υπάρχουν τρεις εγκαταστάσεις. Μόνο το eshop είναι ενεργό οι άλλες δύο είναι δοκιμές πελατών και είναι ανενεργές).
– Τα plugins WordPress Merge + Minify + Refresh, WP Private Content Plus, δεν είναι πουθενα εγκατεστημένα. Τα ψάξαμε στη διαχείριση του wordpress αλλά και στο φάκελο /plugins μπας υπάρχει κάτι που δεν φαίνεται στο backend, αλλά όχι δεν υπάρχει.Συμπληρωματικά:
+ Όλα τα plugins – template του e-shop, όσα χρειάζονταν, είναι αγορασμένα, μπορεί να μην είναι στη τελευταία έκδοση αλλά είναι γνήσια. Το wordfence το βάλαμε μετά το πρόβλημα (την δωρεάν έκδοση) για να scanάρουμε, αλλά δεν βρήκε ευπάθειες.
+ Το eshop είναι σε δικό μας dedicate server, οπότε έχουμε full access παντού.
+ Έχουμε ανοίξει αντίστοιχα tickets σε Litespeed, Plesk, Shoptimizer template και αναμένουμε απαντήσεις.Ερωτήματα:
? Επειδή το e-shop δεν το φτιάξαμε εμείς (Το έφτιαξε άλλος συνάδελφός και μετά το πήραμε εμείς) υπάρχει περίπτωση να τα είχε βάλει αυτός παλιότερα τα plugins που χτυπάνε και να έχει υπολοίματα ακόμα μέσα?
? Επειδή και εμείς δεν πιστευουμε ότι τα logs γράφουν ό,τι να’ ναι, υπάρχει καποιος τρόπος να βρούμε τα paths των plugins που αναφέρονται στα logs?
? Υπάρχει περίπτωση να υπάρχουν αυτά τα plugins ενσωματωμένα μέσα στο template και να μην φαίνονται στις λίστες των plugins (κουλό αλλά μου έχουν τελειώσει οι λογικές σκέψεις)?Δεκτές και οι εικασίες!
Θα σας ενημερώσουμε όταν έχουμε νέα από τα άλλα support tickets.Καλημέρα.
Απαντώ στα ερωτήματα με τη σειρά που τέθηκαν:
- Ναι, βεβαίως και παίζει αυτή η περίπτωση. Το ότι αφαιρώ ένα plugin ή το διαγράφω από τον File Manager δεν σημαίνει ότι διαγράφει και όλα τα υπολείμματα από την βάση.
- Εννοείται πως τα logs βγάζουν μόνο ό,τι βρίσκουν. Τα paths από τα logs και την βάση μόνο (εφόσον δεν υπάρχουν τα themes/plugins).
- Όχι.
Εύχομαι να μην είναι ευθύνεται (πάλι) το Plesk. Δεν το έχω καθόλου σε εκτίμηση και ειλικρινά το έχω δει να προκαλεί προβλήματα εκτός λογικής.
Επίσης, βλέπω από τα logs πιο πάνω, έχετε Imunify360 οπότε με σιγουριά ό,τι βγάζει στα mod sec ισχύουν.
Αν είναι προσβάσιμος ο δημιουργός, ρωτήστε τον τι ακριβώς έκανε. Επειδή δεν υπάρχει μία νόρμα στον κλάδο, ο καθένας προσθέτει την δική του πινελιά σε κάθε κατασκευή επειδή αντιλαμβάνεται διαφορετικά το developing. Χωρίς να λέω το οτιδήποτε αρνητικό για τον άνθρωπο, ίσως να έχει κάνει κάτι που να εξηγεί αυτές τις καταστάσεις.
Προσπαθήστε με τις ομάδες υποστήριξης που ανέφερες να βρείτε από που πηγάζει το πρόβλημα ή να φτάσετε κάπου δια της εις άτοπον απαγωγή.
Σαν φιλική συμβουλή, αν δείτε ότι η κατάσταση ξεφεύγει χρονικά και δεν βρίσκετε λύση, εξετάστε το κατά πόσο σας συμφέρει να το ψάξετε μέχρι τερμάτων.
Καλησπέρα.
Τελικά βρήκατε άκρη με το τι προκαλούσε το θέμα;
Καλησπέρα,
Ευχαριστούμε πολύ για το ενδιαφέρον!Δυστυχώς δεν βγάλαμε άκρη. Ψάξαμε και στο Plesk και σε plugins/themes αλλά τελικά δεν καταφέραμε να βρούμε τι συνέβη, οπότε και είπαμε να μην το ψάξουμε περεταίρω.
Όλος παραδόξως βέβαια, το πρόβλημα δεν έχει εμφανιστεί ξανά (φτου φτου).
Δόξα τω Θεώ να λέμε, το φτου φτου δεν βοηθά 🙂
Μακάρι να μην σας ξαναπροκύψει!
Καλημέρα!
Φαίνεται το ματιάσαμε χθες το site και ξαναέπεσε. Παρόμοιο σκηνικό, απλά εξαφανίστηκαν αρχεία του theme αλλά διαφορετικά από την προηγούμενη φορά.
Τώρα στα error logs, είδαμε τα παρακάτω:
- 2023-09-13 17:09:24.449414 [NOTICE] [2651111] [T4] [185.220.101.10:15646:HTTP2-1#APVH_sitedomain.gr:443:MODSEC] mod_security rule [id “77350212”] at [/etc/httpd/conf/modsecurity.d/rules/custom/007_i360_4_wordpress.conf:2721] triggered!
- [Wed Sep 13 17:09:24.447126 2023] [error] [client 185.220.101.10] ModSecurity: Access denied with code 403, [Rule: ‘REQUEST_FILENAME’ ‘\/[.#]?wp-config[.-][\w._-]*(?:[#~]|(?:inc|txt|tar|xml|zip|bak|old|orig(?:inal)?|save|\d|sw(?:p|o)))$’] [id “77350212”] [msg “IM360 WAF: Information Disclosure Attempt in WordPress||MV:/wp-config.inc||T:LITESPEED||REQUEST_URI:/wp-config.inc||”] [severity “CRITICAL”] [tag “wp_core”] [hostname “sitedomain.gr”] [uri “/wp-config.inc”]
- 2023-09-13 17:09:24.449440 [NOTICE] [2651111] [T4] [185.220.101.10:15646:HTTP2-1#APVH_sitedomain.gr:443] Content len: 0, Request line: ‘GET /wp-config.inc HTTP/1.1’
- 2023-09-13 17:09:24.449445 [INFO] [2651111] [T4] [185.220.101.10:15646:HTTP2-1#APVH_sitedomain.gr:443] Cookie len: 139, mailchimp_landing_site=https%3A%2F%2Fsitedomain.gr%2Fblog%2Fwp-config; pbid=8db2b8ce1cfe4710035e9cf74386e1024f6cbc408729d133a978dfc7616ec1d8
- 2023-09-13 17:09:24.449448 [NOTICE] [2651111] [T4] [185.220.101.10:15646:HTTP2-1#APVH_sitedomain.gr:443] Redirect: #1, URL: /index.php
Τα παραπάνω επαναλαμβάνονται με την ίδια σειρά περίπου κάθε 4 δευτερόλεπτα και κάθε φορά χτυπάνε κάποια παραλλαγή του wp-config.
Αφού σταμάτησαν τα παραπάνω, χτύπησαν αυτά:
- Abort request processing by PID:620613, kill: 1, begin time: 1, sent time: 1, req processed: 0
- Abort request processing by PID:620756, kill: 1, begin time: 1, sent time: 1, req processed: 1
- Abort request processing by PID:620843, kill: 1, begin time: 1, sent time: 1, req processed: 0
- Abort request processing by PID:621281, kill: 1, begin time: 0, sent time: 0, req processed: 0
Ε και μετά βγήκε το γνωστό, αγαπημένο μας σφάλμα ότι δεν μπορεί να βρει το αρχείο kirki-fallback.php στο functions.php (και λογικό βέβαια αφού κάπου σε εκείνο το σημείο διαγράφηκαν αρχεία μέσα από το theme).
Το site έχει τα plugins Mailchimp for WooCommerce και MC4WP: Mailchimp for WordPress για την σύνδεση του Mailchimp. Και τα δύο είναι ενεργά αλλά μόνο το δεύτερο είναι συνδεδεμένο με λογαριασμό. Τώρα περιμένουμε απάντηση και από τους developers των δύο plugins, μήπως κάτι παίζει με τον κώδικά τους ή κάποια ρύθμιση.
Καλημέρα.
Επιθέσεις φαίνεται ότι δέχεστε. Τώρα αν είναι πραγματικές ή αν το modsecurity τις αντιλαμβάνεται ως πραγματικές είναι κάτι που θέλει ψάξιμο.
Δεδομένο πάντως είναι ότι δεν φταίει το WordPress. Είναι ευρύτερο θέμα του hosting.
Από όσα έγραψες μπορώ να απαντήσω μόνο με βάση τα δεδομένα, τα οποία είναι:
- Το log αναφέρει ότι ένας modsec rule με το ID
77350212
που βρίσκεται στο αρχείο/etc/httpd/conf/modsecurity.d/rules/custom/007_i360_4_wordpress.conf
στη γραμμή2721
ενεργοποιήθηκε. - Τι μας λέει το rule που ενεργοποιήθηκε; Ότι παρατηρεί κάποια patterns στο
REQUEST_FILENAME
που μοιάζουν με επιθέσεις-προσπάθειες αλλαγής στοwp-config
. - Μάλιστα βλέπουμε ότι οι προσπάθειες δεν έγινα μόνο στο
wp-config
αλλά και σε παραλλαγές αυτού όπωςwp-config.inc
,wp-config.txt
,wp-config.bak
κλπ. Κοινώς, δεν ήταν τυχαίο. - Μια προσπάθεια πρόσβασης/αλλαγής του
/wp-config.inc
φαίνεται πως έγινε από την185.220.101.10
με hostname berlin01.tor-exit.artikel10.org και ιδιοκτήτη την Zwiebelfreunde e.V. (zwiebelfreunde.de). - Η προσπάθεια έγινε με
GET
και το αίτημα ήταν για το URI/wp-config.inc HTTP/1.1
. - Το Firewall έκοψε την προσπάθεια με error code HTTP
403
, που γενικά μας παραπέμπει σε “Forbidden”. - Κατά τα άλλα, αυτό με το Mailchimp φαίνεται πως είναι cookie από το γεγονός ότι βλέπω
pbid
. - Στο τελευταίο βήμα φαίνεται ότι έγινε redirection του request στο index.php.
Τα παραπάνω δεν λένε πολλά. Θα μπορούσε να είναι μια απλή επίθεση από ένα botακι. Συνηθισμένη φάση.
Όμως! Δεν θα έπρεπε ό,τι request/επίθεση και να γίνεται από έξω να οδηγεί σε διαγραφή έστω και ενός αρχείου, πόσο μάλλον ολόκληρου theme. Υποδεικνύει κενά ασφαλείας. Που είναι αυτά τα κενά; Οπουδήποτε θα μπορούσαν να είναι (εννόω wordpress, server, php, κλπ).
- Το θέμα ‘ΟΙ φάκελος wp-content/themes χάνεται ή αδειάζει’ είναι κλειστό σε νέες απαντήσεις.