GamingServer – TryHackMe Walkthrough

GamingServer – TryHackMe Walkthrough

Hoy toca resolver la máquina GamingServer de TryHackMe, en ella, gracias al reconocimiento se podrá encontrar una clave privada cifrada que, con ayuda de otras herramientas, podremos usar para tener un primero acceso al sistema y, luego, gracias a que nuestro usuario pertenecerá al grupo “lxd” podremos escalar privilegios.

Información importante sobre la máquina

Dirección IP

Nivel de dificultad

10.10.178.122

Fácil

Reconocimiento

Primero, lo básico, haciendo un escaneo rápido con nmap sobre los 65535 puertos para detectar los que estén abiertos:

nmap -Pn --min-rate=5100 -n -p1-65535 <IP>
clear ya funciona

Primer escaneo con nmap

-Pn: Saltar el descubrimiento porque se asume que el activo está en línea, para las panas, omitir el ping.

-n: Evita que se realice resolución DNS.

–min-rate=(cantidad): Determina la cantidad de paquetes enviados por segundo.

Se puede ver que tiene los típicos abiertos, 22 (SSH) y 80 (HTTP), aparentemente, recuerden que no hay que fiarse de lo que diga nmap en el apartado de “SERVICE” a menos que se haga un escaneo de otro tipo, que es el que haremos a continuación:

nmap -sV -sC -T4 -p22,80 <IP> -oN nmapScan
clear ya funciona

Escaneo profundo con nmap

-sC: Lanzar todos los scripts de la categoría “default”

-sV: Detectar las versiones de los servicios.

-T4: Plantilla de temporización al nivel 4, básicamente se aumenta la velocidad del escaneo, esto no es recomendable hacerlo en entornos reales debido a que es muy ruidoso y es propenso a darnos falsos positivos, pero en este caso como estamos en entornos controlados, viene de lujo porque hará que el escaneo vaya más rápido que tú yendo a ver nuestro curso de Ciberseguridad y Privacidad 101 que está gratis en la plataforma y en Youtube.

Ahora, con esta información en mente, podemos revisar el sitio web que corre en la máquina:

clear ya funciona

Primera vista al sitio web

A simple vista, no hay nada útil, nada más que revisando el código fuente, hay un comentario donde podemos obtener un posible nombre de usuario:

clear ya funciona

Código fuente de la página de inicio del sitio web

Ahora, con esto en mente, haremos reconocimiento con otras herramientas como whatweb y wafw00f:

clear ya funciona

Escaneo con whatweb

clear ya funciona

Escaneo con watw00f

Genial, pues descubrimos más información del objetivo y, ya que estamos vimos que no cuenta con ningún WAF.

Seguidamente, toca hacer más reconocimiento activo, para ello usare gobuster para descubrir directorios y recursos ocultos:

gobuster dir --url <URL> -w /usr/share/wordlists/dirb/big.txt -o gobusterScan
clear ya funciona

Fuzzing con gobuster

Como se puede ver, hay algunos directorios interesantes, en concreto, si entramos a /uploads veremos algunos ficheros, a destacar, podemos ver una especie de diccionario:

clear ya funciona

Directorio /uploads/

clear ya funciona

Diccionario en cuestión

Por otro lado, en /secret, veremos un fichero poco usual:

clear ya funciona

Directorio /secret/

Al abrirlo, veremos que parece ser una clave privada SSH:

clear ya funciona

Clave privada cifrada

Explotación

Pero parece estar encriptada, por ende, toca llamar al colega John Cena para poder romper este cifrado, antes de eso, es importante entender que john the ripper no te va a funcionar con esta clave cifrada, primero hay que pasarla a un formato que la herramienta entienda, para ello se usa otra herramienta llamada ssh2john que servirá para extraer el hash de la clave en un formato que john entienda, así que para ello, primero guardamos la clave en un fichero al que yo llamaré “claveCifrada” y, luego con ssh2john la haré compatible con john the ripper volcando la salida en un fichero llamado clave.txt:

clear ya funciona

Configuración de la clave privada

Ahora, solo necesitamos pasarle a john el hash y una lista de palabras para que intente romper la contraseña, y tú te preguntaras ¿cuál lista de palabras usamos? Y si no te lo preguntaste me parece una falta de respeto, en fin, podemos partir de rockyou pero, si recuerdas en el directorio /uploads teníamos un fichero llamado dict.lst que descargamos, este fichero es un diccionario con palabras que, al ser esto un CTF, se puede intuir que debemos usar ese, por ende, usaremos ese diccionario con john:

