Il tuo sito WordPress carica pagine lentissime, mostra banner strane, o Google lo segnala come "pericoloso". Hai provato plugin di sicurezza, ma nulla è cambiato. Il problema è che senza capire come il malware è entrato, pulire la superficie non serve a nulla. Noi, di Meteora Web, abbiamo ripulito decine di installazioni compromesse dal 2017. In questa guida ti portiamo nel vivo dell'operazione: analisi dell'infezione, rimozione manuale, controllo delle backdoor. Zero teoria accademica. Solo azioni concrete per riprendere il controllo del tuo CMS.
Cosa succede quando un malware infetta WordPress?
Il malware non è un'entità magica. È codice PHP, JavaScript o SQL che modifica file, crea nuovi utenti amministratori, invia spam, ruba dati o esegue attacchi su altri server. La maggior parte delle infezioni parte da: plugin o temi vulnerabili, password deboli, hosting condiviso non isolato. Una volta dentro, il malware si nasconde in posti che un controllo superficiale non vede mai.
I segnali classici che qualcosa non va
Non aspettare che Google ti dica "Questo sito potrebbe essere stato violato". Se noti:
- Picchi di traffico anomali (verso ore notturne)
- File con date di modifica fuori contesto (ad esempio un footer.php modificato alle 3 di notte)
- Richieste HTTP verso IP sconosciuti (usa il report di Wordfence o un log server)
- Nuovi utenti admin che non hai creato tu
allora è ora di agire. Non disinstallare i plugin senza aver fatto un backup forense. Ogni traccia può servire.
Sponsored Protocol
Cosa fare subito: Metti il sito in modalità manutenzione (plugin Maintenance o via .htaccess). Disconnetti tutti gli utenti tranne te. Scarica una copia completa di file e database via FTP e phpMyAdmin. Poi leggi il prossimo blocco.
Come analizzare l'infezione con strumenti gratuiti?
Prima di pulire, dobbiamo capire cosa abbiamo di fronte. Noi partiamo da tre passaggi.
1. Scansione con plugin di sicurezza
Wordfence Security (gratuito) e Sucuri Scanner (gratuito) sono i primi due da eseguire. Ma attenzione: non fidarti al 100%. I malware evoluti sanno camuffarsi da plugin legittimi. La scansione è un punto di partenza, non la verità assoluta.
2. Ricerca manuale di file sospetti
Collegati via SSH o usa il pannello cPanel per navigare nella directory wp-content/. Cerca:
- File PHP con date recenti che non hai caricato tu (es. seo.php, sitemap.php, xmlrpc-fake.php)
- Immagini con estensione .php (es. banner.jpg.php)
- Plugin o temi inattivi che contengono codice ofuscato
# Esempio di comando SSH per trovare file PHP modificati negli ultimi 7 giorni
find /var/www/html -type f -name "*.php" -mtime -7 -ls
3. Analisi del database per utenti e post inaspettati
Molte infezioni aggiungono utenti admin o inseriscono contenuti spam nei post. Esegui queste query su phpMyAdmin:
-- Trova utenti amministratori che non riconosci
SELECT * FROM wp_users WHERE user_login NOT IN ('admin', 'tuo_utente');
-- Trova post con contenuto sospetto (es. link a farmacie online)
SELECT ID, post_title, post_content FROM wp_posts WHERE post_content LIKE '%viagra%' OR post_content LIKE '%casino%';
Cosa fare adesso: Salva l'elenco di file e righe sospette in un file di report. Non cancellare ancora niente. Dovrai verificare se quei file sono backdoor o falsi positivi.
Sponsored Protocol
Come rimuovere manualmente il malware da WordPress?
La rimozione manuale è l'unica strada per avere la certezza di aver pulito. I plugin automatici fanno danni quando non trovano backdoor annidate in file core. Ecco la procedura collaudata.
1. Sostituisci il core di WordPress
Scarica l'ultima versione di WordPress da wordpress.org, decomprimi e sostituisci TUTTI i file della root tranne wp-content e wp-config.php. Non saltare questo passo: molti malware si nascondono nei file di sistema (wp-includes, wp-admin).
# Esempio di comando per sostituire il core via SSH
cd /var/www/html
mv wp-content /tmp/wp-content-backup
mv wp-config.php /tmp/
wget https://wordpress.org/latest.tar.gz
tar -xzf latest.tar.gz
mv wordpress/* .
rm -rf wordpress latest.tar.gz
mv /tmp/wp-content-backup wp-content
mv /tmp/wp-config.php .
2. Pulisci wp-content
All'interno di wp-content, i malware si nascondono soprattutto in uploads/ (file PHP camuffati da immagini), themes/ e plugins/. Elimina plugin e temi che non usi. Per quelli attivi, confronta i file con versioni originali scaricate dai repository ufficiali. Cerca anche un file .htaccess nella cartella uploads: spesso contiene redirect a siti malevoli.
Sponsored Protocol
# Trova file PHP dentro uploads (generalmente vietati)
find wp-content/uploads -type f -name "*.php" -exec rm -fv {} \;
3. Pulisci il database
Rimuovi utenti sospetti, modificane il ruolo se necessario. Pulisci opzioni e post che contengono codice PHP o link malevoli. Attenzione: alcune backdoor sono nascoste in wp_options (ad esempio in 'active_plugins' o 'theme_mods'). Esegui una ricerca testuale di base64_decode, eval, system, exec, base64.
-- Trova opzione con codice malevolo
SELECT option_name, option_value FROM wp_options WHERE option_value LIKE '%base64_decode%' OR option_value LIKE '%eval(%';
Cosa fare adesso: Dopo la pulizia, re-installa tutti i plugin e temi dalle versioni ufficiali. Cambia TUTTE le password (admin, FTP, database). Genera nuovi salt nelle wp-config.php. Abilita logging esteso per monitorare.
Quali backdoor cercare dopo la pulizia principale?
Il peggiore errore è pensare di aver risolto quando una backdoor secondaria è ancora attiva. I malware più furbi creano file con nomi che assomigliano a plugin legittimi (es. woocommerce-helper.php). Ecco le tecniche più comuni.
Backdoor via WP-Cron e uploads
Il malware programma l'esecuzione di uno script periodico via wp-cron. Controlla la tabella wp_options per 'cron' e cerca URL o comandi PHP. Oppure un file .php in uploads/2023/ che viene richiamato da un JS iniettato.
Sponsored Protocol
Backdoor nel database tramite user meta
Il codice malevolo può essere salvato in wp_usermeta sotto un meta_key innocuo come 'session_tokens'. Quando l'admin fa il login, viene eseguito.
-- Cerca in user_meta valori lunghi insoliti
SELECT * FROM wp_usermeta WHERE LENGTH(meta_value) > 1000;
Backdoor via themes/functions.php
Nel file functions.php del tema attivo, potresti trovare una riga come:
add_action('wp_head', function() { eval(base64_decode('...')); });
Non fidarti di temi nulled o scaricati da fonti non ufficiali. Usa solo repository ufficiali o tema child sviluppato da zero.
Cosa fare adesso: Dopo la pulizia, esegui una nuova scansione con Wordfence e un controllo incrociato manuale. Se trovi ancora anomalie, ripeti l'analisi da capo.
Come prevenire una reinfezione dopo la rimozione del malware?
Pulire è faticoso. Farlo due volte è inaccettabile. Ecco le misure che applichiamo a tutti i nostri clienti.
- Aggiornamenti automatici per core, plugin e temi. Configura i .auto-update in functions.php o usa un plugin come Easy Updates Manager.
- Disabilita la modifica dei file dall'admin. Aggiungi a wp-config.php:
define('DISALLOW_FILE_EDIT', true); - Usa un firewall a livello applicativo. Wordfence o Sucuri (a pagamento) bloccano il traffico malevolo prima che arrivi a WordPress.
- HTTPS + HSTS + Content Security Policy. Le intestazioni di sicurezza riducono la superficie d'attacco.
- Backup frequenti e conservazione fuori sito. Noi usiamo UpdraftPlus su Amazon S3 o server separato. Un backup pulito è l'ultima ancora di salvezza.
Azioni immediate: Blocca i login a IP sconosciuti con un plugin di limitazione (Limit Login Attempts Reloaded). Cambia i permessi dei file: cartelle 755, file 644. Assicurati che wp-config.php sia al di fuori della web root (se possibile).
Sponsored Protocol
In sintesi
Rimuovere un malware da WordPress non è impossibile, ma richiede metodo. Ricapitoliamo i passi chiave:
- Isola il sito — metti in manutenzione, disconnetti utenti, fai backup forense.
- Analizza — plugin, ricerca manuale file, query database. Documenta tutto.
- Pulisci — sostituisci core, elimina file PHP sospetti da uploads/themes/plugins, pulisci database.
- Caccia backdoor — wp-cron, user_meta, functions.php, opzioni base64.
- Metti in sicurezza — password, aggiornamenti, firewall, backup, permessi.
Se dopo tutto questo il sito mostra ancora segni di infezione, potrebbe essere necessario un intervento più profondo (analisi dei log di sistema, scansione server lato hosting). In quel caso, parlane con il tuo hosting provider o contatta noi di Meteora Web. Noi lavoriamo su questi casi ogni giorno.
Per approfondire la sicurezza generale di WordPress, leggi la nostra Pillar Guide sulla sicurezza WordPress.