Tieni a portata di mano gli accessi: pannello dell'hosting, FTP o SFTP, database (phpMyAdmin) e amministrazione di WordPress; su un VPS anche SSH. Procurateli prima di iniziare, per non doverti fermare a metà intervento: l'elenco completo è nella sezione cosa ci serve.

Scoprire che il proprio sito WordPress è stato hackerato è tra le esperienze più stressanti per chi gestisce un'attività online: Google mostra un avviso "Sito ingannevole", compaiono pagine e utenti che non hai creato, il sito porta i visitatori verso pagine sconosciute, oppure semplicemente qualcosa non torna e non sai bene cosa. La cosa più importante è non farsi prendere dal panico: nella maggior parte dei casi il sito si può ripulire e recuperare, a patto di seguire i passaggi giusti nell'ordine giusto. In questa guida vediamo come riconoscere i segnali di un attacco, cosa fare nelle prime ore, come ripulire file e database passo per passo, come chiudere la falla anche sul server e come tornare puliti su Google. In fondo trovi cosa ci serve per occuparcene noi, con un modulo per chiederci aiuto.

In breve

  • I segnali più comuni sono avvisi di Google o del browser, pagine spam, utenti che non hai creato e redirect verso altri siti.
  • Prima di toccare qualcosa salva una copia del sito com'è: serve a capire da dove sono entrati.
  • La pulizia va fatta ovunque: file di WordPress, temi, plugin, caricamenti e database.
  • Un backup pulito è la strada più veloce, ma solo se poi chiudi la falla aggiornando tutto.
  • Su un VPS va messo in sicurezza anche il server, non solo WordPress.
  • Dopo la pulizia si chiede la revisione a Google e si fanno sparire le pagine spam dai risultati.
Ogni ora che passa il danno all'immagine cresce

Interveniamo da remoto o a Roma su siti WordPress compromessi: individuiamo la falla, ripuliamo il sito e lo mettiamo in sicurezza, di solito entro 24 ore.

Richiedi un intervento rapido

I segnali di un sito compromesso

Non tutti gli attacchi sono evidenti: alcuni si nascondono per settimane prima di essere notati. Ecco i segnali più comuni a cui prestare attenzione.

  • Il sito reindirizza automaticamente verso pagine sconosciute, spesso siti di scommesse, farmacie online o contenuti spam.
  • Il browser mostra un avviso tipo "Sito ingannevole" o "Questo sito potrebbe danneggiare il computer".
  • Google Search Console segnala "Problemi di sicurezza" o il sito sparisce dai risultati di ricerca.
  • Su Google compaiono pagine che non hai mai scritto, spesso in giapponese o piene di parole come casinò, prestiti e farmaci.
  • Compaiono nuovi utenti amministratori che non hai creato tu, o articoli/pagine pubblicati senza il tuo intervento.
  • L'hosting disattiva il sito per attività sospette, come invio massivo di spam o traffico anomalo verso altri server.

Molti attacchi, poi, si nascondono proprio a chi gestisce il sito: il redirect scatta solo da cellulare, solo per chi arriva da Google o solo alla prima visita. Se il sintomo principale è questo, parti dalla guida su il sito WordPress che reindirizza ad altro sito: spiega come vedere il redirect con i tuoi occhi e dove cercarne la causa.

I primi passaggi da fare subito

  1. Metti il sito in manutenzione o offline temporaneamente, se il pannello di hosting lo permette, per limitare i danni ai visitatori e alla reputazione.
  2. Salva una copia del sito così com'è, file e database, e tienila lontana dai backup buoni: servirà a capire da dove sono entrati e a recuperare un file se durante la pulizia si cancella troppo.
  3. Cambia tutte le password: WordPress, FTP, hosting, database, e i secret key nel file wp-config.php (puoi generarne di nuovi dal generatore ufficiale WordPress e sostituirli).
  4. Documenta cosa vedi: quando hai notato il problema, cosa mostra esattamente il redirect, se hai installato plugin o modificato temi di recente. Ti servirà per la diagnosi.
  5. Avvisa il tuo hosting: potrebbero avere già rilevato il problema o offrire strumenti di scansione integrati nel piano.

Trovare e rimuovere il codice malevolo

È la parte più tecnica del lavoro. Un plugin di sicurezza con la scansione dei file, o uno scanner esterno che guarda il sito come farebbe un visitatore, aiuta a capire dove si trova l'infezione. Chi attacca però lascia quasi sempre più di una porta aperta, quindi conviene ripassare tutto con ordine, nei cinque punti che seguono. Se il tuo hosting offre WP-CLI, la riga di comando di WordPress, molti controlli richiedono un comando solo.

Rimetti i file originali di WordPress

