Site icon Ryadel

WordPress: cosa fare in presenza di file sospetti o sconosciuti

Automating Image Optimization in WordPress

Trovare file sconosciuti (specialmente se si tratta di file eseguibili ovvero script PHP e/o file di configurazione, come ad esempio php.ini) all'interno delle cartelle di WordPress può essere un segno di un'infezione malware, di una configurazione anomala, o - più probabilmente - di un attacco di Remote Code Execution (RCE) da parte di un attore malevolo esterno che, con tutta probabilità, è riuscito a trovare il modo di scrivere file arbitrari all’interno delle cartelle del sito.

In questo articolo troverai una sintesi efficace di tutti i principali controlli e azioni da eseguire per verificare se la presenza di file “sospetti” all'interno delle cartelle di WordPress sia un segnale di compromissione del sito.  Lo scopo di questi passaggi è quello di individuare eventuali anomalie, identificare possibili intrusioni e mettere in sicurezza l’installazione di WordPress, prevenendo ulteriori attacchi.

1. Controllare il contenuto dei file php.ini sospetti

Normalmente, WordPress non crea né necessita di file php.ini nelle sue cartelle, quindi è importante indagare immediatamente. La prima cosa da fare è aprire i file e controllare se contengono codice sospetto utilizzando uno dei seguenti comandi:

cat /percorso/del/file/php.ini

oppure

less /percorso/del/file/php.ini

Cose sospette da cercare:

Modifiche ai limiti di upload ed esecuzione PHP, come:

max_execution_time = 10000

memory_limit = 512M

upload_max_filesize = 100M

Questi valori molto elevati possono indicare che qualcuno sta tentando di eseguire script pesanti o di caricare file malevoli.

Strane direttive di inclusione di file PHP, come ad esempio:

auto_prepend_file = "/tmp/malware.php"

Questo potrebbe far eseguire un file PHP malevolo prima di ogni script WordPress.

Funzioni PHP disabilitate o abilitate in modo sospetto, per esempio:

disable_functions = ""

Se la direttiva disable_functions è vuota, significa che tutte le funzioni PHP sono abilitate, lasciando il sito vulnerabile.

2. Controllare dove si trovano i file “sconosciuti”

Se si ha modo di accedere tramite SSH o Terminal, è possibile utilizzare il seguente comando per cercare tutti i file "sospetti" (per ipotesi php.ini, ma vale anche per qualsiasi altro file) all'interno di una installazione di WordPress:

find /percorso/della/cartella/wordpress -type f -name "php.ini"

Se i file php.ini sono presenti in cartelle come:

  • /wp-content/uploads/
  • /wp-content/plugins/
  • /wp-includes/
  • /wp-admin/

Allora è molto probabile che possa trattarsi di file dannosi iniettati da un attacco.

3. Controllare la data di modifica dei file

La maggior parte dei file legittimi dovrebbe avere una data di creazione compatibile con la data di installazione del server o di WordPress. Se i file “sospetti” sono stati recentemente creati e/o modificati, potrebbero essere stati scritti da un attore malevolo (un malware o, più probabilmente, un attacker esterno che sfrutta vulnerabilità di tipo RCE).

E’ possibile utilizzare questo comando per vedere la data di modifica:

ls -lt /percorso/della/cartella/wordpress | grep php.ini

La presenza di modifiche recenti senza che siano stati effettuati aggiornamenti è un ulteriore segno di attività sospetta.

4. Controllare quali file PHP sono stati modificati di recente

Questo comando consente di ricercare in modo semplice ed efficace tutti i file con estensione .php modificati negli ultimi 7 giorni:

find /percorso/della/cartella/wordpress -type f -name "*.php" -mtime -7

La presenza di file PHP con modifiche recenti in cartelle come uploads o wp-includes rende probabile l’ipotesi che possa essere avvenuta un'intrusione o un attacco esterno.

5. Analizzare il sito con un plugin di sicurezza

