19.7.11

Enumerando usuarios de WordPress

Cuando empeze desarrollar y probar wpbf me di cuenta que necesitaba nombres de usuario válidos para realizar los ataques de fuerza bruta. En un principio buscaba en el contenido del blog links que hacian referencia a las páginas de autor hasta que di con el advisory de Veronica Valeros (TALSOFT-2011-0526) que permite automatizar la enumeración de usuarios a traves de una redicción (segun el advisory, esta presente en versiones de WordPress 2.6, 3.1, 3.1.1, 3.1.3 y 3.2-beta2).

Los usuarios enumerados pueden ser verificados/validados (para filtrar falsos positivos) desde el formulario de ingreso de usuarios (wp-login.php) cuyo mensaje de error diferencia entre usuarios válidos e inválidos.

Redirección

Esta técnica funciona en muchas instalaciones de WordPress (actualizadas o no). Para saber si un blog es vulnerable basta con ingresar a la siguiente página en el blog:

http://www.miblog.com.ar/?author=2

En caso de que exista un usuario cuyo ID sea "2", la redirección nos revela el nombre de usuario "pepito":

http://www.miblog.com.ar/author/pepito/

La idea general es ir incrementando el IDs de usuario hasta obtener todos los usuarios. Algo importante es no detenerse cuando no encontremos un usuario, ya que es común que algunos usuarios hayan sido eliminados y exista un "vacio" en la secuencia de IDs de usuarios.

Pagina del autor

Pero, ¿qué pasa cuando no se hace la redirección? Como bien dice el advisory, versiones recientes de WordPress solucionan el problema de la redirección pero el nombre de usuario sigue presente en las paginas de autor de cada usuario. En esta pagina se deberían listar todos los posts de un autor en particular, y si bien el template puede estar modificado para no incluir un link al autor (href="/author/pepito/") la etiqueta "title" suele comenzar con el nombre de usuario.

<title>pepito | Titulo de mi blog</title>

En muy pocos casos cambia la posición del nombre de usuario pero, en caso de que cambie, se podria comparar el contenido del titulo de varias paginas de autor y encontrar cuales son las palabras que se repiten en la mayoría de los casos. Las palabras que cambian representarian los nombres de los autores.

Otros métodos

Nos queda buscar en el contenido del blog referencias a la pagina de autor en las firmas de los posts. Acá dependemos del tema/template elegido por el administrador del blog y hay una gran posibilidad que no encontremos todos los usuarios (como, por ejemplo, un usuario que no escribió un post en ese blog). Un link a una página de autor seria algo así:

<a title="View all posts by admin" href="http://www.miblog.com.ar/?author=1" class="url fn n">admin</a>

¿En que versiones funciona esto?

Se suponía que la versión 3.1.3 solucionaba el problema del redirect, pero en mis pruebas tengo resultados dispares. En algunos blogs cuya versión es la misma, para uno funciona el redirect y para el otro no (en ambos casos, la enumeración es exitosa).

Estas son las versiones que pude probar:

WordPress 2.6.1 : redirect
WordPress 2.7 : author-title
WordPress 2.7.1 : author-title
WordPress 2.8.4 : author-title
WordPress 2.9.2 : author-title
WordPress 3.0.2 : author-title
WordPress 3.0.3 : author-title
WordPress 3.0.4 : redirect
WordPress 3.1.2 : author-title
WordPress 3.1.3 : redirect
WordPress 3.2 : redirect
WordPress 3.2.1 : redirect / author-title

Si quieren hacer pruebas enumerando usuarios de su blog automaticamente, pueden utilizar wpbf o el plugin wordpress_enumerate_users.py del framework de explotacion web w3af.

No hay comentarios.: