Ripristinare sito WordPress Hackerato e ripulire il sito web

Sia che il vostro sito WordPress sia stato hackerato e stiate controllando i danni, sia che vi stiate preparando al peggio, questo articolo vi guiderà attraverso il processo per ripristinare un sito WordPress hackerato. Il processo è documentato in un formato facile da seguire passo dopo passo per aiutarvi a realizzare quanto segue:

  1. Riprendete il controllo del vostro sito web WordPress
  2. Identificare la probabile fonte dell’infezione
  3. Individuare l’infezione e il codice maligno
  4. Rimuovere eventuali malware, backdoor e web shells
  5. Rimuovete il vostro dominio da qualsiasi elenco di malware, come il database di Google Safe Browsing.
  6. Prevenire una recidiva






ripristinare sito hackerato

Come controllare se il sito WordPress è stato hackerato ?

A volte è abbastanza chiaro quando un sito WordPress è stato violato, ad esempio se il vostro sito web è stato defacciato. In altri casi, potrebbe non essere così chiaro. Prima di intraprendere un processo di pulizia di WordPress, verificate che il vostro sito WordPress sia stato effettivamente violato e che non si tratti di un problema tecnico non correlato.

Leggi l’articolo come verificare se il mio WordPress è stato hackerato per determinare se il vostro sito o blog ha subito un attacco informatico ed è stato hackerato.





Riprendere il controllo di un sito WordPress hackerato

Il recupero del controllo inizia a seconda dell’accesso che si è perso a seguito di un attacco informatico. Ad esempio, una volta ottenuto l’accesso a un server, un hacker può cambiare le credenziali per impedire agli utenti legittimi di accedere al server, oppure può cambiare la password di amministrazione di WordPress per impedire a un amministratore di WordPress di accedere.

Anche se questo dipende molto dalla vostra configurazione, il vostro provider di hosting sarà molto probabilmente in grado di aiutarvi a recuperare l’accesso a un ambiente di hosting condiviso o a un Virtual Private Server (VPS) che gestisce il vostro sito web. Se avete perso l’accesso all’amministrazione di WordPress, seguite la guida ufficiale di WordPress per reimpostare la password di amministrazione.

Eseguire un backup

Anche se disponete di una soluzione di backup di WordPress, eseguite un backup dell’attuale sito web di WordPress. Effettuare un backup di WordPress in questa fase è molto importante per una serie di motivi, tra cui i seguenti.

  • Un backup consente di analizzare l’infezione in una fase successiva,
  • Alcuni provider di hosting possono ricorrere all’eliminazione dei siti web violati come misura precauzionale per evitare che diffondano malware o spam – a seconda del vostro provider di hosting questo può accadere senza preavviso,
  • Se non disponete di una strategia di backup, potreste essere in grado di recuperare parte del contenuto del sito web da questo backup prima che le cose peggiorino.

Inoltre, se state eseguendo WordPress su un Virtual Private Server (VPS), prendete in considerazione l’idea di fare un’istantanea dell’intera macchina virtuale, se possibile (tenete presente che questo è solitamente associato a un costo aggiuntivo). Quando eseguite le istantanee, tenete presente che se state utilizzando volumi esterni per ospitare la vostra installazione di WordPress (ad esempio, uno storage collegato alla rete), dovreste anche fare una copia di tutti i volumi che memorizzano l’installazione principale di WordPress, wp-content, il vostro database MySQL, nonché tutti i log di accesso e di errore del server web.

Ripristino da un backup

Se avete una strategia di backup in atto, è il momento di metterla in pratica. Supponendo che abbiate accesso a un backup recente, il ripristino può essere il modo più veloce per tornare online. Tuttavia, anche se il ripristino da un backup del vostro sito WordPress può rimuovere un’infezione e permettervi di essere nuovamente operativi, non risolve il motivo per cui siete stati hackerati.
Se il vostro sito WordPress è stato violato a causa di una vulnerabilità o di una falla di sicurezza sfruttata, il passo successivo è quello di cercare di capire cosa è successo (se possibile).

Cosa succede se non si dispone di un backup o se non si riesce a ripristinare il backup con successo?