Se sospetti un'infezione, è consigliabile utilizzare un plugin di sicurezza specifico per WordPress per scansionare il sito alla ricerca di file sospetti:

Plugin consigliati:

  • Wordfence Security : Scansiona il sito e identifica file sospetti.
  • iThemes Security : Aiuta a rafforzare la sicurezza generale.
  • MalCare Security : Scanner avanzato per malware.

Una volta installato il plugin sarà necessario eseguire una scansione, attivabile nella pagina del plugin direttamente dal pannello di amministrazione di WordPress, così da poterne poi analizzare gli esiti per valutare la situazione.

6. Rimuovere i file sospetti

Non appena si ha la conferma che i file “sospetti” non sono legittimi, è fondamentale eliminarli appena possibile dopo aver fatto un backup:

rm /percorso/della/cartella/wordpress/php.ini

7. Proteggere WordPress per il futuro

Dopo aver rimosso eventuali file malevoli è necessario prendere le opportune precauzioni per impedire che la situazione possa verificarsi nuovamente.

Per questo motivo è fortemente raccomandato effettuare le seguenti attività di hardening:

Aggiornare WordPress, plugin e temi (operazione fattibile dal pannello di amministrazione di WordPress).

Impostare i permessi correttamente, eseguendo i seguenti comandi da SSH o finestra terminal:

find . -type d -exec chmod 755 {} \;
find . -type f -exec chmod 644 {} \;
chmod 400 wp-config.php
chmod 444 .htaccess

Disabilitare la modifica di file via backend, verificando la presenza (o inserendo) i seguenti comandi nel file wp-config.php:

define('DISALLOW_FILE_EDIT', true);
define('DISALLOW_FILE_MODS', true);

Bloccare l'esecuzione di PHP in /uploads/ Aggiungi un file .htaccess dentro /wp-content/uploads/ con il seguente contenuto:

<FilesMatch ".(php|php.)$">
    Order Allow,Deny
    Deny from all
</FilesMatch>

Scansionare regolarmente il sito con Wordfence e/o altri plugin di sicurezza.

8. Analizzare i log degli accessi

Uno dei modi più efficaci per capire come e quando il sito è stato compromesso è consultare i log degli accessi del server. Gli access log e gli error log registrano ogni richiesta HTTP fatta al sito, inclusi tentativi di exploit, injection e upload di file malevoli.

Come controllare i log degli accessi

Se hai accesso al server, puoi analizzare i log con questi comandi:

Access log di Apache (se il sito gira su Apache):
tail -f /var/log/apache2/access.log

Error log di Apache:
tail -f /var/log/apache2/error.log

Access log di Nginx:
tail -f /var/log/nginx/access.log

Error log di Nginx:
tail -f /var/log/nginx/error.log

Se l’hosting provider che ospita il sito utilizza un pannello di controllo come cPanel o Plesk, è possibile trovare i log nella sezione "Registri" o "Log del server".

Cosa cercare nei log

Usa grep per filtrare attività sospette, ad esempio:

Cerca richieste a file PHP sospetti:
grep "php" /var/log/apache2/access.log

Se trovi richieste a file PHP in /wp-content/uploads/ o in altre directory insolite, potrebbero essere backdoor caricate dagli hacker.

Cerca richieste POST sospette (possibili tentativi di exploit RCE o upload di malware):
grep "POST" /var/log/apache2/access.log

Un attaccante potrebbe aver sfruttato un plugin vulnerabile per eseguire codice remoto.

Cerca richieste con caratteri strani (tentativi di SQL Injection o RCE):
grep -E '(\?|\&)(cmd|exec|system|passthru|shell_exec|base64_encode|eval)(' /var/log/apache2/access.log

Se trovi URL con funzioni PHP per l'esecuzione di codice (eval(), shell_exec(), base64_decode()), probabilmente il sito è stato bersagliato da un attacco.

