Escaneando la Base de Datos en busca de Datos Maliciosos
Después de que el sitio de un amigo fue hackeado, le dije que debería limpiar todo el desorden y comenzar desde cero para asegurarse de que ningún archivo haya sido alterado.
Podría escanear el sitio por él con herramientas como grep y similares (Para empezar: Grep y sus Amigos) pero lo que me preguntaba es, ¿cómo escanear la base de datos? ¿Qué pasa si algún hacker ha colocado payload dentro de la base de datos? Puede ser algo simple como XSS o incluso código PHP en caso de que todavía haya algún eval en el core (o lo hubiera en el momento del hackeo).
¿Alguna sugerencia? Pensé en usar consultas SQL con la función de comparación LIKE o incluso es posible usar REGEX. Pero tal vez alguien ya ha hecho esto o quiere hacerlo y tiene algunas ideas para compartir.

He leído que volcar la base de datos como texto y buscar en ella es una buena opción. Puedes buscar con phpMyAdmin, pero es limitado. Depende del tamaño de la base de datos y de un buen editor de texto, pero puedes eliminar las revisiones de entradas/páginas antes de volcar la base de datos para reducir su tamaño. O volcar unas pocas tablas a la vez.

Borrar revisiones antes del escaneo parece una buena estrategia para mí. Le preguntaré a mi amigo si todavía las necesita o no. ¿Tienes algún consejo sobre cadenas de búsqueda reales? Pero antes de preguntar, creo que debería hacer mi propia tarea y buscar en Google vulnerabilidades conocidas, incluso debo haber enlazado algunas desde mi blog.

Buscaría las cadenas habituales como eval(base64_decode
. Y si ves el código fuente del sitio y encuentras enlaces de spam, busca esos. http://sucuri.net/ mantiene un registro de cadenas de malware relacionadas con WordPress

Todos los sitios en mi cuenta fueron infectados con un script Decode_Base64 que infectó muchos archivos php, y a pesar de limpiar un sitio que me tomó horas, se reinfectó apenas horas después.
Terminé descargando la carpeta wp-content/uploads y cualquier otro archivo actualizado manualmente usando una conexión FTP segura.
También tomé notas/copias de seguridad de los temas, plugins y otras personalizaciones que necesitaría volver a aplicar.
Luego cambié todas las contraseñas de la cuenta/FTP, cambié manualmente las contraseñas de la base de datos/usuarios usando phpMyAdmin, para denegar el acceso cuando los sitios volvieran a estar en línea.
Después eliminé TODO el código de Wordpress de TODOS los sitios y en su lugar subí un simple archivo index.html que decía que los sitios estaban en mantenimiento.
Revisé las carpetas WP-content/uploads buscando cualquier cosa que no fuera una imagen o mi propio contenido, especialmente buscando scripts (que no deberían estar allí).
Luego, descargué la última versión de WP, la configuré para la base de datos existente con una nueva contraseña, y la subí al servidor.
Accedí al sitio, que en este momento solo tendría Akismet activo. Revisé y eliminé todo lo que no debería estar allí (páginas, entradas, enlaces, etc).
Instalé un plugin de copias de seguridad para asegurarme de tener respaldos de la base de datos/carpetas.
Instalé el plugin Bulletproof-Security (o similar) que crea archivos .htaccess protegidos y te indica cómo asegurar tus archivos/carpetas. Cumplí con sus recomendaciones.
Finalmente, apliqué gradualmente mis personalizaciones nuevamente.
Si tienes múltiples dominios, repite según sea necesario.
En mi situación, en realidad planeaba migrar a un nuevo host, así que después de hacer esto, guardé todo sitio por sitio y los recreé en el nuevo host, una vez que me aseguré que la versión reconstruida del antiguo estaba limpia.
Buena suerte y espero que esto ayude.