Se non disponete di un backup che potete ripristinare con successo, a seconda della gravità della situazione potreste voler mettere il vostro sito WordPress in modalità di manutenzione per permettervi di lavorare al ripristino del sito, informando al contempo i visitatori che dovrebbero tornare più tardi.

Nel frattempo, continuate a seguire il resto della guida. Mettendo il vostro sito web in modalità di manutenzione, attraverso l’uso della funzione wp_maintenance(), WordPress restituirà un codice di stato HTTP 503.

Uno stato 503 indica a Google e agli altri crawler che qualcosa è andato storto nella pagina e che devono tornare a controllare più tardi.

La risposta HTTP 503 è importante per la SEO, in quanto evita di danneggiare le classifiche di ricerca nel caso in cui il sito web sia temporaneamente inattivo. Per ulteriori informazioni sul codice di stato HTTP 503 e sulla sua importanza per la SEO, consultate l ‘articolo di Yoast sull’argomento.

Identificare come WordPress è stato violato

Una volta ripristinato il sito, la prossima cosa da fare è scoprire il più possibile cosa è successo, ovvero quale punto debole della sicurezza ha sfruttato l’aggressore per accedere alla vostra installazione di WordPress.





Controllo dei registri delle attività, del server web e del server FTP

Se tenete un registro delle attività di WordPress, questo potrebbe essere il punto migliore da cui iniziare l’analisi. Cercate di individuare eventuali comportamenti sospetti. Cercate gli eventi di nuovi utenti creati o di modifiche della password dell’utente. Verificate anche se sono stati modificati file di WordPress, plugin o temi
È inoltre necessario esaminare i file di log del server Web, del server FTP e del sistema operativo alla ricerca di comportamenti insoliti o sospetti. Anche se si tratta di un processo un po’ troppo impegnativo, è bene iniziare a verificare se c’è un traffico strano proveniente da un singolo indirizzo IP. È possibile farlo utilizzando una serie di script di shell e one-liner. Per una visione in tempo reale dei registri del server web, GoAccess potrebbe essere utile.

Plugin e temi WordPress inutilizzati e non aggiornati

Controllate l’elenco dei plugin installati, sia dalla dashboard di WordPress che nella directory /wp-content/plugins/. Vengono utilizzati tutti i plugin di WordPress? Sono tutti aggiornati? Controllate anche i temi e la directory dei temi /wp-content/themes/. Dovrebbe essere installato un solo tema, quello che si sta utilizzando. Se state utilizzando un tema figlio, avrete due directory.

Codice e installazioni di WordPress non utilizzate

Un altro problema comune è rappresentato dal codice inutilizzato: a volte gli sviluppatori e i sysadmin aggiornano i file direttamente sul server e fanno un backup del file originale con un’estensione come . old, . orig o . bak. Gli aggressori approfittano spesso di questa cattiva pratica e gli strumenti per cercare tali file di backup sono ampiamente e prontamente disponibili.

Il modo in cui ciò avviene è che un utente malintenzionato cerchi di accedere a file come index.php.old. Di solito, i file . php sono configurati per essere eseguiti dall’interprete PHP, ma l’aggiunta di un’estensione . old (o di altro tipo) alla fine del file fa sì che il server web serva il file all’utente. Semplicemente riuscendo a indovinare il nome di un file di backup, un aggressore può essere in grado di scaricare il codice sorgente, che può contenere informazioni sensibili, o può fornire all’aggressore suggerimenti su cosa sfruttare.

Un problema simile è la conservazione delle vecchie installazioni di WordPress. Quando i sysadmin ricostruiscono i loro siti web, a volte lasciano copie delle vecchie installazioni di WordPress in una sottodirectory /old/. Queste vecchie installazioni di WordPress sono in genere ancora accessibili su Internet e quindi sono un bersaglio ghiotto per un aggressore che può sfruttare le vulnerabilità note delle vecchie versioni di WordPress e dei suoi plugin.

