OverPass3 - Hosting

# Writeup - TryHackMe

Publicado por Ch4m17ux on January 20, 2021 · 18 mins read

OverPass3 - Hosting (Writeup - TryHackMe)

Reto Overpass3 - TryHackMe

Tenemos una maquina denominada OverPass3 - Hosting, un reto de nivel medio.

En esta maquina se nos indica que debemos lanzar la maquina y esperar a que inicie, tardara cerca de 5 minutos, de otro modo no podremos acceder a la misma. Se ha establecido que la maquina tenga un nivel intermedio de expertiz, y esta bien denominada, ya que hay que trabajar un poco para poder escalar privilegios, las vulnerabilidades para poder hacerlo solo podran ser explotadas casi al final del desarrollo de la misma.

Recoleccion de información

Como generalmente creo que se debería comenzar, es realizando un un escaneo de puertos; así podremos saber que puertos abiertos tiene la maquina y poder tener un panorama general de los pasos a realizar.

NMAP

OverPass3 - WriteUp

Podemos ver que tenemos 3 puertos abiertos:

  • 21
  • 22
  • 80

Así que vamos a seguir recolectando información. Ya que tenemos un sitio web, verificamos si podemos ver algo dentro del sitio, dentro del código fuente y demás. Lo mas interesante de reseñar es que tenemos algunos nombres que nos podrían ayudar a tratar de probar accesos a través de SSH o algún administrador del sitio que pueda tener, así que tomamos nota:

  • Paradox
  • Elf
  • MuirlandOracle
  • NinjaJc01

Vamos a ejecutar un escaneo de directorios sobre el sitio web, verificamos si encuentra alguna zona de administración o similar.

Gobuster

OverPass3 - WriteUp

Observamos que nos ha encontrado un directorio interesante (/backups), ya que no es común que se tenga en un sitio web. Al verificar este directorio encontramos que tiene un fichero ZIP, que nos lo descargaremos y verificaremos que contiene.

OverPass3 - WriteUp

Unzip&Decrypt

Una vez que lo hemos descargado encontramos que hay dos ficheros:

  • Un fichero excel encriptado con GPG
  • Una llave que suponemos que seria la que nos permita descencriptar el fichero.

OverPass3 - WriteUp

Lo que debemos hacer primero es importar esta llave que hemos obtenido (y que seguro nos vendrá muy bien)

OverPass3 - WriteUp

Posteriormente desencriptamos el fichero excel encriptado.

OverPass3 - WriteUp

Obtenemos un fichero excel que podemos visualizar, bien sea con algún editor que tengas en tu maquina (como LibreOffice) o utilizar un visor online. De un modo u otro, podremos ver que hay una tabla con algunos datos interesantes: Nombre de Cliente, Nombre de Usuario, Contraseña, Numero de tarjeta de crédito y CVC (No os emocionéis, los números de tarjeta no son validos). Verificaremos si con estos datos podemos acceder via SSH.

Customer Name Username Password Credit card number CVC
Par. A. Doxx paradox SxxxxxAxxGxxxx123 4111 1111 4555 1142 432
0day Montgomery 0day OxxxxIxTxxBxxxDxx 5555 3412 4444 1115 642
Muir Land muirlandoracle Axx1D0xxAxxAw3x0xx 5103 2219 1119 9245 737

Login Attempts

Ya que tenemos algunos usuarios y contraseñas, probaremos el acceso a través de SSH ; en este caso he comenzado con el primer usuario, que para mi tiene mas sentido de que exista un usuario con ese nombre.

OverPass3 - WriteUp

No obtenemos acceso, y según el mensaje todo indica que el acceso a través de SSH con usuario y contraseña no esta habilitado y se requiere un par de claves.

Hemos intentado con los otros usuarios, y tampoco obtenemos acceso.

Vimos que el puerto 21 (ftp) también estaba abierto, voy a intentar el acceso a través de este puerto FTP, pero nos encontramos con que no hay acceso con usuario anónimo, de nuevo, intentaremos el acceso acceso con los datos que hemos obtenido del fichero excel, veremos si hay suerte.

En muchas ocasiones encontramos que se reutilizan usuarios y contraseñas para varios servicios.

Podemos encontrar que obtenemos acceso con el usuario paradox, y la ubicación donde nos sitúa es donde podemos encontrar los archivos que componen el sitio web. He tratado de moverme hacia una ubicación diferente y al parecer este usuario en FTP esta enjaulado.

OverPass3 - WriteUp

Acceso a la maquina remota

Sin embargo, el hecho de que no podamos movernos no quiere decir que no podamos hacer nada, mas aun que estamos ubicados en la carpeta donde están los ficheros del sitio web, podemos comenzar nuestras acciones de acceso y escalado de privilegios.

Podemos en esta ocasión, de forma realmente sencilla, subir ficheros y ejecutarlos desde el sitio web, así que intentare subir un archivo PHP que contiene una shell reversa y acceder al servidor.

OverPass3 - WriteUp

Como vemos, al listar los ficheros del servidor podemos ver el fichero PHP que hemos subido con la shell reversa.

Recuerda que en el fichero PHP donde tenemos la shell reversa debemos modificarlo con la IP de nuestra maquina local y el puerto local donde escuchara, de esta forma se podrá establecer la comunicación.

En nuestra maquina local, ejecutamos netcat para que escuche en el puerto que hemos configurado en el fichero PHP y ejecutamos desde la web el fichero para activar la shell reversa.

OverPass3 - WriteUp

OverPass3 - WriteUp

Tenemos de esta forma establecida la comunicación a través de netcat y tenemos una shell en el servidor remoto; pero es una shell un poco limitada, así que ejecutaremos algunos comandos para poder tener mayores funcionalidades.

OverPass3 - WriteUp

Estos comando nos permiten tener autocompletado, buscar a través del uso de las flechas del teclado y algunas opciones mas dentro de la shell.

Verificamos con qué usuario nos “loguea” en esta shell (lo mas común es www o apache)

OverPass3 - WriteUp

Flag de Web

La primera flag que nos piden que debemos buscar esta relacionada con este mismo usuario, así que buscaremos donde puede estar la flag.

OverPass3 - WriteUp

A través de ensayo/error hemos encontrado un fichero denominado web.flag, que suponemos que es nuestra primera flag.

En estos casos, es ir probando opciones:

  • Buscar por el nombre apache
  • Buscar por la palabra flag como nombre
  • Buscar por la palabra flag como extensión
  • Etc

OverPass3 - WriteUp

Flag de Usuario

La siguiente pista que nos dan, es que la flag de usuario se encuentra bajo el usuario "james", cuando revisamos qué usuarios tienen un home creado encontramos dos: Paradox y James.

OverPass3 - WriteUp

Pero al intentar acceder a la carpeta de usuarios nos pone que no tenemos permisos.

OverPass3 - WriteUp

Vamos a reutilizar accesos, no tenemos de forma sencilla o clara un posible acceso como James; podríamos realizar una análisis de fuerza bruta a través de Hydra pero hemos visto con el usuario Paradox que el acceso a través de SSH se realiza con alguna clave privada, así que esta no es una buena opción. Dicho lo anterior reutilizaremos el acceso de Paradox que teníamos para el acceso a FTP, veremos si podemos cambiar de usuario, desde Apache hacia Paradox.

OverPass3 - WriteUp

Vemos que podemos acceder con este usuario, verificamos si podemos tener acceso como sudo o superuser.

OverPass3 - WriteUp

Este usuario es un usuario normal, es decir no tiene permisos especiales, no esta dentro del grupo sudoers, que permita ejecutar acciones como usuario root, y que quizá podamos vulnerar.

Verificamos si podemos acceder a la carpeta home de James, que es el usuario que nos interesa y donde esta la flag.

OverPass3 - WriteUp

Escalado de privilegios

No me gusta utilizar herramientas automatizadas, que en muchas ocasiones nos puede ayudar pero que nos da mucha información, sin embargo, para esta maquina utilizare Linpeas, que nos hará una búsqueda total de vulnerabilidades, y veremos si encuentra algo interesante.

Lo primero, debemos descargar el bash de Linpeas desde su repositorio oficial, en nuestra maquina local.

OverPass3 - WriteUp

De nuevo, accedemos por FTP con el acceso que ya tenemos y subiremos el bash de Linpeas para poder ejecutarlo en la maquina remota.

OverPass3 - WriteUp

Sabemos que el FTP nos deja ubicado en la carpeta del sitio web, así que nos posicionaremos en esta carpeta, le damos permisos de ejecución al bash y verificamos que información nos va arrojando.

OverPass3 - WriteUp

