lunes, 2 de diciembre de 2013

BackBox 3 - Iniciación al Pentesting (Parte 13)

Penetrando en Wordpress

Existen escáner de vulnerabilidades web capaces de encontrar vulnerabilidades en Gestores de Contenido tipo CMS como Wordpress, Joomla, etc, pero además, por otra parte también existen herramientas especializadas, pensadas para analizar y encontrar todo tipo de vulnerabilidades en Joomla y Wordpress, como es el caso de wpscan para Wordpress, o joomscan para Joomla.

Estas herramientas son capaces de analizar todo tipo de plugin, componentes, módulos, widgets... con el fin de determinan cuales de ellos están instalados, cual es su versión y si es vulnerable o no.

Esta vez no vamos a mostrar ninguna de estas herramientas ya que anteriormente hemos obtenido acceso a la Base de datos del servidor donde se aloja también la Base de datos del propio Wordpress, pero está bien saber que existen para en un futuro poder utilizarlas en nuestras auditorías de seguridad.

Creando un nuevo usuario en Wordpress a través de mysql

Ahora que tenemos acceso a la Base de datos probaremos a crear un usuario con permisos Admin dentro del panel de administración de Joomla.

El motivo de hacer esto y no extrae directamente la contraseña de alguno de los usuarios que ya exista en Wordpress, es porque el cifrado de la contraseña de Worpdress es muy fuerte, y tardaríamos meses en poder Crackear el Hash.

Para poder crear un nuevo usuario de Wordpress a través de la Base de datos, debemos de insertar una sería de filas y campos dentro de la tabla wp-usermetada y wp-users. Estas dos tablas son las que contienen la información de los usuarios y sus permisos.

Wp-users

Esta tabla contiene los campos de toda la información del usuario:
  • Nombre
  • Contraseña
  • Nickname
  • Email de usuario
  • Estado
  • Etc


Wp-usermetada

Sin embargo esta otra tabla contiene los datos necesarios que otorga al usuario ciertos permisos y privilegios, como son:
  • Editor
  • Autor
  • Administrador
  • Invitado
  • Etc
Quizás una de las cosas más importantes a tener en cuenta es el nombre que elijamos para el nuevo usuario que crearemos. Hay que procurar pasar lo más desapercibido posible.

Inventarse nombres del tipo, user_tmp, 001_tmp, admins, usr... pueden ser una buena idea para que el administrador del sitio apenas se de cuenta de que existe un nuevo usuario. El nombre que se pone es de esta índole para que en caso de que alguien lo vea tienda a pensar que es un usuario del propio sistema, o que fue creado junto con la instalación de algún componente o plugin.
Imagen 1: Tabla wp_users. Contiene los datos del usuario
Para la parte que contiene los privilegios de los usuarios, tan solo vamos a fijarnos en cual de los usuarios que ya existe es administrador para copiar los mismos valores en una nueva fila y asociarlos al ID del usuario que hemos creado.
Imagen 2: Tabla wp_usermetada. Contiene los datos que otorgan permisos al usuario.

Es decir, el primer paso es añadir una nueva fila en la tabla wp_usuers, tal y como muestra la ilustración 21. El segundo paso es insertar dos filas más en la tabla wp_usermetada, las cuales asociaremos al ID del usuario que creamos anteriormente en la tabla wp_user.

Con esto ya podríamos ir a la parte de administración de Wordress e intentar ingresar con el nuevo usuario que hemos creado.
Imagen 3: Login del backend de Wordpress

Por defecto en la ruta con la que accederemos a Wordpress se ubica en www.sitio.com/wp-admin.

Si todo ha ido bien ya podemos empezar a navegar por todo el sitio en busca de más información relevante, o en busca de nuevas proezas que nos ayuden a adentrarnos un poco más en la infraestructura de la empresa.
Imagen 4: Panel de administración de Wordpress