È consigliabile rimuovere il codice inutilizzato, le installazioni di WordPress, i plugin di WordPress, i temi di WordPress e qualsiasi altro file vecchio o inutilizzato (ricordate che potete sempre ricorrere al vostro backup se avete bisogno di ripristinare qualcosa che avete accidentalmente cancellato). Il vostro sito web deve contenere solo i file necessari. Tutto ciò che è extra o inutilizzato deve essere considerato come un’ulteriore superficie di attacco.

Utenti e ruoli di WordPress

Verificate che tutti gli utenti di WordPress siano utilizzati. Ci sono nuovi utenti sospetti? Verificate che tutti i ruoli siano intatti. Se seguite le linee guida sugli utenti e i ruoli di WordPress, dovreste avere un solo utente con il ruolo di amministratore di WordPress.

Fornitori di hosting condiviso

Se il vostro WordPress è in esecuzione su un provider di hosting WordPress condiviso, la fonte dell’hack potrebbe essere un altro sito web che si trova per caso sullo stesso server del vostro. In questo caso, lo scenario più probabile è che l’attaccante sia riuscito ad aumentare i propri privilegi. Di conseguenza, avrebbe ottenuto l’accesso all’intero server e, di conseguenza, al vostro sito WordPress. Se sospettate che sia avvenuto un attacco di questo tipo, la cosa migliore da fare è contattare immediatamente il vostro provider di hosting, dopo aver eseguito il backup del vostro sito web.

File .htaccess

Anche i file.htaccess (file di configurazione del server HTTP Apache a livello di directory) sono un obiettivo comune per gli hacker. In genere vengono utilizzati per reindirizzare gli utenti ad altri siti web di spam, phishing o comunque dannosi. Controllate tutti i file htaccess sul vostro server, anche quelli non utilizzati da WordPress. Alcuni reindirizzamenti possono essere difficili da individuare.

Prestate particolare attenzione alle configurazioni che reindirizzano le richieste HTTP in base a stringhe specifiche dell’User Agent: gli attaccanti potrebbero prendere di mira dispositivi specifici (ad esempio, gli utenti di dispositivi mobili), o addirittura praticare il black hat SEO configurando il vostro server web in modo che risponda in modo diverso ai crawler dei motori di ricerca.

Se possibile, prendete in considerazione l’adozione di una configurazione globale invece di affidarvi ai file . htaccess all’interno di Apache HTTP Server. I file . htaccess non solo degradano le prestazioni, ma aprono il vostro sito WordPress a una serie di vulnerabilità di sicurezza se un utente malintenzionato è in grado di leggere o, peggio ancora, scrivere il contenuto di questi file. Secondo la documentazione di Apache HTTP Server l’uso dei file .htaccess può essere completamente disabilitato impostando la direttiva AllowOverride su none nel file httpd.conf principale.

Verifica di altri punti di ingresso

Esistono diversi altri punti di accesso su un server Web. Assicuratevi di controllarli tutti, ad esempio i server FTP, SSH, il server web, ecc.

Individuare l’infezione di WordPress e il codice dannoso

Prima di iniziare: Un hack di WordPress comporta in genere l’inserimento di codice in un tema, un plugin o un file centrale di WordPress. Pertanto, per procedere alla pulizia, dovreste essere a vostro agio con la modifica del codice. Se non lo siete, affidatevi a professionisti della sicurezza di WordPress.

Una volta identificato il punto di ingresso degli hacker, in genere è relativamente facile trovare l’infezione. Tuttavia, nel caso in cui non abbiate ancora trovato l’infezione, ci sono diversi metodi che potete utilizzare per trovarla. Eccone alcuni.

Controllo dei file modificati negli ultimi giorni

Idealmente, dovreste utilizzare un plugin per il monitoraggio dei file di WordPress che monitora i file della vostra installazione di WordPress alla ricerca di modifiche e vi avvisa immediatamente. Se non disponete di un plugin di monitoraggio dell’integrità dei file (FIM), dovrete cercare manualmente le modifiche ai file.

Se avete accesso SSH al vostro server, controllate quali file del vostro sito WordPress sono stati modificati di recente. In genere, è consigliabile iniziare a cercare le modifiche apportate negli ultimi cinque giorni dalla scoperta dell’hack, ampliando la ricerca se necessario. A tale scopo, navigate nella directory in cui si trova il vostro sito web WordPress e utilizzate il comando find.

