Sito WordPress Hackerato: Guida al Recupero Passo per Passo
Sito WordPress hackerato: il browser mostra un avviso rosso, il tuo dominio rimanda a pagine di scommesse o farmaci, il provider hosting ha bloccato l'account. Ogni minuto che passa, gli utenti vedono il danno e Google indicizza le pagine compromesse. La prima reazione è il panico, e il panico porta a mosse sbagliate che complicano il recupero.
Questa guida è un protocollo di emergenza, non un articolo teorico sulle vulnerabilità di WordPress. Ogni sezione corrisponde a un'azione concreta da eseguire in un ordine preciso. Se salti passaggi o agisci fuori sequenza, rischi di pulire il sito mentre l'attaccante è ancora dentro, o di cancellare dati utili per capire cosa riparare.
Segui gli step nell'ordine indicato. In poche ore puoi avere il sito ripristinato e più sicuro di prima.
Come riconoscere un sito WordPress hackerato
Prima di agire, accertati che si tratti davvero di un hack e non di un errore tecnico o un falso positivo.
Segnali visibili agli utenti: redirect, pagine sconosciute, avvisi browser
I segnali più certi sono quelli che vedono anche i tuoi visitatori:
- Il sito reindirizza automaticamente su siti di scommesse, farmaci o contenuti per adulti
- Il browser mostra un avviso in rosso ("Sito pericoloso", "Deceptive site ahead")
- Compaiono pagine o post che non hai mai creato, spesso con testo in giapponese o cinese (il cosiddetto Japanese keyword hack)
- Il logo o il layout sono stati modificati da qualcuno che non sei tu
- Il sito è completamente offline e restituisce errori 500 anche al tuo accesso
Avvisi tecnici: Google Search Console e notifiche dal provider hosting
Meno visibili all'utente finale, ma ugualmente certi come indicatori:
- Google Search Console mostra avvisi nella sezione "Problemi di sicurezza"
- Il provider hosting ha bloccato l'account con una notifica di malware rilevato
- Ricevi email dal provider con log di attività sospette o avvisi di risorse server abnormi
- Il traffico organico è crollato improvvisamente senza spiegazione nelle ultime 24-48 ore
Se noti almeno uno di questi segnali, procedi. Non perdere tempo a cercare conferme ulteriori: ogni minuto di inattività espone i tuoi utenti e peggiora il posizionamento organico.
I primi 30 minuti: isola il sito ed evita danni ulteriori
Due azioni prioritarie da fare subito, prima di qualsiasi altra cosa.
Attivare la modalità manutenzione WordPress
Se hai ancora accesso alla dashboard, installa un plugin come WP Maintenance Mode: bastano due minuti per mostrare una pagina neutra a tutti i visitatori mentre lavori.
Se non riesci ad accedere alla dashboard, crea un file vuoto chiamato .maintenance nella root del sito via FTP: WordPress lo rileva automaticamente e mostra la pagina di manutenzione. In alternativa, contatta il provider per mettere l'account offline.
Contattare il provider hosting: cosa chiedere e perché
Il tuo provider ha strumenti che tu non hai: log di accesso al server, snapshot pre-hack, firewall lato server. Contattalo subito e chiedi tre cose specifiche:
- I log di accesso delle ultime 48-72 ore (aiutano a capire il timestamp esatto dell'intrusione)
- Se hanno rilevato attività sospette a livello di server o account
- Se possono bloccare temporaneamente gli accessi FTP esterni all'account mentre lavori
Molti provider (SiteGround, Kinsta, WP Engine) offrono assistenza emergenziale per siti compromessi, spesso inclusa nel piano. È un canale da usare: gratuito e potenzialmente in grado di farti risparmiare ore di lavoro.
Cambia tutte le password: hosting, FTP, database e WordPress admin
Con il sito in manutenzione, la priorità assoluta è chiudere tutti i punti di accesso. Se cambi le password in ordine sbagliato, l'attaccante che ha ancora accesso FTP può semplicemente sovrascrivere wp-config.php con le proprie credenziali, annullando il tuo lavoro.
L'ordine corretto: quale credenziale cambiare prima e perché
- Pannello hosting (cPanel, Plesk o il pannello del tuo provider): è l'accesso più privilegiato, va cambiato per primo
- FTP/SFTP: disabilita o rigenera le credenziali FTP esistenti. Se il tuo provider supporta SFTP, passa a quello
- Database MySQL: cambia la password dell'utente del database tramite phpMyAdmin o il pannello hosting, poi aggiorna wp-config.php
- Account admin WordPress: cambia la password di tutti gli account con ruolo Amministratore
- Email associate agli account admin: l'indirizzo email usato per il recupero password è un vettore di re-entry spesso dimenticato. Cambia anche quella password
Dove trovare le credenziali: wp-config.php, cPanel e pannello hosting
Le credenziali del database si trovano in wp-config.php, nella root del sito. Aprilo via FTP o file manager e cerca queste righe:
define('DB_USER', 'nome_utente_db');
define('DB_PASSWORD', 'password_db');
define('DB_HOST', 'localhost');Dopo aver cambiato la password del database in phpMyAdmin, aggiorna questi valori in wp-config.php con le nuove credenziali. Se salti questo passaggio, WordPress non riuscirà più a connettersi al database e vedrai un errore di connessione bianca alla prossima apertura del sito.
Scansione malware: valuta i danni prima di pulire
Con le credenziali cambiate e il sito in manutenzione, hai contenuto il danno. Prima di scegliere come procedere, devi capire l'entità dell'infezione.
Scanner integrati: Wordfence e Sucuri
Wordfence confronta ogni file del tuo sito con i file originali di WordPress, plugin e temi. Qualsiasi differenza viene segnalata come potenziale infezione. La scansione completa dura 10-30 minuti su siti di medie dimensioni e produce un elenco dettagliato dei file sospetti.
Sucuri Security lavora in modo complementare: analizza anche dal lato server, individua backdoor e file nascosti che uno scanner esterno non vede. Usare entrambi non è ridondante: coprono angoli diversi della stessa infezione.
Pochi file sospetti indicano un'infezione puntuale; decine di file modificati segnalano un'infezione sistemica. Questa distinzione determina quale percorso seguire.
Strumenti di scansione esterni: verifica dall'esterno del sito
Gli scanner integrati guardano dall'interno del server. Gli strumenti esterni simulano quello che vede un visitatore, e soprattutto quello che vede Google:
- Google Safe Browsing Transparency Report: verifica se il sito è già stato segnalato da Google come pericoloso (la rimozione dalla blacklist è trattata in una sezione dedicata più avanti in questa guida)
- Sucuri SiteCheck: analisi gratuita che rileva malware, blacklist attive e codice iniettato visibile dall'esterno
Con la valutazione completata, scegli il percorso giusto per la tua situazione: se hai un backup pulito e datato prima dell'hack, usalo (sezione successiva). Se non hai backup utilizzabili, procedi con la pulizia manuale (due sezioni avanti).
Hai un backup pulito? Ripristinalo prima di tutto
Il ripristino da backup è il percorso più rapido e affidabile, a condizione che il backup sia effettivamente pulito, ovvero precedente all'hack. Ripristinare un backup già compromesso è peggio che non ripristinare nulla.
Come verificare che il backup sia precedente all'hack
Prima di avviare qualsiasi ripristino, verifica tre cose:
- Data del backup: deve essere antecedente al primo avviso ricevuto o alla prima anomalia nei log di accesso
- Confronto visivo: apri il backup in un ambiente locale o staging e controlla che le pagine siano quelle originali, senza redirect o contenuto estraneo
- Incrocio con i log: se il provider ti ha fornito i log, cerca il timestamp del primo accesso sospetto. Il backup deve essere precedente a quella data
Se hai dubbi sulla data esatta dell'hack, scegli il backup più vecchio disponibile che sia ancora utilizzabile. Meglio perdere qualche giorno di contenuti che ripristinare un backup già infetto. Per costruire una strategia di backup solida che eviti questo problema in futuro, la guida al backup WordPress completo copre frequenza, storage off-site e strumenti consigliati.
Procedura di ripristino da backup: passi concreti
- Scarica il backup sul tuo computer come copia locale
- Via FTP o file manager, elimina i file presenti nella root (escluso wp-config.php con le credenziali aggiornate)
- Carica i file del backup
- Importa il database pulito tramite phpMyAdmin (Importa > seleziona il file .sql)
- Verifica che wp-config.php abbia le credenziali aggiornate, poi disattiva la manutenzione e testa il sito in incognito
Dopo il ripristino, vai direttamente alla sezione "Reinstalla il core WordPress" per aggiornare tutto prima di rimettere online il sito.
Nessun backup disponibile: pulizia manuale del sito
Se non hai un backup utilizzabile, il recupero richiede più tempo ma è percorribile. Lavori su tre fronti in parallelo: file di sistema, account utenti e database.
File PHP sospetti e .htaccess alterato: dove cercare
Gli attaccanti nascondono i loro file in posizioni specifiche e prevedibili. Concentra la ricerca su:
- wp-content/uploads/: questa cartella non dovrebbe contenere file .php in nessun caso. Se ne trovi, sono quasi certamente malware o backdoor
- .htaccess: aprilo dalla root e confrontalo con il contenuto standard (disponibile su wordpress.org). Qualsiasi aggiunta che non riconosci, specialmente righe con
RewriteRuleverso domini esterni, va rimossa - wp-includes e wp-admin: devono contenere solo i file originali di WordPress. File aggiuntivi con nomi generici come
db-functions.phpowp-feed.phpsono segnali certi di backdoor
Per trovare i file modificati di recente, dal terminale del server o via SSH puoi usare:
find . -name "*.php" -newer wp-config.php -type fElenca tutti i file PHP modificati dopo wp-config.php. Non è un indicatore assoluto, ma aiuta a prioritizzare la ricerca.
Utenti WordPress non autorizzati: come identificarli e rimuoverli
Vai in WordPress > Utenti e cerca account admin che non hai creato. Gli attaccanti lasciano quasi sempre un utente amministratore backdoor per rientrare anche dopo la pulizia dei file.
Segnali da cercare:
- Username generici o casuali (es.
admin2,wp_user123) - Email con domini sconosciuti o temporanei
- Account con ruolo Amministratore che non riconosci
- Data di registrazione corrispondente al periodo dell'hack
Elimina questi account. Prima di farlo, annota l'email e il nome utente: possono aiutarti a tracciare il vettore di ingresso. Se non riesci ad accedere alla dashboard, puoi rimuovere gli utenti non autorizzati direttamente tramite phpMyAdmin nella tabella wp_users.
Database WordPress: trovare e rimuovere codice iniettato
Un sito può sembrare pulito nei file ma continuare a distribuire malware tramite codice iniettato nel database. Apri phpMyAdmin e controlla:
- wp_options: cerca valori anomali nelle chiavi
siteurl,homeeactive_plugins. URL modificati o plugin attivi che non riconosci sono segnali certi - wp_posts: cerca post con titoli in lingue straniere, script JavaScript nascosti nel contenuto o link a domini sconosciuti
- wp_users: verifica che gli account corrispondano a quelli che hai già controllato nella dashboard
Cerca nel database le stringhe base64_decode, eval( e gzinflate. Sono pattern tipici del codice malware iniettato: normalmente non dovresti trovarli in un database WordPress pulito. Usa la funzione di ricerca di phpMyAdmin per scansionare tutte le tabelle in un colpo solo.
Prima di modificare qualsiasi record, esporta un dump completo del database come backup di emergenza.
Reinstalla il core WordPress e aggiorna tutto
Reinstallare solo i file core senza toccare wp-content
Un malinteso comune: la reinstallazione del core WordPress NON cancella contenuti, plugin o temi. Il core include solo i file in wp-admin e wp-includes, più i file PHP nella root. La cartella wp-content non viene toccata.
Il metodo più rapido: dalla dashboard WordPress vai in Dashboard > Aggiornamenti > "Reinstalla versione X.X.X". WordPress scarica i file originali e sovrascrive quelli esistenti, eliminando qualsiasi modifica fatta dall'attaccante ai file core.
In alternativa, scarica il pacchetto da wordpress.org, estrai wp-admin e wp-includes (escluso wp-content e wp-config.php) e caricali via FTP.
Verificare i file modificati di recente con FTP o file manager
Dopo la reinstallazione, nel file manager o via FTP ordina i file per data di modifica e controlla gli ultimi 30-60 giorni. File in wp-content modificati durante il periodo dell'hack e non sovrascritti dalla reinstallazione vanno esaminati o eliminati.
Infine, aggiorna tutto senza eccezioni:
- Tutti i plugin attivi (disinstalla quelli non più mantenuti o non usati)
- Tutti i temi (elimina i temi inattivi: anche disabilitati, possono essere sfruttati se contengono vulnerabilità)
- Il core WordPress all'ultima versione disponibile
Rimozione dalla blacklist Google: recupera la visibilità
Questa sezione è quasi sempre assente nelle guide al recupero WordPress, ma è fondamentale: puoi avere il sito tecnicamente pulito e continuare a perdere traffico perché Google mostra ancora l'avviso di sicurezza a chiunque clicchi sul tuo risultato. Il ripristino tecnico e il ripristino della visibilità sono due operazioni separate.
Verificare lo stato con Google Safe Browsing
Vai al Google Safe Browsing Transparency Report e inserisci l'URL del tuo sito. Se è ancora nella blacklist, vedrai lo stato "Non sicuro" con i dettagli del problema rilevato.
Il Transparency Report si aggiorna ogni 24-72 ore, quindi non usarlo come indicatore in tempo reale dello stato dell'infezione: è uno specchio di ciò che Google ha rilevato nel suo ultimo crawl. Usalo solo per sapere se la rimozione dalla blacklist è ancora in attesa.
Richiedere la revisione in Google Search Console
Entra in Google Search Console, vai in "Sicurezza e azioni manuali" > "Problemi di sicurezza". Trovi qui l'elenco delle URL segnalate da Google come pericolose, con la tipologia di problema rilevato.
Clicca su "Richiedi revisione" e descrivi dettagliatamente cosa hai fatto:
- Quali file sospetti hai rimosso
- Come hai ripristinato o pulito il sito
- Quali misure di sicurezza hai implementato per prevenire recidive
Google raccomanda descrizioni specifiche: una richiesta vaga viene rigettata. Scrivi almeno 2-3 paragrafi con le azioni concrete eseguite. I tempi variano: nella maggior parte dei casi bastano 24-72 ore; per phishing attivo o malware grave possono volerci fino a due settimane. Una richiesta rigettata significa che il sito non è ancora completamente pulito.
Notificare gli utenti: quando è necessario e come farlo
Devi notificare se l'attacco ha esposto dati personali degli utenti registrati: email, indirizzi, dati di pagamento, credenziali memorizzate. Il messaggio deve essere chiaro, senza tecnicismi: cosa è successo, quali dati sono stati potenzialmente esposti e cosa hai fatto per rimediare.
Non devi notificare se l'hack ha riguardato solo i file del sito (redirect automatici, SEO spam, pagine malware) senza accedere al database degli utenti o a credenziali memorizzate. Un sito vetrina senza utenti registrati che reindirizzava a siti di scommesse non richiede notifiche formali.
In caso di dubbio, notifica. Un'email onesta che spiega cosa è successo e cosa hai fatto per risolvere vale molto più del silenzio, sia in termini di fiducia che di gestione del rischio a lungo termine.
Hardening post-recovery: le azioni base per non ricominciare da capo
Il recupero è tecnicamente completato, ma senza intervenire sulle cause, il rischio di una ricaduta è alto. Quattro azioni che puoi completare in meno di un'ora e che chiudono le vulnerabilità più comuni:
- Autenticazione a due fattori (2FA): abilita il 2FA per tutti gli account admin. Wordfence include questa funzione nella versione gratuita. Con il 2FA attivo, le credenziali rubate non bastano più per entrare
- Limitazione tentativi di login: configura il blocco automatico degli IP dopo un certo numero di tentativi falliti, tramite Wordfence o un plugin dedicato
- Backup automatici: imposta un sistema di backup automatico off-site con plugin come UpdraftPlus o BlogVault. Senza backup recenti non puoi fare recovery rapido, come hai appena sperimentato
- Rigenera le chiavi segrete WordPress: aggiorna le AUTH KEYS in wp-config.php usando il generatore ufficiale di chiavi segrete WordPress. Questo invalida tutte le sessioni attive, incluse eventuali sessioni aperte dall'attaccante
Per un hardening completo — firewall applicativo, protezione wp-login.php, file permissions corrette, disabilitazione XML-RPC — la guida dedicata alla sicurezza WordPress copre ogni aspetto in dettaglio.
Conclusione
Hai seguito il protocollo completo: isolato il sito, cambiato tutte le credenziali, valutato i danni con la scansione, ripristinato o pulito manualmente, reinstallato il core, rimosso dalla blacklist Google e notificato gli utenti se necessario. Il sito è di nuovo online su una base pulita.
Il passo successivo è strutturale: imposta il backup automatico se non lo hai già e segui la guida all'hardening WordPress per chiudere le vulnerabilità che hanno reso possibile questo attacco. Un sito hackerato due volte è quasi sempre un sito su cui non si è intervenuti correttamente dopo il primo incidente.