Skip to content

Tutto per WordPress, lo sviluppo web — e non solo

🔐 Come pulire e ripristinare un sito WordPress hackerato: una guida passo passo

🔐 Come pulire e ripristinare un sito WordPress hackerato: una guida passo passo

Ti svegli una mattina e scopri che il tuo sito WordPress si è trasformato in una succursale di un casinò online o è finito silenziosamente nella blacklist di Google. Ti suona familiare? Un attacco informatico distrugge molto più dei semplici file sul server: il traffico crolla a zero, il posizionamento sui motori di ricerca precipita e l'attività si ferma per giorni, a volte settimane.

Il momento peggiore è quando l'assistenza dell'hosting alza le mani: «Anche i backup sono infetti, non possiamo aiutarti». Una storia tipica per migliaia di proprietari di siti, specialmente quelli su piani di hosting condiviso economici.

La buona notizia: anche un sito completamente compromesso può essere ripulito e ripristinato in una serata. Senza un esercito di programmatori o contratti costosi con società di sicurezza. Ti servono sangue freddo, la giusta sequenza di passaggi e capire dove si nasconde il codice malevolo.

💡 Panoramica rapida:

  • Valuta la portata: hai accesso come amministratore, cosa dice l'host, quali file sono coinvolti
  • Contatta il tuo provider di hosting e ottieni un elenco dei file infetti
  • Rimuovi o sostituisci i file compromessi tramite cPanel, FTP o WP-CLI
  • Ripristina una versione pulita del sito da un backup o reinstalla il core
  • Cambia TUTTE le password, le chiavi di sicurezza in wp-config.php e chiudi il punto di ingresso
  • Richiedi la rimozione dalle blacklist di Google e dell'hosting

Step 1: valuta la portata e non farti prendere dal panico

Notifica di attacco hacker dal provider di hosting

Per prima cosa, verifica se il pannello di amministrazione è accessibile. Se wp-admin ti permette di entrare e riesci ad accedere, la situazione è risolvibile, spesso entro un'ora. Se l'accesso è bloccato, dovrai lavorare tramite il pannello di hosting o FTP, ma non è comunque una condanna a morte.

Secondo: non cancellare l'intero sito in preda al panico. Nel 90% dei casi, sono infetti file specifici, non l'intera installazione di WordPress. Vai su Google Search Console, nella scheda Sicurezza, dove troverai gli URL che Google ha segnalato come pericolosi. Questo ti dà una prima idea della portata del problema.

Terzo: contatta subito il tuo host. Non «siamo stati hackerati, aiuto», ma in modo specifico: «Inviatemi un elenco dei file modificati con data e ora e i log delle attività sospette delle ultime 72 ore». L'host ha i log del server, vede le anomalie e può fornire un elenco esatto dei file infetti.

Se l'assistenza sta temporeggiando, scala la richiesta: chiama, scrivi sui social media dell'azienda, apri un altro ticket. La maggior parte degli host prende sul serio le richieste pubbliche, perché il danno reputazionale costa più di un'ora di lavoro di un tecnico.

Step 2: trova e rimuovi i file infetti

Elenco di file PHP infetti da codice malevolo

Una volta ricevuto l'elenco dei file infetti dal tuo host o scoperti tramite uno scanner, procedi con metodo. L'ordine è importante: se salti una backdoor, l'hacker torna entro 24 ore.

Crea una copia completa del sito. Scarica TUTTI i file sul tuo computer locale tramite FTP o SFTP. Anche quelli infetti, perché saranno utili per l'analisi e come assicurazione nel caso qualcosa vada storto.

Reinstalla il core di WordPress. Elimina completamente le cartelle wp-admin e wp-includes, poi scarica un file ZIP aggiornato da wordpress.org ed estrailo sopra i file esistenti. Sostituisci tutto tranne wp-content e wp-config.php. Questo garantisce che i file di sistema siano puliti.

Controlla wp-content. Plugin e temi sono i bersagli principali per gli aggressori. Se un plugin è infetto, elimina completamente la sua cartella e reinstallalo dal repository ufficiale. Se un tema è infetto e stai usando un tema child, molto probabilmente è stato colpito solo il tema parent, quindi reinstallalo.

Cerca firme di codice malevolo. Indicatori classici di shell PHP e backdoor: eval e base64_decode sono i più comuni. Cerca anche gzinflate, str_rot13 e assert. Esegui una ricerca grep su tutti i file .php. Controlla i file nascosti: .htaccess, php.ini e i file .ico con codice PHP all'interno. Gli hacker amano mascherare le backdoor come icone innocue.

Step 3: ripristina il sito da una copia pulita

Se hai un backup ed è pulito, sei fortunato: il ripristino richiede 15-20 minuti. Vai al tuo plugin di backup o al pannello di hosting, seleziona un punto di ripristino PRECEDENTE alla data dell'attacco e avvia il processo. Subito dopo il ripristino, esegui uno scanner di sicurezza: la backdoor potrebbe essere stata installata molto prima dell'attacco attivo.

Nessun backup? Reinstalla WordPress tramite il pannello di amministrazione: «Aggiornamenti» → «Reinstalla». Questo aggiorna il core ma lascia intatti plugin e temi, e dovrai controllarli manualmente come descritto nello step 2.

Dopo il ripristino, assicurati che il sito si carichi e passa immediatamente allo step 4. L'aggressore potrebbe tentare di rientrare attraverso una backdoor rimasta attiva nel giro di poche ore.

Step 4: cambia tutte le credenziali e le chiavi

Interfaccia per generare chiavi di sicurezza in wp-config.php

Prima e più urgente: genera nuove chiavi di sicurezza WordPress. Inseriscile in wp-config.php sostituendo quelle vecchie. Questo disconnette immediatamente TUTTE le sessioni attive, inclusa quella dell'hacker se si trova ancora nel pannello di amministrazione.

Poi, cambia tutto ciò che è in questo elenco senza saltare nulla:

  • Password dell'amministratore WordPress e di tutti gli utenti con il ruolo "amministratore"
  • Password dell'account di hosting: cPanel, ISPmanager o pannello personalizzato
  • Password del database MySQL e aggiornala in wp-config.php
  • Password FTP o SFTP
  • Password dell'account email collegato all'amministrazione del sito
  • Chiavi API: Google Search Console, CDN, servizi email, gateway di pagamento

Controlla la tabella wp_users nel database: ci sono utenti sconosciuti con privilegi di amministratore? Se ne trovi, cancellali immediatamente. Questa è una traccia classica di attacco: l'hacker crea un account nascosto e ci rientra dopo la tua "pulizia".

Step 5: Richiedere la rimozione dalle blacklist

Dopo la pulizia, il sito potrebbe comparire ancora per diversi giorni nelle blacklist di Google Safe Browsing. I browser mostreranno una schermata di avviso rossa anche se il codice malevolo è già stato rimosso. Vai al pannello di sicurezza di Search Console, scheda "Problemi di sicurezza", e clicca su "Richiedi revisione". Google in genere rimuove la segnalazione entro 24-72 ore.

Contemporaneamente, contatta il tuo host: potrebbe aver aggiunto il tuo IP o dominio a una blacklist interna, impedendo il caricamento del sito anche se è pulito. Spiega che la pulizia è stata completata e richiedi la rimozione del blocco.

Dopo che tutte le segnalazioni sono state rimosse, verifica il sito in modalità incognito. Dovrebbe caricarsi senza avvisi di sicurezza. Salva uno screenshot, potrebbe servire se il blocco dovesse ripresentarsi.

Step 6: Chiudere il punto di ingresso e rafforzare la protezione

Diagramma della protezione WordPress dopo ripristino da hack

La pulizia è solo metà dell'opera. Se non chiudi la falla da cui sono entrati, il secondo hack avverrà decine di volte più velocemente del primo. Ora conosci il vettore d'attacco esatto, quindi usa questa conoscenza.

Installa un firewall. Wordfence fornisce un firewall endpoint e uno scanner di firme, e la versione gratuita è sufficiente per la maggior parte dei siti. Solid Security (ex iThemes Security) aggiunge un insieme di regole di hardening: modifica del prefisso del database, disabilitazione dell'editor file nel pannello di amministrazione e autenticazione a due fattori. Configurazione minima: un firewall più uno scanner.

