Il tuo WordPress è stato hackerato? Redirect a siti spam, popup malevoli, nuovi utenti admin che non hai creato? Segui questo protocollo di bonifica completo per ripulire il sito e prevenire reinfezioni.
Sintomi di un Sito Compromesso
- Redirect automatici a siti di spam/phishing
- Popup pubblicitari non autorizzati
- Nuovi utenti amministratori sconosciuti
- File
.htaccessmodificato con codice strano - Google Search Console segnala “sito compromesso”
- Email spam inviate dal server
- File PHP sconosciuti nella cartella uploads
Step 1: Verifica Checksum dei File Core
Il primo controllo è verificare se i file core di WordPress sono stati modificati:
# Verifica integrità dei file core WordPress
wp core verify-checksums
# Output se compromesso:
# Warning: File doesn't verify against checksum: wp-includes/version.php
# Warning: File doesn't exist: wp-includes/class-wp.php
# Warning: File was added: wp-includes/malware.php
Se vedi “File doesn’t verify” o “File was added”, il core è stato compromesso.
Step 2: Reinstallazione Core Pulita
Scarica e reinstalla tutti i file core WordPress senza toccare wp-content:
# Scarica e sovrascrive SOLO i file core
wp core download --force --skip-content
# Verifica la versione
wp core version
# Rigenera le salt keys (invalida tutte le sessioni attive)
wp config shuffle-salts
Perché --skip-content? Così non tocchiamo plugin, temi e uploads che analizzeremo separatamente.
Step 3: Scansione Malware nei Plugin/Temi
Cerca pattern di codice malevolo comuni:
# Codice offuscato base64
grep -rn "eval(base64_decode" wp-content/
grep -rn "eval(gzinflate" wp-content/
grep -rn "eval(gzuncompress" wp-content/
# Esecuzione dinamica pericolosa
grep -rn "eval(\$_" wp-content/
grep -rn "assert(\$_" wp-content/
grep -rn "preg_replace.*\/e" wp-content/
# Backdoor comuni
grep -rn "file_put_contents.*\$_" wp-content/
grep -rn "\$_POST\[.*\]\s*(" wp-content/
grep -rn "\$_GET\[.*\]\s*(" wp-content/
grep -rn "shell_exec\|passthru\|system\(" wp-content/
File PHP in Uploads (Red Flag!)
Non dovrebbero MAI esserci file PHP nella cartella uploads:
# Trova tutti i file PHP in uploads
find wp-content/uploads -name "*.php" -type f
# Se ne trovi, sono quasi certamente malware
# Elimina dopo aver verificato il contenuto
File Modificati di Recente
# File PHP modificati negli ultimi 7 giorni
find wp-content/ -type f -mtime -7 -name "*.php"
# File PHP modificati nelle ultime 24 ore
find wp-content/ -type f -mtime -1 -name "*.php"
Step 4: Pulizia Database – Utenti Malevoli
Gli hacker spesso creano utenti admin nascosti:
# Lista TUTTI gli amministratori
wp user list --role=administrator --fields=ID,user_login,user_email,user_registered
# Controlla:
# - Utenti che non riconosci
# - Email sospette
# - Data di registrazione strana
# Elimina utenti sospetti (riassegna contenuti all'admin legittimo)
wp user delete SUSPICIOUS_ID --reassign=1
# Cambia password a TUTTI gli admin
wp user update 1 --user_pass="NuovaPasswordMoltoSicura2026!"
Step 5: Pulizia Options e Transients
Malware spesso si nasconde nella tabella wp_options:
# Cerca options con codice sospetto
wp db query "SELECT option_name, LEFT(option_value, 100) FROM wp_options WHERE option_value LIKE '%eval%'"
wp db query "SELECT option_name, LEFT(option_value, 100) FROM wp_options WHERE option_value LIKE '%base64_decode%'"
# Cerca nei widget (spesso target di injection)
wp db query "SELECT option_name, LEFT(option_value, 200) FROM wp_options WHERE option_name LIKE '%widget%'"
# Pulisci transients (spesso usati per persistenza)
wp transient delete --all
Step 6: Pulire .htaccess e wp-config.php
Questi file sono spesso modificati per redirect malevoli:
# Rigenera .htaccess pulito
wp rewrite flush --hard
# Verifica wp-config.php manualmente
head -50 wp-config.php
# Cerca codice PRIMA di <?php (injection comune)
# Cerca require/include sospetti
Template .htaccess Pulito
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
Step 7: Hardening Post-Bonifica
# 1. Aggiorna TUTTO
wp core update
wp plugin update --all
wp theme update --all
# 2. Elimina temi/plugin non usati
wp plugin delete hello
wp theme delete twentytwentytwo twentytwentythree
# 3. Rigenera salt keys
wp config shuffle-salts
# 4. Verifica permessi file
find . -type f -exec chmod 644 {} \;
find . -type d -exec chmod 755 {} \;
chmod 600 wp-config.php
# 5. Disabilita editor file da admin
wp config set DISALLOW_FILE_EDIT true --raw
Checklist Bonifica Completa
□ wp core verify-checksums (identifica file compromessi)
□ wp core download --force --skip-content (reinstalla core)
□ grep malware patterns in wp-content/
□ find PHP in uploads/ (elimina tutti)
□ wp user list --role=administrator (elimina sospetti)
□ Controlla wp_options per codice malevolo
□ Rigenera .htaccess pulito
□ Verifica wp-config.php
□ wp config shuffle-salts
□ Cambia TUTTE le password (WP, FTP, DB, hosting)
□ wp plugin update --all && wp core update
□ Richiedi rimozione blacklist Google
Reinfezione continua? Potrebbe esserci una backdoor che non hai trovato, o il server stesso è compromesso. Contattaci per un security audit completo.