clear ya funciona

Obtención del passphrase

Bien, ahora toca acceder a la máquina usando este id_rsa y, te preguntarás ¿Con cuál usuario accederemos? Y nuevamente, si no te lo preguntaste ya te puedes ir del blog porque estoy ofendido, en fin, si recuerdas antes vimos que en un comentario teníamos un posible usuario que era “john”, entonces probemos con ese pana, para ello:

ssh -i <ElFicheroConLaClaveCifrada> john@<IP>

Y al poner la contraseña que nos proporcionó john (el john con el que nos logeamos no, John The Ripper, perdón es que hay muchos John’s), podemos obtener un primer acceso al sistema (importante que cambies los permisos a 600 en notación octal para la clave privada, de lo contrario no te dejará usarla para iniciar sesión):

clear ya funciona

Primer acceso al sistema

Escalación de privilegios

Ahora toca escalar privilegios, haciendo una enumeración básica pude percatarme que, el usuario john pertenece al grupo lxd:

clear ya funciona

El usuario john está en el grupo lxd

Partiendo de esto, podemos listar las imágenes usando:

lxc image list
clear ya funciona

Listado de imagenes

Decepcionante, no hay imágenes, y en este punto partiendo de que lxd y lxc están instalados, vienen muchas preguntas a la mente ¿estoy en un contenedor? ¿la vida es un contenedor? ¿por qué es contenedor y no tenedor?, en fin, investigando el tema, lo que se me ocurrió hacer fue llevar el lxd alpine (es un administrador de contenedores) a la máquina víctima, para ello desde la máquina atacante, hay que clonar este repo y seguidamente ejecutar el builder-alpine con permisos elevados, esto nos generará un fichero tar.gz que será el que debemos llevar a la máquina victima:

clear ya funciona

Clonación del repo y ejecución de alpine

clear ya funciona

Resultado final

Ahora, ponemos a la escucha un servidor http de python en nuestra maquina atacante y, dese la máquina victima con wget nos traemos el fichero en cuestión:

clear ya funciona

Escucha del servidor http local

clear ya funciona

Se trae el fichero tar.gz a la máquina víctima

Ahora, desde la máquina víctima, debemos ejecutar los siguientes comandos:

lxc image import ./alpine-version-tar.gz --alias coldd
lxc init coldd mycontainer -c security.privileged=true
lxc config device add mycontainer mydevice disk source=/ path=/mnt/root recursive=true
lxc start mycontainer
lxc exec mycontainer /bin/sh

Y si hasta aquí lo hiciste todo bien, deberías tener una shell sh como root:

clear ya funciona

Acceso como root

Aunque somos root, fíjate que no tenemos nada en el /root, debería estar la bandera de root, ¿esto por qué pasa? Porque este proceso nos acaba de poner el contenedor lxd que tenía el sistema de archivos que necesitamos en /mnt/root, por ende, en /root no hay nada y todo el sistema de archivos está ahora en /mnt/root, entonces, si miramos en /mnt/root/root, sorpresa:

clear ya funciona

Lectura de root.txt

Y ya estaría, máquina completada.

Calificación

  • Dificultad de acceso: 9% 9%
  • Dificultad de escalación de privilegios: 18% 18%

He hecho esta puntuación basándome en estos valores propios:

Fácil1% – 30%

Medio: 31% – 70%

Difícil: 71% – 100%

Únete al servidor de Discord de Coldd Security y aprende ciberseguridad cada día.

Anuncio

Sobre el Autor

Martin Frias

Founder of Coldd Security

1 comentario

  1. Daniel (DaXxN)

    Cada vez este blog esta mas currao tio, felicidades :DD

    Responder

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Información adicional sobre protección de datos:
Responsable: Martin Frias.
Finalidad: Moderar los comentarios de este sitio web.
Cesión: NO se cederán a nadie, salvo obligación legal.
Derechos: Acceso, rectificación, cancelación y borrado de tus datos.
Legitimación: Tu consentido expreso.

REDES SOCIALES

Newsletter

Estadísticas

  • 189.191
  • 57

TheHackerSnow

0

Share This