Dentro de toda la información que nos arroja, que es bastante extenso, podemos ver que ha encontrado una vulnerabilidad en el montaje de un recurso NTFS

OverPass3 - WriteUp

Buscando en algunos recursos de internet, que nos indique cómo realizar este montaje encontramos que se puede realizar con una redirección de puertos, así que, como he mencionado en un post anterior, utilizare Chisel.

Puedes encontrar mas información en: https://0xdf.gitlab.io/2020/08/10/tunneling-with-chisel-and-ssf-update.html

Lo que tenemos que hacer es ir al github oficial y descargar el ejecutable que necesitamos. Para que funcione la redirección de puertos y poder montar el recurso, requerimos que Chisel este tanto en nuestra maquina local (server) como en la maquina remota (client), para poder copiar el binario en la maquina remota reutilizare el acceso FTP que ya tenemos.

OverPass3 - WriteUp

Le damos permisos de ejecución al binario de Chisel, tanto en nuestra maquina local, como en la maquina remota. Y una vez que se tiene permisos de ejecución lo iniciamos, en nuestra maquina local como servidor y en la maquina remota como cliente.

OverPass3 - WriteUp

Como información de aprendizaje

$ chisel server --p 8000 --reverse
En el lado del servidor (maquina local), el puerto 8000 es elegido aleatoriamente por nosotros para escuchar.

$ ./chisel client 10.x.x.x:8000 R:2021:127.0.0.1:2021
R:2021 significa que cuando la conexión es establecida en el puerto 8000 con tu servidor en la IP 10.x.x.x, el servidor (maquina local), también abre el puerto 2021.
Luego cuando un paquete va hacia el puerto 2021 en tu lado, es redirigido al túnel en el puerto 8000 y enviado afuera a 127.0.0.1:2021 en la victima (maquina remota)

Espero que hayas seguido el tema. (y que haya podido ser claro)

Una vez que tenemos conexión a través de Chisel, vamos a tratar de montar el recurso NFS en nuestra maquina local. Tal como hemos visto anteriormente al verificar /etc/exports, podemos ver la configuración para el NFS. Cuando obtenemos fsid=0 significa que la ubicación /home/james como recurso raíz, sea igual a / .

En nuestra maquina local creamos una carpeta, donde montaremos el recurso NFS y ejecutamos el comando de montaje.

OverPass3 - WriteUp

Allí encontramos y obtenemos la flag de usuario.

OverPass3 - WriteUp

Flag de Root

Finalmente, nos hace falta realizar el ultimo escalado de privilegios y poder acceder al usuario root. Podemos comenzar por obtener una shell como James y desde allí escalar hacia el usuario root. Para esta finalidad, trataremos de obtener la llave privada SSH del usuario James, que parece tener mayores y mejores privilegios sobre la maquina.

OverPass3 - WriteUp

Vamos a copiar el fichero id_rsa a nuestra maquina local, le asignaremos los permisos adecuados y accederemos como el usuario James.

OverPass3 - WriteUp

Anteriormente habíamos visto que la vulnerabilidad era que que el recurso NFS lo podemos montar como root en nuestra maquina local y desde allí manipular todos los permisos.

Vamos a seguir aprovechando esta vulnerabilidad y vamos a copiar un binario bash en el recurso NFS y cambiarle los permisos desde nuestra maquina local; de esta forma esperamos obtener una shell como root.

OverPass3 - WriteUp

Ya hemos modificado los permisos, estableciendo un SUID y un permiso total; también hemos modificado el propietario para que sea root. Lo podemos ver en nuestra maquina local y en la maquina remota.

OverPass3 - WriteUp

Ejecutamos el binario bash que hemos modificado con estos permisos y obtenemos nuestra shell como root

OverPass3 - WriteUp

Flag de root

Ya que estamos como root, procedemos a sacar la ultima flag, que suponemos esta dentro de la carpeta /root

OverPass3 - WriteUp

Conclusiones

Esta maquina, como hemos indicado al comienzo es una maquina de nivel medio, hay que comenzar a tener cierta expertiz y ciertos conocimientos para poder explotarla, hemos encontrado un camino que parecía sencillo, pero hemos podido comprobar que hay que realizar algo de "try Harder" para lograr escalar privilegios y alcanzar las flag propuestas.

Esperamos que esta guía haya sido clara y cualquier errata, duda o sugerencia, podéis hacérnosla llegar por cualquiera de los medios aquí dispuestos.

Fin