Cerca richieste da un IP sospetto:
grep "IP_SOSPETTO" /var/log/apache2/access.log

Se trovi più richieste dallo stesso IP con tentativi di accesso a file PHP strani, bloccalo con:
sudo iptables -A INPUT -s IP_SOSPETTO -j DROP

Bloccare l'accesso agli aggressori

Se individui IP sospetti, è possibile bloccarli direttamente aggiungendo le seguenti righe all’interno del file .htaccess (per Apache):

<RequireAll>
Require all granted
Require not ip 192.168.1.100
Require not ip 203.0.113.45
</RequireAll>

Se invece è utilizzato nginx, è possibile farlo aggiungendo le seguenti righe all’interno del file nginx.conf:

deny 192.168.1.100;
deny 203.0.113.45;

IMPORTANTE: Dopo aver analizzato i log  è opportuno correlare gli accessi sospetti con la data e l'ora della creazione dei file sospetti, per capire esattamente come l'attaccante è entrato.

9. Effettuare Backup regolari

Uno degli aspetti più importanti per proteggere un sito WordPress è mantenere backup regolari dei file e del database. Se il sito viene compromesso, un backup recente consente di ripristinare rapidamente il sito senza perdere dati. È consigliabile impostare backup automatici e periodici, preferibilmente su un server remoto o un servizio cloud.

Plugin consigliati per i backup

  • UpdraftPlus : Uno dei plugin più popolari per il backup automatico. Permette di salvare i backup su servizi cloud come Google Drive, Dropbox, Amazon S3 e FTP.
  • BackupBuddy : Soluzione premium con opzioni avanzate di ripristino e migrazione.
  • WPVivid Backup : Alternativa gratuita con supporto per backup incrementali.
  • Jetpack Backup : Backup in tempo reale con ripristino rapido, ideale per siti eCommerce o con contenuti dinamici.

Backup manuale da terminale

Se si preferisce eseguire il backup manualmente, è possibile farlo con i seguenti comandi:

Backup dei file WordPress:

tar -czvf backup-wordpress.tar.gz /percorso/della/cartella/wordpress

Backup del database MySQL:

mysqldump -u utente -p nome_database > backup-db.sql

Ripristino del database in caso di emergenza:

mysql -u utente -p nome_database < backup-db.sql

IMPORTANTE: è consigliabile conservare almeno 3 versioni di backup in luoghi diversi, in modo da poter ripristinare una copia funzionante in caso di attacco o errore umano.

Conclusioni

La sicurezza di un sito WordPress non è mai da sottovalutare. La presenza di file sospetti in posizioni insolite può essere un chiaro segnale di una compromissione del sistema, spesso dovuta a vulnerabilità sfruttate da attaccanti tramite tecniche di Remote Code Execution (RCE), SQL Injection o exploit di plugin non aggiornati.

Attraverso l’analisi dei log degli accessi, il controllo delle date di modifica dei file, e la verifica dei permessi di sistema, è possibile identificare l’origine dell’attacco e bloccare ulteriori intrusioni. La rimozione dei file malevoli deve essere accompagnata da una revisione completa delle misure di sicurezza, tra cui:

  • Aggiornamenti regolari di WordPress, plugin e temi
  • Limitazione dei permessi di file e cartelle per ridurre la superficie d’attacco
  • Blocco dell’esecuzione di PHP nelle directory sensibili, come /uploads/
  • Monitoraggio continuo con strumenti come Wordfence, iThemes Security e scanner di malware
  • Backup regolari con plugin affidabili come UpdraftPlus, per garantire un rapido ripristino in caso di necessità

Nel momento in cui vengono individuati file sospetti o altri file sconosciuti nel tuo sito, è fondamentale agire rapidamente: più tempo gli attaccanti hanno a disposizione, più danni possono causare. Seguendo questa guida, sarà possibile rilevare e mitigare le minacce, proteggendo la propria installazione WordPress e mantenendo il sito sicuro e operativo.

Exit mobile version