Para poder hacer uso de esta máquina primero debemos descargar el archivo y así poder desplegar el laboratorio.
Descargamos el archivo de la página https://thehackerslabs.com/
Al momento de descargar esta máquina y descomprimir el archivo, en este caso observamos un archivo.
Para desplegar el laboratorio usaremos nuestro hipervisor favorito, así también al ejecutarlo podemos ver que nos indica la dirección IP que tiene la máquina.
Realizamos un ping a la máquina para comprobar la conexión y observamos que sí la tenemos.
Realizamos un escaneo de puertos y podemos observar 3 puertos habilitados.
Volvemos a realizar un escaneo más detallado de los puertos identificados y observamos lo siguiente.
Como vemos que tenemos 2 servicios web revisaremos ambos, primero ingresamos la IP en el navegador y vemos que tenemos un buscador.
En la segunda página con el puerto 8080
tenemos lo siguiente.
Probamos buscando en la segunda página y podemos observar que usando '
este se rompe y no nos muestra nada.
Ingresando un #
nos lista todo, haciendo que supongamos que es vulnerable a inyecciones SQL.
Realizamos pruebas de inyección en el buscador y notamos que los errores se ven a partir de la sexta columna.
Listamos por columnas y podemos ver lo siguiente.
' union select 1,2,3,4,5-- -
Buscando el nombre de database
observamos que se llama Nombres
.
' union select 1,database(),3,4,5-- -
Revisamos si tenemos más datos e ingresamos la siguiente consulta.
' union select 1,schema_name,3,4,5 from information_schema.schemata-- -
Podemos ver que tenemos una aparte de Nombres
que suponemos que es la lista que tenemos ahora, así que listaremos FlatPress
. Para ello usamos la siguiente consulta y podemos ver que solo tenemos una tabla llamada login
.
' union select 1,table_name,3,4,5 from information_schema.tables where table_schema='FlatPress'-- -
Con conocimiento de la tabla login
ahora debemos conocer las columnas por eso listaremos las columnas y podemos ver que tenemos un id, user, password
.
' union select 1,column_name,3,4,5 from information_schema.columns where table_name='login'-- -
Como tenemos ambos nombre de columnas lo que realizamos es listar el contenido y podemos ver tanto el usuario como el password
' union select 1,group_concat(user,':',password),3,4,5 from FlatPress.login-- -
r0dgar:SNIETbkGBCnhFqeUJuqBO
Vamos a la página de FlatPress
e ingresamos las credenciales.
Luego de ello vemos que son correctas y estamos dentro.
Revisando podemos observar que tenemos una sección donde subir archivos.
Probamos subiendo un archivo PHP de prueba, pero no nos permite subirlo.
Probamos subiendo una imagen y vemos que nos permite subirla.
Ya que tenemos este problema probaremos con el formato phar
y lo que realizaremos es usar BurpSuite
para interceptar la consulta y agregarle un magicnumber
para escapar de la restricción. Agregaremos lo siguiente
Enviamos la petición y podemos observar que se subió con éxito.
Revisamos los archivo y tenemos nuestro archivo.
Abrimos el archivo y si lo interpreta.
Establecemos nuestro reverse shell
.
Antes de subir el archivo, volvemos a interceptar el archivo y agregamos el mismo texto.
Se sube con éxito el archivo.
Antes de abrirlo iniciamos nuestro listener.
Hacemos clic en el archivo y podemos ver que ya tenemos conexión en nuestro listener.
Para facilitar las cosas en este punto migraremos la shell porque en este caso nos ocurre que no podemos hacer uso de las flechas o subir y bajar al comando anterior. Para ello primero hacemos
script /dev/null -c bash
luego un ctrl+z, regresaremos a nuestra consola seguido de ello ingresaremos los siguientes comandos para recuperar la shell usamos stty
stty raw -echo; fg
reset xterm
para obtener más características usamos
export TERM=xterm
para la variable de entorno
echo $SHELL
y para pasar a bash usamos
export SHELL=/bin/bash
para establecer el tamaño adecuado de la consola ingresamos
stty rows 59 cols 236
de esta manera ya nos podemos mover con más libertad en la consola.
Listamos los directorios de archivos temporales y podemos observar que en /opt
hay un archivo llamado hash.txt
.
Abrimos el archivo y lo copiamos en un archivo.
Usamos john
para obtener el password y es secret
.
Regresamos a la consola, revisamos los usuarios y podemos ver que tenemos 2 y podemos acceder a ambas carpetas. Probamos ingresar como el usuario pedro
y tenemos éxito.
pedro:secret
Realizamos un sudo -l
, pero no tenemos permisos.
Revisamos permisos SUID y capabilities, pero no observamos la que nos pueda ser útil.
Ya que no tenemos más información veremos los grupos a los que pertenece y pertenece al grupo adm
.
Verificamos los archivos que pertenecen a este grupo podemos ver varios log
.
Comprobamos entre los primeros logs, pero no observamos nada. Probaremos verificando los comprimidos, para ello copiaremos a nuestra carpeta /tmp
.
Una vez copiado descomprimimos el archivo y al abrirlo podemos observar que se nota un el usuario flate
y un password.
flate:HPAbcmOgSjidaoWkXUQjw
Probamos las credenciales y son correctas.
Realizamos un sudo -l
y podemos acceder aprovechándonos del binario awk
.
Revisando en la página de GFTOBins podemos observar como hacerlo.
Ingresamos el comando y podemos observar que somos root
. De esta manera culminando esta máquina.