Collega un WAF cloud. Cloudflare con regole WordPress o Sucuri filtrano il traffico prima che raggiunga il server. Dopo un hack, non è un lusso ma una necessità: un WAF cloud blocca le richieste malevole a livello DNS e riduce il carico sul tuo sito.

Imposta il monitoraggio dell'integrità dei file. Wordfence e Solid Security possono avvisarti di qualsiasi modifica ai file PHP. Verrai a sapere di un attacco ripetuto nello stesso minuto, non una settimana dopo quando Google segnala il sito come malevolo.

Rivedi l'elenco dei plugin. Ogni plugin non necessario è un potenziale punto di ingresso. Rimuovi tutto ciò che non usi. Aggiorna quelli rimanenti alle ultime versioni e abilita gli aggiornamenti automatici dove possibile.

Come proteggere WordPress dagli attacchi in futuro

Confronto tra pannelli di controllo hosting per WordPress

La prevenzione costa centinaia di volte meno del ripristino. Ecco cosa devi fare subito, anche se il tuo sito non è ancora stato violato.

Passa a un hosting gestito

Quattro dollari al mese per un piano condiviso sono un prezzo allettante. Ma quando il tuo sito vive sullo stesso server con centinaia di altri, un attacco a uno dei tuoi vicini ti raggiunge quasi certamente. La contaminazione cross-site sugli hosting condivisi non è teoria: secondo Sucuri, circa un terzo dei siti WordPress infetti è ospitato su piattaforme condivise.

L'hosting WordPress gestito (WP Engine, Kinsta, Cloudways) offre un ambiente isolato, backup automatici giornalieri e un team di sicurezza attivo 24 ore su 24. Sì, costa diverse volte di più di un piano condiviso. Ma una settimana di downtime dopo un attacco costa più di un anno di abbonamento a un buon hosting.

Quando scegli un host, verifica tre cose: se il tuo ambiente è isolato dai vicini, se ci sono backup automatici giornalieri e quanto velocemente il supporto risponde agli incidenti di sicurezza. Le risposte a queste domande sono il miglior indicatore per sapere se sopravviverai al prossimo attacco senza perdite.

Mantieni aggiornati core, temi e plugin

Interfaccia aggiornamento plugin nel pannello di amministrazione WordPress

La stragrande maggioranza degli attacchi WordPress andati a buon fine avviene tramite vulnerabilità note in plugin e temi, le stesse che gli sviluppatori hanno già chiuso con delle patch. Gli attaccanti scansionano automaticamente internet alla ricerca di siti con versioni non patchate, spesso entro 48 ore dalla pubblicazione di una CVE.

Gli aggiornamenti automatici per il core di WordPress sono attivi per impostazione predefinita dalla versione 5.5. Per i plugin e i temi dal repository ufficiale di WordPress.org, attiva gli aggiornamenti automatici in modo selettivo, perché è sicuro. I plugin premium dai loro siti vanno aggiornati manualmente, ma almeno una volta a settimana.

E sì, fai un backup prima di ogni aggiornamento importante. Sempre.

Configura il backup

Catalogo temi e plugin su WordPress.org

Senza un backup recente, il ripristino dopo un attacco si trasforma in un controllo manuale di decine di migliaia di file. Con un backup, sono cinque clic e mezz'ora di attesa.

Jetpack VaultPress Backup esegue backup incrementali in tempo reale con archiviazione nel cloud di Automattic. BlogVault è specializzato in WordPress e può ripristinare un sito anche se il pannello di amministrazione non è raggiungibile. BackWPup è un'opzione gratuita con pianificazione e caricamento su Dropbox, S3 o Google Drive.

Lo standard ideale: un backup su cloud più un backup locale che scarichi sul tuo computer una volta a settimana. Il backup su cloud ti salva se l'host si guasta, quello locale ti salva se anche l'account cloud viene compromesso.

Attiva l'autenticazione a due fattori

Una password come admin123 o qwerty è un invito a nozze. Gli attacchi di forza bruta su wp-login.php sono continui, e le password semplici vengono violate in pochi secondi. Genera password di almeno 20 caratteri tramite un password manager (Bitwarden o 1Password), e non usare mai la stessa password su più siti.

L'autenticazione a due fattori tramite Wordfence Login Security o Two Factor chiude quasi completamente il vettore della forza bruta: anche conoscendo la password, un attaccante non può entrare senza il codice TOTP dal tuo telefono.

