Un sito conquistato di solito non viene deturpato. Il deturpamento è raro perché mette fine all'accesso; ciò che è comune sono pagine di spam, reindirizzamenti che scattano solo per chi arriva da un motore di ricerca, e posta spedita dal tuo server. A te, con la sessione aperta e l'indirizzo digitato di persona, sembra tutto a posto.

I segnali

  • Risultati di ricerca sul tuo dominio che non hai scritto tu.
  • Posta partita dal tuo server che rimbalza in quantità che non sai spiegare.
  • Un balzo del processore o del traffico in uscita senza un balzo dei visitatori.
  • Un visitatore che segnala un reindirizzamento che tu non riesci a riprodurre.
  • Il tuo fornitore o un browser che mette in guardia sul sito.

Quattro comandi

# 1. files changed in the last week, ignoring the ones that should change
find /var/www/site -type f -mtime -7 -not -path '*/storage/*' -not -path '*/cache/*' | head -50

# 2. PHP where PHP has no business being
find /var/www/site/uploads /var/www/site/public/img -name '*.php*' 2>/dev/null

# 3. the shapes an injected shell takes
grep -rEl 'eval\(|base64_decode\(|gzinflate\(|assert\(\$' /var/www/site --include='*.php' | head

# 4. logins that succeeded
sudo grep "Accepted" /var/log/auth.log | tail -20

Confronta con qualcosa di affidabile

Se il codice sta in git, la risposta più rapida del mondo è git status sul server: tutto ciò che risulta modificato o non tracciato e che non hai messo tu è la tua risposta in una riga. Per un CMS, riscarica la stessa versione e confrontaci i file del nucleo.

Conta anche il database

Il contenuto iniettato abita spesso nel database anziché nei file, ed è per questo che una scansione pulita dei file dimostra meno di quanto si creda — vedi Malware nel database, non nei file.

Se trovi qualcosa, non cominciare a cancellare. Prendi prima una copia dell'intero sito e dei registri: sono l'unica testimonianza di come siano entrati, e senza di essa chiuderai il fascicolo lasciando la porta aperta. Poi segui Ripulire come si deve un sito violato.