Scarica da wordpress.org la stessa versione che hai installata e sostituisci tutto tranne la cartella wp-content e i file wp-config.php e .htaccess, che vanno controllati a mano. Con WP-CLI il primo comando elenca i file di WordPress modificati o in più, il secondo riscarica quelli originali senza toccare temi, plugin e caricamenti:

wp core verify-checksums
wp core download --version=$(wp core version) --skip-content --force

Il secondo comando sovrascrive i file, ma non cancella quelli aggiunti da chi è entrato: i file che il primo segnala come estranei dentro wp-admin e wp-includes vanno eliminati a mano.

Controlla temi e plugin

Ogni tema e ogni plugin va confrontato con la sua copia originale. Per quelli presi da wordpress.org basta wp plugin verify-checksums --all; quelli a pagamento si riscaricano dal sito del produttore e si sostituiscono. I temi e i plugin nulled, cioè copie pirata di prodotti a pagamento, sono tra le porte d'ingresso più frequenti: non si ripuliscono, si eliminano.

Cerca file PHP dove non dovrebbero esserci

La cartella dei caricamenti dovrebbe contenere immagini e documenti, non codice: a parte qualche index.php vuoto creato da alcuni plugin, un file PHP lì dentro è quasi sempre una porta di servizio lasciata da chi è entrato. Guarda anche wp-content/mu-plugins, dove i plugin si attivano da soli, e i file PHP modificati negli ultimi giorni:

find wp-content/uploads -name "*.php"
find wp-content/mu-plugins -type f
find . -name "*.php" -mtime -10

Funzioni come eval, base64_decode o gzinflate in un file del tema sono un campanello d'allarme, ma le usano anche plugin legittimi: ogni risultato va aperto e letto, non cancellato a occhi chiusi.

Pulisci il database

L'infezione spesso vive anche nel database. Da phpMyAdmin, oppure con WP-CLI, controlla quattro cose:

  • gli amministratori: un utente che non riconosci va eliminato, insieme a quello che ha pubblicato (wp user list --role=administrator);
  • gli indirizzi del sito: le opzioni siteurl e home devono contenere il tuo dominio e nessun altro (wp option get siteurl e wp option get home);
  • gli script iniettati in articoli, pagine e widget: cerca il dominio verso cui porta il redirect, o pezzi come <script, e guarda ogni risultato (wp db search "dominio-sospetto");
  • le operazioni pianificate: un evento che non riconosci può reinfettare il sito ogni ora (wp cron event list).

Il prefisso delle tabelle non è sempre wp_: quello del tuo sito è scritto in wp-config.php, alla voce $table_prefix.

Controlla .htaccess e wp-config.php

.htaccess è il posto preferito per i redirect, perché lavora prima ancora di WordPress. Se non sei sicuro di cosa contiene, rinominalo e salva di nuovo i permalink da Impostazioni > Permalink: WordPress ne scrive uno pulito, e le regole messe da te o dall'hosting, per esempio quelle per HTTPS, si rimettono dopo averle riconosciute. In wp-config.php cerca righe che includono file sconosciuti o blocchi di codice illeggibile, e nella cartella del sito controlla che non ci sia un file .user.ini o php.ini creato da altri: con la direttiva auto_prepend_file fa eseguire codice prima di ogni pagina.

Ripristinare da un backup pulito

Se disponi di un backup completo (file e database) datato prima della comparsa dei sintomi, ripristinarlo è quasi sempre la via più rapida e sicura per ripartire da una base pulita, evitando di dover cercare manualmente ogni singola riga di codice infetta. Attenzione però: ripristinare un backup senza chiudere la falla che ha permesso l'attacco (ad esempio un plugin non aggiornato) espone il sito a essere ri-infettato nello stesso identico modo, magari nel giro di pochi giorni.

Per scegliere quale copia usare, risali alla data del primo sintomo: l'avviso in Search Console, il primo file modificato, il primo utente sconosciuto. E prima di dare il backup per perso chiedi al supporto dell'hosting: molti conservano copie giornaliere per qualche settimana anche se non le hai mai attivate tu. Dopo il ripristino cambia di nuovo le password e aggiorna tutto prima di riaprire il sito al pubblico.

Mettere in sicurezza il sito

Una volta ripulito il sito, questi passaggi riducono drasticamente il rischio che l'attacco si ripeta.

  • Aggiorna WordPress, tutti i temi e tutti i plugin all'ultima versione disponibile: le versioni datate sono il punto d'ingresso più comune.
  • Rimuovi plugin e temi non utilizzati, anche se disattivati: restano comunque un potenziale punto debole finché sono installati.
  • Attiva l'autenticazione a due fattori per tutti gli account amministratore.
  • Installa un plugin di sicurezza con firewall applicativo e scansioni programmate, per essere avvisato tempestivamente in futuro.
  • Togli la possibilità di modificare i file dalla bacheca, aggiungendo a wp-config.php la riga define( 'DISALLOW_FILE_EDIT', true );.
  • Tieni backup automatici fuori dal server, in un posto che un attacco al sito non può raggiungere.

Se il sito è su un VPS, la sicurezza non si ferma a WordPress: va protetto anche il server. Più sotto trovi cosa facciamo sul VPS e con quali comandi; per il firewall e gli attacchi al login c'è anche la guida al firewall su VPS contro il brute force.

Recuperare il sito su Google dopo l'attacco

Ripulire il sito non basta: va ripulita anche la sua immagine su Google. Se il sito è stato segnalato, l'avviso non sparisce da solo. In Google Search Console, alla voce Problemi di sicurezza, controlla che i problemi elencati siano risolti e invia la richiesta di revisione, spiegando cosa hai fatto. Di solito la risposta arriva in qualche giorno, a volte servono una o due settimane: nel frattempo non inviare altre richieste.

Restano poi le tracce che l'attacco lascia nei risultati di ricerca:

  • Pagine spam indicizzate: dopo la pulizia devono rispondere con un errore 404 o 410, così Google le toglie dall'indice. Per quelle più imbarazzanti c'è lo strumento Rimozioni, che le nasconde subito, ma solo per un periodo limitato.
  • Proprietari sconosciuti: chi entra in un sito a volte si aggiunge come proprietario in Search Console, per gestire le sue pagine spam. In Impostazioni > Utenti e autorizzazioni togli chi non conosci, e cancella dal sito il suo file o tag di verifica, altrimenti può tornare.
  • Sitemap: controlla che quelle inviate siano solo le tue e invia di nuovo la sitemap del sito pulito.

Per tutti i passaggi della revisione, e per le altre blacklist da controllare oltre a quella di Google, c'è la guida su come rimuovere il sito dalla blacklist di Google.

Risolvere i problemi più comuni

1

Non ho un backup pulito da cui ripartire

Il più complesso

Dovrai procedere con la pulizia manuale descritta sopra, nell'ordine: file di WordPress, temi e plugin, cartella dei caricamenti, database, .htaccess e wp-config.php. È più lunga, ma quando non c'è una copia di cui fidarsi è l'unica strada sicura.

2

Il redirect scompare se sono loggato come amministratore

Molti codici malevoli si spengono per chi è collegato a WordPress, così il proprietario non si accorge di niente. Apri il sito da una finestra anonima o da un telefono con la connessione dati, cercandolo su Google, e segui la guida al sito che reindirizza ad altro sito per trovare la regola che lo provoca.

3

Il sito torna infetto poco dopo la pulizia

Significa che la falla originale non è stata chiusa: verifica di aver aggiornato davvero tutto, controlla che non ci siano più utenti amministratori sconosciuti, e cambia nuovamente tutte le password, incluse quelle del database. Su un VPS guarda anche le operazioni pianificate del server e gli altri siti ospitati: un sito dimenticato può reinfettare quelli già puliti.

4

Non riesco più a entrare in WordPress

Spesso chi entra cambia la password o l'email dell'amministratore. Puoi riprendere l'accesso dallo strumento per WordPress del pannello di hosting, se c'è, oppure cambiando la password direttamente nel database con phpMyAdmin. Appena rientri, controlla l'elenco degli amministratori.

Non affidarti solo a strumenti automaticiGli scanner sono un ottimo primo aiuto, ma un attacco sofisticato può nascondere codice che i controlli automatici non individuano. Se hai dubbi dopo la pulizia, una verifica manuale da parte di un tecnico riduce il rischio di una recidiva.

Recupero del sito hackerato: ci pensiamo noi

Se non te la senti di mettere mano a file e database, puoi affidarci il sito. Lavoriamo da remoto in tutta Italia, o di persona a Roma: di solito il sito torna pulito entro 24 ore da quando abbiamo gli accessi, e a lavoro finito ti lasciamo un resoconto di cosa abbiamo trovato e di cosa abbiamo fatto.

1
DiagnosiCapiamo che attacco è, da dove sono entrati e se riguarda solo il sito o anche il server.
2
PuliziaSalviamo una copia, poi ripuliamo file, database e utenti, o ripartiamo da un backup sicuro.
3
Chiusura della fallaAggiornamenti, password nuove e accessi protetti; sul VPS anche l'hardening del server.
4
Google e controlliChiediamo la revisione, togliamo le pagine spam e ricontrolliamo il sito nei giorni dopo.

Cosa ci serve da te

Dipende da dove si trova il sito. Se non sai rispondere a tutto non c'è problema: lo scopriamo insieme al primo contatto.

