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.
Per una panoramica orientata alla diagnosi parti da malware WordPress. Se i segnali sono già confermati, le due pagine operative sono sito WordPress hackerato e rimozione malware WordPress.
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. Guida dettagliata: WordPress redirect spam - cosa fare.
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://example.com/ 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 né 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. Leggi cosa fare nella prima ora per i comandi esatti e l'ordine corretto delle operazioni.
- 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. Il processo completo è in bonifica malware WordPress: il metodo che usiamo davvero. - 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, contattaci o parla con Bob in chat. Il passo successivo naturale è la bonifica malware WordPress: intervento tecnico con root cause verificata, staging e garanzia 30 giorni.
Quanti segnali bastano per confermare una compromissione?
Non esiste una soglia fissa, ma la regola pratica è: un segnale può essere un falso positivo o un errore di configurazione; due segnali correlati (es. redirect + admin sconosciuto) richiedono indagine immediata; tre o più segnali insieme indicano quasi certamente compromissione attiva. La combinazione più pericolosa è redirect condizionale + file PHP in uploads + voci strane nel database: significa accesso profondo e backdoor persistente.
Posso eseguire questi controlli da solo senza SSH?
Molti controlli si fanno anche senza SSH: verifica redirect da mobile, controllo Search Console, ispezione lista utenti da bacheca WordPress, analisi .htaccess tramite File Manager di cPanel, controllo wp-config.php da editor file. I controlli che richiedono SSH (analisi log, find su file modificati, mysqldump) sono più precisi ma non sempre indispensabili per una prima valutazione. Senza SSH hai una visibilità parziale: puoi trovare i sintomi ma non sempre la causa.
Ho trovato un file PHP in wp-content/uploads: è malware?
Quasi certamente sì. La cartella uploads non dovrebbe contenere file PHP eseguibili - è pensata per media e documenti caricati. Un file .php lì è quasi sempre una webshell o un dropper lasciato dall'attaccante. Prima di eliminarlo, copialo in un posto sicuro per analisi (o inviacelo). Poi rimuovilo. Verifica anche che non ci siano altri file simili con find wp-content/uploads -name "*.php" da SSH.
I plugin di sicurezza come Wordfence rilevano tutti questi segnali?
Parzialmente. Wordfence e strumenti simili scansionano pattern di malware noti e modifiche ai file core. Rilevano bene file modificati con signature conosciute e accessi sospetti al login. Non rilevano: redirect condizionali (attivati solo per certi user-agent), inject nel database su tabelle non standard, backdoor con codice offuscato non catalogato, utenti creati con logica custom. Una scansione "tutto verde" non garantisce sito pulito, soprattutto su compromissioni recenti o personalizzate.
Il sito è stato pulito ma i segnali sono tornati: perché?
Il motivo più comune è che la pulizia ha rimosso i sintomi visibili ma non ha chiuso il vettore di ingresso. Se il plugin vulnerabile è ancora installato, se le credenziali FTP rubate non sono state ruotate, o se è rimasta una backdoor in un file non esaminato, l'attaccante rientra e reinstalla tutto. Una bonifica completa deve identificare come è entrato l'attaccante, non solo cosa ha lasciato. Vedi il metodo completo in bonifica malware WordPress.
Scritto dal team WPsec.it
Team WPsec.it
Bonifica malware, hardening, performance e manutenzione WordPress.
Continua a leggere
Articoli correlati.

WordPress hackerato: guida al recupero del sito in 11 fasi
Recuperare un sito WordPress hackerato in 11 fasi: dalla conferma alla bonifica, dalla chiusura del vettore all'hardening finale. Sequenza operativa con comandi e checklist.

Utenti admin sconosciuti WordPress: cosa fare subito
Trovato un admin WordPress che non hai creato? Verifica backdoor, utenti, log e database prima di rimuoverlo in sicurezza.

WordPress reindirizza a siti porno: cosa significa e come fermarlo
Perché un sito WordPress reindirizza verso siti porno, casinò o farmaci, dove si nasconde il redirect, il rischio reputazione e blacklist, e come fermarlo.