10 segnali che il tuo sito WordPress è compromesso
Una guida operativa per riconoscere precocemente le compromissioni WordPress: redirect, spam SEO, file modificati, utenti admin sospetti, picchi anomali, log che parlano.
I siti WordPress non finiscono compromessi all'improvviso. Quasi sempre ci sono segnali che, presi singolarmente, possono sembrare innocui: un picco di CPU, un redirect strano, un utente che non ricordi di aver creato. Messi insieme, raccontano una storia diversa.
Questo è l'elenco dei segnali che, nella pratica quotidiana, troviamo più spesso quando un sito è già compromesso o sta per esserlo. Non sostituisce un audit, ma se ne riconosci più di uno è un buon momento per fermarsi e analizzare l'ambiente con calma.
1. Redirect verso domini sconosciuti
Il segnale più visibile, e spesso il più segnalato dai clienti. Apri il sito da Chrome o Safari in incognito e ti ritrovi su una pagina di scommesse, farmacia online o app store fasullo. Tipicamente il redirect è condizionato: avviene solo da mobile, o solo se la sorgente è Google, oppure solo per visitatori che non sono mai stati sul sito.
La condizionalità è una scelta deliberata: serve a non farsi notare dall'amministratore, che di solito naviga il sito da desktop, già loggato e con cache locale. Se sospetti un redirect ma non lo riproduci, prova da rete mobile, in incognito, da un User-Agent mobile. Strumenti come curl -A "Mozilla/5.0 ... iPhone" aiutano molto.
2. Spam SEO indicizzato
Cerca su Google site:tuodominio.it e scorri. Vedere risultati su pacchetti di scommesse, repliche di orologi, generici farmaceutici, prestiti online o keyword in giapponese, cinese o russo è un segnale molto netto. Significa che gli attaccanti hanno generato pagine sotto il tuo dominio, le hanno fatte indicizzare, e stanno usando la reputazione SEO del tuo sito per posizionarsi.
Spesso queste pagine vengono pubblicate sotto path improbabili tipo /wp-content/uploads/cache/ o /?page=offers. La rimozione richiede sia di togliere i contenuti sia di chiedere a Google la deindicizzazione tramite Search Console.
3. Utenti admin che non hai creato
Da Bacheca > Utenti, controlla la lista degli amministratori. Se vedi nomi come wpsupport, admin1, developer, seoexpert, wp_user_5742 o stringhe casuali, qualcuno è entrato. Anche un singolo utente con ruolo Editor o Author che non hai creato è un campanello d'allarme: potrebbe essere stato declassato dopo un primo accesso per non sembrare sospetto.
4. File .php in cartelle che non dovrebbero contenerli
WordPress genera molti file PHP, ma pochi finiscono in wp-content/uploads/, wp-content/cache/, o nella root come wp-config-sample.php modificato. File come wp-content/uploads/2024/03/error.php, wp-content/themes/twentytwentyfour/style.php (quando il tema usa style.css), o file con nomi randomici come xz9k4.php sono quasi sempre webshell o backdoor.
Una scansione veloce da SSH:
find wp-content/uploads -type f -name "*.php" 2>/dev/null
find . -type f -name "*.php" -mtime -30 -not -path "./wp-content/cache/*"
Il primo comando elenca file PHP nella cartella uploads (di norma vuota di PHP). Il secondo cerca file PHP modificati negli ultimi 30 giorni.
5. Header HTTP o JavaScript iniettati
A volte la compromissione non aggiunge file: modifica risposte. Controlla gli header con curl -I https://tuodominio.it/ e cerca cose anomale tipo X-Powered-By con valori strani, header X-Affiliate, o Set-Cookie con nomi sospetti.
Sul fronte HTML, ispeziona il sorgente di una pagina e cerca <script> esterni che non riconosci, soprattutto se puntano a domini come *.onclickads.net, *.popcash.net, *.adfly.com, o domini composti da stringhe casuali. Spesso compaiono solo in determinate condizioni e non vengono renderizzati nell'editor.
6. Picchi anomali di CPU, RAM o connessioni
Se il tuo hosting sta segnalando saturazione, query MySQL fuori controllo, lsphp o php-fpm che mangiano CPU, e tu non hai cambiato traffico ne configurazione, il sito potrebbe essere usato per attività che non sono le sue. Le compromissioni più recenti spesso usano i siti come parte di una rete di proxy SEO o come scanner per cercare altri siti vulnerabili.
In top, processi PHP con tempo CPU di ore, oppure connessioni in uscita verso IP stranieri, sono segnali forti. Anche file di log che crescono di centinaia di MB al giorno sono indicativi.
7. Email in uscita che non hai inviato
Se l'hosting limita l'invio di email o ricevi notifiche di abuso da provider come Mailgun, SendGrid, o dal pannello del datacenter, è probabile che il sito stia inviando spam o phishing. La compromissione può sfruttare la funzione mail() di PHP o le credenziali SMTP salvate in WordPress per inviare grandi volumi di email a partire dal tuo dominio.
Effetto collaterale: la reputazione del dominio crolla, le email legittime finiscono in spam, e potrebbero arrivarti blacklist da provider come Spamhaus o Barracuda.
8. File wp-config.php con costanti aggiuntive
Apri wp-config.php e scorrilo riga per riga. Se trovi define() di costanti che non ricordi, eval di stringhe encodate in base64, include di file in cartelle strane, o inclusioni di _O00OO0 e simili, qualcuno ha lasciato persistenza. Queste backdoor sopravvivono alla rimozione di file infetti perché vengono caricate a ogni richiesta.
9. .htaccess modificato con regole sospette
Le compromissioni ad alto traffico spesso usano .htaccess per redirezionare visitatori basandosi su User-Agent, referer o cookie. Cerca regole tipo:
RewriteCond %{HTTP_USER_AGENT} (Googlebot|Bingbot) [NC]
RewriteRule .* http://malicious-domain.tld/ [R,L]
oppure regole che escludono solo gli indirizzi IP del tuo paese, lasciando passare tutto il resto verso un dominio attaccante. Confronta il .htaccess corrente con uno di backup recente: i diff sono molto rivelatori.
10. Voci nel database difficili da spiegare
Spesso la compromissione arriva fino al database. Controlla:
wp_optionsper opzioni con nomi randomici, valori serializzati che includono URL strani, opzioni conautoload = yesmolto pesanti.wp_usersper utenti che non hai creato, anche con ruoli bassi.wp_usermetaper chiavi tiposession_tokensdi utenti inesistenti.- Tabelle aggiuntive con prefisso diverso da
wp_, soprattutto se contengonodataocachecome nome.
Cosa fare se riconosci più di un segnale
Trovare uno di questi segnali può essere un falso positivo. Trovarne due o tre significa quasi sempre compromissione attiva. In quel caso, la sequenza che usiamo nei nostri interventi è:
- Congelare lo stato: backup completo file + database, anche se compromesso. Serve come evidenza forense.
- Limitare l'esposizione: cambiare le password admin, ruotare le chiavi salt in
wp-config.php, sospendere temporaneamente cron e plugin non critici. - Confrontare il core: scaricare la versione di WordPress installata da
wordpress.orge diffare con il sito reale per individuare file modificati o aggiunti. - Pulire iterativamente: rimuovere file chiaramente malevoli, ripulire
wp-config.phpe.htaccess, sostituire core e plugin con versioni pulite. - Cambiare credenziali a valle: non solo admin WP, ma anche FTP, hosting, database, eventuali API. Se le hai usate da una macchina possibilmente compromessa, fai prima una scansione del client.
- Hardening minimo: disabilitare editor, limitare login, applicare 2FA, file permission corretti, scansione vulnerabilità plugin/temi.
- Monitoraggio post-intervento: log di accesso, monitoraggio file, alert su modifiche anomale per almeno 30 giorni.
Quando vale la pena chiamare uno specialista
Se il sito è un asset di business (e-commerce, lead generation, autorità SEO importante), la differenza tra una bonifica fatta in fretta e una fatta bene si vede dopo settimane: una è ridondante e regge, l'altra ti riporta nello stesso problema.
Se hai trovato segnali ma non sei sicuro di cosa fare, scrivici tramite la chat o il form. Bob, il nostro assistente, fa una prima qualifica e ci passa il caso quando serve un intervento concreto.
Scritto dal team WPsec
Team WPsec.it
Bonifica malware, hardening, performance e manutenzione WordPress.
Continua a leggere
Articoli correlati.
Bonifica malware WordPress: il metodo che usiamo davvero
Come affrontiamo concretamente una bonifica WordPress: dall'analisi iniziale al congelamento, dal confronto file alla sostituzione del core, fino al post-intervento. Senza scorciatoie.
Hardening WordPress essenziale: 12 mosse che servono davvero
Le configurazioni di hardening WordPress che, nei nostri interventi reali, riducono di più la superficie d'attacco. Niente lista da 50 punti: quello che usiamo davvero.
Plugin nulled: perché sono il primo vettore di compromissione
I plugin e i temi 'nulled' sono la causa numero uno delle compromissioni WordPress che vediamo in agenzia. Perchè succede, come riconoscerli, perché non li tocchiamo.