Sito su hosting condiviso

  • accesso al pannello dell'hosting (cPanel, Plesk o il pannello del tuo provider);
  • un accesso FTP o SFTP ai file del sito, se il pannello non c'è;
  • accesso al database con phpMyAdmin, di solito dal pannello stesso;
  • un amministratore di WordPress, se riesci ancora a entrare;
  • il pannello del dominio e dei DNS, per controllare che non li abbiano cambiati;
  • accesso a Google Search Console, aggiungendoci come utente, se il sito è segnalato.

Sito su VPS o server dedicato

  • accesso SSH con un utente amministratore (sudo) o root, meglio con la nostra chiave che con una password;
  • accesso al pannello del provider, per fare uno snapshot prima di iniziare e usare la console d'emergenza;
  • le credenziali del pannello di gestione, se ne usi uno (Plesk, cPanel/WHM o simili);
  • l'elenco degli altri siti sul server: un'infezione passa facilmente dall'uno all'altro;
  • dominio, DNS e Search Console, come per l'hosting condiviso.

Utili anche l'ultimo backup che hai, con la sua data, e due righe su cosa hai notato e da quando.

Come darci gli accessi in sicurezza

Le password non si mandano per emailNon scrivere password nel modulo, nelle email o nei messaggi. Dove si può, crea accessi temporanei e separati: un amministratore WordPress solo per noi, un account FTP limitato alla cartella del sito, un utente del pannello con permessi ridotti. Sul VPS aggiungi la nostra chiave SSH pubblica, così la password di root resta tua. Per le credenziali che non si possono evitare ti indichiamo un canale sicuro, e a lavoro finito eliminiamo insieme gli accessi temporanei e cambi le password principali.

Sul VPS facciamo anche l'hardening del server

Quando il sito gira su un VPS, ripulire WordPress non basta: se il server resta aperto, chi è entrato una volta può tornare. Per questo, con il tuo consenso, lo mettiamo in sicurezza dalla riga di comando:

  • aggiornamenti del sistema e aggiornamenti di sicurezza automatici;
  • SSH solo con chiave, accesso con password disattivato e root senza password;
  • firewall che lascia aperte solo le porte che servono: SSH, 80 e 443;
  • Fail2ban, che blocca chi sbaglia l'accesso più volte, anche sul login di WordPress con un filtro dedicato;
  • permessi corretti su file e cartelle e PHP disattivato nella cartella dei caricamenti;
  • PHP e database aggiornati, backup automatici fuori dal server e uno snapshot prima di ogni intervento.

Per darti un'idea, ecco alcuni dei comandi che usiamo su Ubuntu e Debian:

# aggiornamenti e pacchetti di sicurezza
sudo apt update && sudo apt full-upgrade -y
sudo apt install -y unattended-upgrades fail2ban ufw
sudo dpkg-reconfigure -plow unattended-upgrades

# firewall: aperte solo SSH, HTTP e HTTPS
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow OpenSSH
sudo ufw allow 80,443/tcp
sudo ufw enable

# SSH solo con chiave, in /etc/ssh/sshd_config:
#   PasswordAuthentication no
#   PermitRootLogin prohibit-password
sudo sshd -t && sudo systemctl restart ssh

Prima la chiave, poi il bloccoDisattivare l'accesso con password prima di aver provato quello con la chiave è il modo più rapido per chiudersi fuori dal proprio server. Se lo fai da solo, tieni aperta una seconda sessione SSH finché non hai verificato che il nuovo accesso funziona. Su alcune distribuzioni il servizio si chiama sshd invece di ssh.

Richiedi il recupero del sito

Raccontaci cosa succede: ti rispondiamo con i prossimi passi e con le istruzioni per darci gli accessi in sicurezza. Se è urgente, scrivici anche su WhatsApp.

Cosa succede

Non inserire password: per gli accessi ti contattiamo noi.

Conclusioni

Un sito WordPress hackerato fa paura, ma quasi sempre si recupera, a patto di seguire un ordine: mettere al sicuro gli accessi e salvare una copia, ripulire file e database o ripartire da un backup pulito, chiudere la falla aggiornando tutto e, sui VPS, proteggendo anche il server. Poi si sistema Google, con la revisione e le pagine spam da far sparire. Il passaggio che si salta più spesso è proprio la chiusura della falla, ed è quello che riporta l'infezione dopo poche settimane.

Hai paura di peggiorare la situazione intervenendo da solo?

Lascia fare a noi: ripristino e messa in sicurezza del tuo sito WordPress, da remoto in tutta Italia o di persona a Roma.

Richiedi assistenza ora
WordPress Sicurezza Hacking Malware VPS