Consejos para quitar malware de WordPress

Consejos para quitar malware de WordPress

No es la primera vez que me toca buscar malware en algún WordPress, y la verdad, suele ser un dolor de cabeza. Básicamente usan dos funciones: eval y base64_decode. Con eval nos meterán el código malicioso, que estará codificado en base64 para evitar que lo encontremos fácilmente.

Si tenéis acceso al SSH del servidor, una llamada a find . -name '*.php' -exec grep -l 'base64' {} \; suele bastar para encontrar este tipo de llamadas, o buscar eval en vez de base64.

Desgraciadamente esto no siempre funciona, ya que la función eval puede estar codificada de la siguiente forma:

$foo = "b"."a"."s"."e"...;
$code = 'ev'.'al($a);';$s = create_function('$a',$code); 

Otro punto a tener en cuenta es la posibilidad de que hayan modificado el código de nuestro WordPress, lo cual se puede solucionar reinstalando el WP desde el admin. Aunque también pueden haber modificado el wp-config.php e incluir un fichero php que aparenta ser de WP (normalmente metindo en la carpeta wp-includes) pero que no lo es. Por lo cual es recomendado comprobar el wp-config.php con cualquier versión en local.

A parte de todo esto, es importante el tema de los permisos de los ficheros, etc…

Actualización 29/05/2015: también es aconsejable buscar esta cadena \142\x61\163\145\66\x34\x5f\144\x65\143\x6f\144\145, ya que al hacer un echo nos devuelve la función base64_decode.

Actualización 02/07/2015: buscar también la cadena \x65\x76\x61\x6c, ya que devuelve la función eval.

Como modificar las URLs de la BD de WordPress al exportar

Cuando se exporta la versión de desarrollo de WordPress a otro dominio, nos encontramos con el problema de las URLs. WordPress permite modificar las URLs fácilmente desde el wp-config mediante WP_HOME y WP_SITEURL. Desgraciadamente, WP puede estar lleno de URLs en la BD como en wp_options, o directamente en posts, …

Para solucionar esto existe un script que realizar esta tarea por nosotros directamente sobre la BD.

Database Search and Replace Script in PHP

Vía / WP Beaches