E cambia l'URL di login standard da /wp-admin e /wp-login.php a uno personalizzato. Non è la soluzione definitiva, ma taglia fuori la stragrande maggioranza dei bot automatici che martellano gli endpoint standard senza guardare.

⁉️🤔 Domande frequenti

Posso ripristinare un sito senza un backup?

Sì, ma il processo è più lungo e complesso. Reinstalla il core di WordPress dal pannello di amministrazione, controlla manualmente ogni plugin e tema alla ricerca di codice malevolo usando firme come eval, base64_decode e gzinflate nei file .php. Cambia tutte le password e le chiavi di sicurezza. I contenuti di solito non vengono toccati: sono nel database, che gli hacker raramente alterano. Una pulizia completa senza backup richiede 2-4 ore a seconda della dimensione del sito.

Come faccio a sapere se il mio sito è stato violato?

Segnali: Google Search Console mostra un avviso di sicurezza, il browser blocca il sito con una schermata rossa, il traffico è crollato, sono comparse pagine estranee nei risultati di ricerca, il pannello di amministrazione non accetta la password corretta, oppure l'host ha inviato una notifica di attività sospetta. Verifica rapida: esegui lo scanner gratuito Sucuri SiteCheck, che in un minuto mostra le infezioni note.

Cosa devo fare se l'host non vuole aiutarmi?

Cambia host. Se il provider non ha fornito una lista dei file infetti e i log del server entro 24 ore dall'incidente, il loro team di sicurezza non esiste o è sovraccarico. Per un sito aziendale, questo non è un partner. Mentre recuperi, acquista un piano minimo di hosting gestito, sposta lì una copia pulita del sito e chiudi il vecchio account.

Il pulsante "Reinstalla" nel pannello di amministrazione è sufficiente?

No. Il pulsante "Reinstalla" nella sezione "Aggiornamenti" sostituisce solo i file del core di WordPress. Non tocca plugin infetti, temi, backdoor nascoste in wp-content o voci malevole in .htaccess. Serve il ciclo completo: scansione, sostituzione dei file infetti, reset di password e chiavi e verifica della presenza di amministratori nascosti nel database.

Vale la pena pagare per una pulizia professionale?

Se il sito genera ricavi e il fermo macchina costa più di qualche centinaio di euro al giorno, sì, ingaggia uno specialista. Sucuri offre pulizie una tantum, ci sono freelance su Codeable e agenzie WordPress specializzate. Per un piccolo blog o una landing page, la guida sopra è sufficiente: la pulizia richiederà una serata e i soldi risparmiati possono essere investiti in un hosting adeguato.

Quanto tempo ci vorrà perché il sito recuperi il posizionamento sui motori di ricerca?

Dopo che Google Search Console rimuove il blocco, il sito viene reindicizzato nel giro di pochi giorni. Il posizionamento non torna immediatamente: gli algoritmi hanno bisogno di tempo per verificare che le pagine siano pulite. In genere, il recupero completo richiede 2-4 settimane. La chiave è chiudere la falla da cui sono entrati, altrimenti la seconda violazione azzererà tutti i progressi.

Sito ripristinato: cosa fare perché la violazione non si ripeta

Una violazione è un campanello d'allarme che mostra dove la tua protezione ha ceduto. Trattala come un audit di sicurezza gratuito: ora conosci l'esatto vettore d'attacco e puoi chiuderlo in modo permanente.

Una checklist rapida per il futuro:

  • Sposta il sito su un hosting gestito con ambiente isolato
  • Imposta backup giornalieri: uno su cloud, uno in locale
  • Installa un firewall e uno scanner, attiva gli aggiornamenti automatici per i plugin dal repository
  • Attiva l'autenticazione a due fattori per tutti gli amministratori
  • Rimuovi plugin e temi inutilizzati

La cosa più pericolosa dopo una violazione è sperare che "non succederà più". Una seconda violazione attraverso la stessa falla accade molto più spesso della prima: la backdoor è già in posizione e l'attaccante conosce l'indirizzo del sito. Completa l'intera checklist fino in fondo, chiudi il punto d'ingresso e dormi sonni tranquilli.