Remote [EASY🟢]
Dificultad: Fácil
1- Reconocimiento y escaneo
1.1 Ping
1.1 PingPodemos notar que se trata de una maquina Windows, debido al TTL:
1.2 Nmap
1.2 NmapVemos el puerto 21 correspondiente a un servidor FTP(Microsoft ftpd) para transferencia de archivos, el puerto 80 correspondiente a un servidor web(Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)), el puerto 111 que parece corresponder a un servidor NFS, un servicio similar a SMB y los puertos comunes de 135, 139 de Windows, además del 445 correspondiente a un servidor SMB para alojar recursos compartidos, el puerto 5985 y 47001 tambien correspondientes a un servidor web
1.3 whatweb
1.3 whatwebTenemos tecnologias web como:
Y poco mas...
1.4 Revisión del código fuente
1.4 Revisión del código fuenteVamos a revisar el codigo fuente de la pagina web alojada en el puerto 80:

CTRL + U:

Dentro del codigo fuente no encontramos nada interesante
1.5 Fuzzing
1.5 Fuzzing2- Explotación
En el fuzzing realizado, vemos varios directorios interesantes, pero concretamente nos interesa el recurso "install" o "INSTALL", este recurso alojado en el servidor web, nos redirige hacia un panel de login:

Podemos ver que en la URL, nombra el recurso "Umbraco", se trata de un gestor de contenido o un CMS para paginas webs como WordPress entre otros
2.1 Explotación de NFS(Puerto 111)
2.1 Explotación de NFS(Puerto 111)Si recordamos en el escaneo de Nmap, tenemos el puerto 111 correspondiente a un servidor NFS(Network File System), que sirve para ubicar recursos dentro de una red, es un servicio similar a SMB, generalmente se utilza para almacenar backups en entornos reales
Este servicio lo que nos brinda es poder montar una unidad dentro de nuestro Kali, pero en remoto
Vamos a verificar los recursos que se encuentran dentro de este servidor NFS, para eso utilizaremos el siguiente comando:
Ejecutamos:
Vemos un recurso alojado en la red de la maquina objetivo llamado "/site_backups" y esta disponible para cualquier usuario, asi que vamos a montarnos el recurso de este servidor NFS, para eso utilzaremos el siguiente comando:
El comando se estructura de la siguiente manera:
Ejecutamos:
Y ahora nos vamos a la carpeta "mnt" del directorio raíz de nuestro Kali, concretamente la ruta absoluta "/mnt/" y listamos los directorios
2.2 Umbraco.sdf
2.2 Umbraco.sdfVemos directorios interesantes dentro del recurso que montamos del servidor NFS, siempre que tengamos acceso de cualquier tipo a una maquina de HTB, siempre es importante revisar los archivos de configuración, pero en concreto nos interesa el directorio "App_data" dentro de este recurso del servidor NFS, asi que vamos a irnos a ese directorio y listar los archivos dentro de ese directorio:
Investigando, el archivo que nos interesa es "Umbraco.SDF", asi que vamos a visualizarlo, pero antes de visualizarlo, este archivo es un archivo con extensión ".SDF", este tipo de extensión para archivos sirve para almacenar datos estructurados o datos especiales, por eso no podemos visualizarlo con "cat", por que nos mostraría el lado binario del archivo, y nosotros no queremos ver eso, solo queremos visualizar el texto plano del archivo, para eso utilizaremos el comando "strings", el archivo contiene mucho información, asi que vamos a filtrar la misma con un pipe y el comando "grep", pasándole como parámetro la palabra clave "password":
Vemos una lista de usuarios:
Ahora vamos a filtrar la información del archivo con "strings", pero queremos que nos muestre las primeras líneas del archivo con un pipe y el comando "head":
Vemos lo que parece ser el usuario "Administrator" y lo que parecería ser el hash de la contraseña con el algoritmo de cifrado SHA1:
Podríamos guardar el hash en un archivo de texto y con John The Ripper crackear la contraseña, pero en mi caso al ser un cifrado débil SHA1, utilizare la pagina de "CrackStation":

La contraseña es "baconandcheese", de tal manera que las credenciales quedarian de la siguiente forma:
Vamos a irnos al login del CMS, Umbraco, que habiamos encontrado anteriormente en el proceso de Fuzzing y ingresar las credenciales:

Login:

2.3 RCE Umbraco CMS 7.12.4
2.3 RCE Umbraco CMS 7.12.4Vamos a averiguar dentro del panel de administración de este CMS, la versión del mismo, para eso, vamos a clickear en nuestro perfil dentro del CMS:

La versión es la 7.12.4, asi que vamos a buscar algún exploit en GitHub para obtener un reverse shell dentro de nuestro Kali, en mi caso utilizare el siguiente:
Créditos al creador del repositorio
Vamos a clonar el repositorio con el siguiente comando:
Ejecutamos:
Vamos a irnos a la carpeta que nos dejo el clonar el repositorio, en mi caso "Umbraco-RCE" y a listar los directorios:
Necesitamos instalar los requerimientos del archivo "requirements.txt" con pip3 para el correcto funcionamiento del script en Python, para eso utilizaremos el comando "pip3 install -r requirements.txt", en mi caso ya tengo las dependencias instaladas, asi que voy a proceder directamente con la ejecución del exploit
Para ejecutar el exploit, utilizaremos el siguiente comando:
En este caso no le especificariamos el puerto , ya que el exploit de por si mismo, contempla el puerto "4445" como default, por lo que recibiriamos la shell por el puerto 4445
En mi caso el comando quedaria de la siguiente manera:
Ejecutamos:
Ya recibiriamos una reverse shell
2.4 Obtención de la flag user
2.4 Obtención de la flag userLa flag de user se encuentra dentro de la ruta absoluta "C:\Users\Public\Desktop\user.txt", vamos a visualizarla con el comando "type":
3- Escalado de privilegios
3.1 Obtención de shell meterpreter
Vamos a pasar esta reverse shell que obtuvimos a una consola de "Meterpreter" dentro de "Metasploit Framework", para utilizar los módulos de post explotación de Metasploit y escalar privilegios, para eso vamos a crear un exploit con "msfvenom" con el siguiente comando:
En mi caso lo estructure de la siguiente manera:
Ejecutamos:
Y ahora para pasarnos el exploit que acabamos de crear con "msfvenom", vamos a utilizar el servicio SMB con la herramienta "impacket-smbserver", con el siguiente comando:
Ejecutamos:
Y nos volvemos a la reverse shell, y vamos a ubicarnos en un directorio donde tengamos permisos de escritura y lectura, en este caso el directorio "Temp" dentro de la ruta absoluta "C:\Windows\Temp":
Y ahora vamos a bajarnos el archivo "meterpreter.exe" dentro de la carpeta Temp con el comando "copy":
En mi caso quedaria de la siguiente forma:
Ejecutamos:
Y ahora vamos a irnos a Metasploit Framework para ponernos en escucha:
Seteamos el modulo multiuso "multi/handler":
Seteamos el payload que le especificamos al payload con msfvenom:
Y seteamos las opciones de LHOST y LPORT, osea el LHOST y el LPORT que le especificamos al exploit que creamos anteriormente:
Y nos ponemos en escucha con el comando "run":
Y ahora podemos ejecutar el exploit dentro de la reverse shell que obtuvimos:
Volvemos a Metasploit Framework:
Ahora dentro de la shell de meterpreter, vamos a irnos a la ruta absoluta de "C:\Program Files (x86)" y listamos los directorios:
Podemos ver la carpeta "TeamViewer", por lo que se encuentra instalado Team Viewer dentro de esta máquina, dentro de Metasploit Framework hay un modulo que nos permite enumerar las credenciales de Team Viewer de una sesión que tengamos, para utilizarlo primero vamos a dejar en segundo plano la sesión de meterpreter que obtuvimos con el comando "background":
Y vamos utilizar el modulo "post/windows/gather/credentials/teamviewer_passwords":
Vamos a especificarle el numero de la sesión que tenemos en segundo plano, en mi caso, es la sesión 1:
Ejecutamos:
Nos encontró las credenciales "!R3m0te!" por lógica y sentido común, vistas las credenciales anteriormente encontradas y además del usuario por el que obtuvimos acceso al CMS Umbraco, daríamos por sentado que el usuario es "Administrator", asi que para logearnos dentro de Team Viewer, vamos a utilizar la herramienta de Kali "evil-winrm" que nos permite acceder de forma remota a una maquina, siempre y cuando tengamos las credenciales
Utilizamos el siguiente comando:
Ejecutamos:
Y ya tendremos acceso con el usuario Administrator
3.2 Obtención de la flag root
3.2 Obtención de la flag rootLa flag de root, se encuentra dentro de la ruta absoluta "C:\Users\Administrator\Desktop\root.txt", vamos a visualizarla con "cat" o "type", en mi caso utilizare "cat", ya que se trata de una consola PowerShell:
Con esto, concluimos la maquina "Remote" de Hack The Box
Espero te haya sido de ayuda este Write Up :)
Si tuviste alguna dificultad a la hora de resolverlo, no olvides contactarme en mis redes sociales
Última actualización
