THL Base — Linux

THL Base — Linux

Esta es una máquina de The Hackers Labs de nivel Avanzado

·

5 min read

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 flatey 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.