Un sitio tomado no suele quedar desfigurado. La desfiguración es rara porque acaba con el acceso; lo común son páginas de spam, redirecciones que solo se disparan para quien llega desde un buscador, y correo enviado desde tu servidor. A ti, con la sesión abierta y tecleando la dirección directamente, todo te parece bien.
Las señales
- Resultados de búsqueda de tu dominio que tú no escribiste.
- Correo salido de tu servidor que rebota en cantidades que no sabes explicar.
- Un salto de procesador o de tráfico saliente sin salto de visitantes.
- Un visitante que informa de una redirección que tú no consigues reproducir.
- Tu proveedor o un navegador advirtiendo sobre el sitio.
Cuatro órdenes
# 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
Compara contra algo de fiar
Si el código está en git, la respuesta más rápida del mundo es git status en el servidor: todo lo modificado o sin seguimiento que tú no pusiste ahí es tu respuesta en una línea. Para un gestor de contenidos, vuelve a descargar la misma versión y compara con ella los archivos del núcleo.
La base de datos también cuenta
El contenido inyectado vive muchas veces en la base de datos y no en los archivos, y por eso un escaneo de archivos limpio demuestra menos de lo que se cree; consulta Malware en la base de datos, no en los archivos.
