Descuento 20% Diciembre
Plugin Optimización de Imágenes Gratuito para WordPress
Domingo, 12 Julio 2015 23:11

Evita la enumeración de usuarios en WordPress ¡mándalos a paseo!

Escrito por 
CMS:  WordPress |  Versión:  Todas |  Nivel de dificultad:  Básico |  Tiempo estimado de lectura:  10 minutos


Evita la enumeración de usuarios en WordPress ¡mándalos a paseo!En primer lugar, sólo porque alguien pueda adivinar tu nombre de usuario de acceso al dashboard de WordPress, no significa que tu sitio web sea inseguro, no entres en "modo paranoico" al leer esto. Lo cierto es que no hay como evitar que alguien pueda analizar tu sitio de cualquier manera externamente.

Claro que las medidas de seguridad que implemente el Hosting donde te alojes son una barrera en primera línea de fuego para contrarrestar posibles efectos perniciosos sobre tu web, pero en esta ecuación tu, como usuario, tienes mucha responsabilidad en mantener ese perímetro de seguridad.

Las enumeraciones de sitios web para obtener datos relevantes que permitan trazar una acción orientada a lanzar un ataque contra un formulario de acceso, son algo muy habitual. Ponerle fin a este tipo de exposición innecesaria de datos contribuirán a que tu sitio sea un poco más seguro.

En muchos sitios WordPress es posible enumerar los usuarios de WordPress utilizando una característica muy conocida (o bug) relacionada con el autor de post/entradas.

Naturalmente si un sitio web tiene 20 o 40 usuarios (por ejemplo) pero solo 2 escriben post en el Blog del sitio, solo será posible enumerar los "nombres de usuario" (username) de esos dos usuarios que publican con algún rol de Autor, etc.

Si realmente estás preocupado por la seguridad de tu sistio WordPress, yo recomendaría hacer dos cosas:

  1. Desactiva enlaces permanentes bonitos (permalinks), es mejor!. Esto obligará a herramientas como WPScan y similares ha analizar el contenido de tu sitio para obtener los nombres de usuario en lugar de depender de la URL. Si trabajas con muchos usuarios (principalmente Colaboradores y Autores) les obligaría a establecer un apodo diferente como nombre de acceso, username, y no su nombre real. A falta de un nombre de usuario en la URL, muchas herramientas de escaneo buscan "mensajes de nombre de usuario" en el contenido del agregador (feed)/post en su lugar. Si no estás poniendo los nombres de usuario por ahí, entonces no podrás ser enumerado ni estarás facilitando información al respecto.
  2. Cambia el nombre de la cuenta de usuario de administración para reducir la posibilidad de ataques de fuerza bruta. Esto reducirá la posibilidad de que los atacantes tengan acceso con contraseñas automatizadas mediante ataques de diccionario.

Sin embargo, es importante entender que si los archivos de autor están habilitados es posible enumerar todos los usuarios dentro de una instalación de WordPress. Por supuesto, nada es más importante que tener fuertes contraseñas de todas las cuentas de usuario.

La forma más común, mediante URL de enumerar usuarios es:

http://www.tudominio.com/?author=1
http://www.tudominio.com/?author=2
http://www.tudominio.com/?author=3
etc...

Con cada una de estas urls obtendrás el resultado:

http://www.tudominio.com/author/admin/
http://www.tudominio.com/author/autor/
http://www.tudominio.com/author/autor/
etc...

Y verás los post o entradas del autor identificado mediante ?author=1



Bloquear por .htaccess

Puedes utilizar una regla de re-escritura en el archivo .htaccess para evitar esta enumeración de usuarios, pero igualmente es importante que utilices apodos en los nombres de usuarios de WordPress para evitar que los nombres de usuario que utilices describan al mismo y se puedan obtener datos externos de usuario para ejecutar ataques de diccionarios que contengan combinaciones a partir de datos obtenidos del usuario.

La regla correcta debería tener un aspecto como este:

# Bloquear la enumeración de usuarios (username)
RewriteCond %{REQUEST_URI}  ^/$
RewriteCond %{QUERY_STRING} ^/?author=([0-9]*)
RewriteRule ^(.*)$ http://tudominio.com/ruta_real_que_sea/? [L,R=301]

El código anterior dice que toda solicitud realizada al sitio de WordPress que coincida con la cadena de consulta de “/?author= debe ser redirigida a http://www.tudominio.com/ruta_real_que_sea/.

Una vez que añadida esta regla para evitar la enumeración de usuarios en tu archivo .htaccess ahora no será posible enumerarlos, esto debería aplicarse en paralelo con otras medidas de seguridad.

Nota: No te vuelvas loco tratando de implementarla, posiblemente en su Hosting no funcione. ¡Olvidalo, usa cosas más útiles! ..sigue leyendo.


Sin embargo, esta no es la solución ideal, ya que es muy probable que alguien encuentre un bypass para estas reglas en .htaccess pues en esencia se trata de un problema de WordPress y debe corregirse en WordPress.

Una mejor solución sería tener contraseñas muy fuertes de tus cuentas de WordPress (al menos las que tengan roles de Autor, etc.) para que incluso si un atacante puede enumerar los nombres de usuarios, que no pueda acceder al panel de WordPress (dashboard).

El problema en estos casos es un atacante que intenta iniciar sesión utilizando miles de contraseñas (ataque automatizado mediante el uso de diccionarios) generará una gran cantidad de peticiones al servidor y se ralentizará considerablemente tu sitio web.

La mejor solución sería tener una corrección de código "oficial" por parte de los desarrolladores de WordPress. Por suerte WordPress 4.3 incorporará mejoras en el tema de contraseñas más robustas, si bien que de momento nada de nada de solventar estas enumeraciones.

No obstante el uso de herramientas como Latch pueden ayudarte de manera importante a mitigar los intentos de acceso al dashboard de tu sitio web WordPress.


Una solución más elegante y eficaz

Después de un buen rato buscando formas de bloquear estas enumeraciones, por htaccess y usar plugins que no tuviese ya instalados (en tu caso seguro que lo tendrás que instalar), me acorde de las redirecciones que se pueden aplicar con el plugin Redirection -tiempo atrás había leído algo al respecto y se me ilumino el cerebro-, y porque no probar...

WordPress

Redirection

Redirection es un plugin de WordPress para administrar redirecciones 301 y realizar un seguimiento de los errores 404 sin necesidad de conocimientos de gestión de archivos .htaccess de Apache.

Desde el plugin, haces clic en Add Redirection y crea una nueva similar a esta que te indico:

  • URL origen: ^(.*)/?author=(.*)
  • URL destino: https://www.fbi.gov/ :D (por ejemplo).
  • Reg Exp: Yes
  • Match: url only
  • Action: Redirect to url


Si no quieres enviarlo a la web del FBI siempre podrás enviarlo a un 404, a una página de tu sitio web o externa o a ninguna parte.

Ahh! que no sabes como se usa el plugin Redirection, no hay problema, consulta el artículo publicado en nuestro blog Redirection, como crear redirecciones 301 en WordPress, para saber de que va y como utilizarlo.

Bueno como se que no te ha quedado muy claro todo este rollo que te he soltado, principalmente para apelar a tu sensibilidad para con la seguridad de tus sitios web, te lo cuento en este vídeo cortito para que lo veas aún más claro.



La enumeración de usuarios es más del 30% de la información requerida para vulnerar un acceso al dashboard, principalmente si el usuario "admin" es el mismo que postea.

Agradecer a Roberto Pérez (Sysadmin en Webempresa), por su paciencia en mis constantes consultas "prueba/error" para dar con soluciones que realmente sirvan a los que lean este artículo.


¿Te ha resultado interesante este artículo?

Suscríbete para recibir consejos exclusivos para WordPress, Joomla y PrestaShop



Luis Méndez Alejo

Miembro del equipo técnico de Webempresa.
Coordinador de contenidos en el Blog y en Youtube.
Google+


Plugin Optimización de Imágenes Gratuito para WordPress