find .mtime -5 –ls

Il comando precedente elenca (-ls) tutti i file che sono stati modificati (.mtime) negli ultimi cinque giorni (-5). Se l’elenco è troppo lungo, si può usare la pagina meno per sfogliare e cercare più facilmente nell’elenco.

find .mtime -5 –ls | less

Se avete aggiornato di recente un plugin o un tema, le modifiche ai file correlati appariranno nei risultati della ricerca. Anche i file di log e di debug vengono aggiornati di frequente e quindi compariranno nei risultati. Di conseguenza, potrebbe essere necessario filtrare i risultati per trovare le modifiche dei file di interesse.

Si noti che i plugin specializzati, come il plugin WordPress File Changes Monitor per WordPress, sono specificamente progettati per eliminare automaticamente questi falsi positivi. Il plugin è stato creato appositamente per WordPress ed è in grado di identificare una modifica di file derivante da un aggiornamento del nucleo di WordPress, di un plugin o di un tema, da un’installazione o da una disinstallazione.

Controllo di tutti i file HTML

In WordPress ci sono pochissimi file HTML e gli hacker amano sfruttarli. Cercate nel vostro sito web tutti i file HTML e analizzatene il contenuto. Assicuratevi che tutti i file HTML presenti sul vostro sito siano legittimi e che sappiate a cosa servono.

Un modo semplice per elencare tutti i file HTML presenti nella directory (e nelle sottodirectory) di WordPress è utilizzare il seguente comando.

find . -type f -name'*.html'

Ricerca del testo dell’infezione

Se il vostro sito web è stato deturpato, o se sul vostro sito web compare del testo come risultato dell’infezione, cercatelo con lo strumento grep. Ad esempio, se è stato visualizzato il testo “hacked by”, spostatevi nella directory principale del sito web ed eseguite il seguente comando.

grep –Ril "hacked by"

Il comando precedente restituirà un elenco di file che includono il contenuto “hacked by”. Una volta ottenuto l’elenco dei file infetti, è possibile analizzare il codice e rimuovere l’infezione.

Cosa significano i comandi grep?

  • -R indica a grep di effettuare una ricerca ricorsiva (ricerca nell’intera struttura delle directory, comprese tutte le sottodirectory e i collegamenti simbolici).
  • -i indica a grep che la ricerca deve essere insensibile alle maiuscole e alle minuscole (cioè che deve ignorare la capitalizzazione del termine di ricerca).
    Questo è molto importante in ambienti Linux/Unix, poiché a differenza di Windows, i file system di Linux sono sensibili alle maiuscole e alle minuscole.
  • -l indica a grep di restituire il nome del file, anziché il suo contenuto. Quando il vostro sito WordPress viene violato, questo è un altro codice dannoso da cercare.

Oltre all’ovvia stringa “hacked by”, di seguito è riportato un elenco di codici e frasi di testo tipicamente utilizzati nei siti WordPress violati. Potete utilizzare lo strumento grep per cercare quanto segue:

NOTA: alcuni di questi codici possono essere utilizzati anche in codici legittimi, quindi analizzate il codice in modo appropriato e capite come viene utilizzato prima di segnalare qualcosa come un’infezione o un hack.

Confrontate i file con un’installazione originale di WordPress

Si tratta di un metodo della vecchia scuola che, sebbene richieda un po’ di tempo, funziona a meraviglia. Confrontate i file del vostro sito web con quelli di un sito web non manomesso. Pertanto, se disponete di una copia di backup del vostro sito web, confrontate il sito manomesso. In caso contrario, installate una nuova copia di WordPress e dei plugin presenti sul sito infetto su un host diverso e confrontateli.

Esistono diversi strumenti per confrontare i file. In questo esempio, utilizziamo uno strumento commerciale chiamato Beyond Compare, anche se esistono diverse alternative gratuite. Di seguito sono riportate alcune schermate di un esempio di confronto.

Quando si confrontano le directory principali di due siti web WordPress, lo strumento evidenzia le differenze nel contenuto del file index.php, i nuovi file . htaccess e wp-config.php e le differenze nelle sottodirectory.

Cosa cercare in un confronto di file di WordPress?

Cercate i file che non fanno parte del nucleo di WordPress. La maggior parte delle infezioni aggiunge file alla radice dell’installazione di WordPress o alla directory wp-content. Se l’hack è dovuto a un plugin vulnerabile, i file del plugin potrebbero essere stati modificati.

Trovare l’infezione automaticamente con un servizio WordPress

Se quanto sopra sembra troppo impegnativo da gestire, non disperate. Esistono diversi servizi e plugin per la sicurezza di WordPress che potete utilizzare per scansionare il vostro sito web alla ricerca di malware e altre infezioni. Noi consigliamo i servizi di sicurezza WordPress di Malcare.

Si noti tuttavia che tali plugin hanno un elenco limitato di firme di malware che cercano. Pertanto, se l’attacco che ha colpito il vostro sito WordPress non è così comune, questi plugin potrebbero non identificare l’infezione. Non è raro che riceva feedback da amministratori di WordPress il cui sito web è stato vittima di un attacco che i plugin malware di WordPress non hanno identificato nulla di sbagliato.

Il punto di partenza è che i controlli di sicurezza efficaci prevedono diversi livelli di difesa e rilevamento. Sebbene l’analisi manuale sia quasi sempre la soluzione migliore, quando è possibile farlo, questi plugin non devono essere sottovalutati: possono ancora essere utilizzati e torneranno utili a un certo punto.

Ripristino di WordPress da un backup

Se avete un backup del vostro sito o blog WordPress, ripristinatelo. È sempre molto più facile che pulire manualmente il codice.

Cambiare tutte le password, eliminare gli utenti non utilizzati e verificare i ruoli degli utenti di WordPress.

Cambiate tutte le password di tutti i vostri utenti e servizi, compresi WordPress, CPanel, MySQL, FTP e il vostro computer personale. Controllate l’elenco degli utenti su FTP, WordPress, MySQL e qualsiasi altro servizio per verificare che tutti gli utenti siano legittimi. Se ci sono utenti che non vengono più utilizzati, cancellateli. Verificate che tutti gli utenti di WordPress abbiano i ruoli e i permessi corretti.

Aggiornamento del nucleo di WordPress, dei plugin, dei temi e di altri software

Assicuratevi di eseguire la versione più aggiornata di tutti i software necessari per il funzionamento del vostro sito WordPress. Questo non si limita solo a WordPress, ma si estende anche a tutti i plugin e ai temi, nonché alle patch del sistema operativo, a PHP, MySQL e al server web (ad esempio Apache HTTP Server o Nginx) e a qualsiasi server FTP in uso.

Rimuovere l’avviso di malware di Google Safe Browsing

Se il vostro sito web è stato negletto da Google Safe Browsing, potete richiedere una revisione della sicurezza per rimuovere l’avviso.

Una volta rimosso l’hack di WordPress…

Congratulazioni, avete recuperato il vostro sito WordPress da un hack. Ora dovete assicurarvi che non accada di nuovo. Ecco alcuni consigli su cosa fare:

  1. Installate un plugin per il registro delle attività di WordPress per tenere traccia di tutto ciò che accade sul vostro sito web WordPress.
  2. Se non disponete di una soluzione di backup, procuratela.
  3. Utilizzate un servizio di scansione della sicurezza di WordPress.
  4. Ruotare le password del database e dell’amministratore e forzare la sicurezza delle password di WordPress.
  5. Mantenete sempre aggiornati WordPress, i plugin di WordPress, i temi e qualsiasi altro software che utilizzate.
  6. Rimuovere tutti i file inutilizzati, come le vecchie installazioni di WordPress, i plugin e i temi di WordPress non utilizzati (compresi i temi predefiniti di WordPress non utilizzati). I componenti e i software inutilizzati aggiungono una superficie di attacco non necessaria e dovrebbero essere rimossi.
  7. Seguite la mia guida su come mettere in sicurezza WordPress per essere sicuri di occuparvi di ogni possibile problema di sicurezza del vostro sito web.