Machine IP : 10.10.10.165
DATE : 08/07/2021
Matriz de la maquina
Esta matriz nos muestra las características de explotación de la maquina.

Reconocimiento
Primero hacemos un escaneo de puertos para saber cuales están abiertos y conocer sus servicios correspondientes.
Nmap
Usamos el siguiente comando para escanear todos los puertos de una manera rapida.
1
nmap -p- --open -T5 -v -n -Pn 10.10.10.165
Posteriormente utilizamos este comando con los puertos del anterior escaneo para saber las versiones de cada servicio.
1
nmap -sC -sV -n -p22,80 -Pn 10.10.10.165
Nos arroja este resultado:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
~/HTB/traverxex 59s ❯ nmap -sC -sV -n -p22,80 -Pn 10.10.10.165 59s
Host discovery disabled (-Pn). All addresses will be marked 'up' and scan times will be slower.
Starting Nmap 7.91 ( https://nmap.org ) at 2021-07-05 05:16 EDT
Nmap scan report for 10.10.10.165
Host is up (1.1s latency).
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 7.9p1 Debian 10+deb10u1 (protocol 2.0)
| ssh-hostkey:
| 2048 aa:99:a8:16:68:cd:41:cc:f9:6c:84:01:c7:59:09:5c (RSA)
| 256 93:dd:1a:23:ee:d7:1f:08:6b:58:47:09:73:a3:88:cc (ECDSA)
|_ 256 9d:d6:62:1e:7a:fb:8f:56:92:e6:37:f1:10:db:9b:ce (ED25519)
80/tcp open http nostromo 1.9.6
|_http-server-header: nostromo 1.9.6
|_http-title: TRAVERXEC
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 73.06 seconds
Podemos observar dos puertos abiertos, el 22 que pertenece a ssh y el 80 que es un http con la version nostromo 1.9.6, procederemos a revisar la web que corre en el servicio http y haremos una busqueda de directorio con gobuster.
Luego de fuzzear la web con gobuster, no encontré nada interesante, por eso busqué la version y teconología web que utiliza esta web con el comando
1
whatweb 10.10.10.165
Me arroja el siguiente resultado
1
http://10.10.10.165 [200 OK] Bootstrap, Country[RESERVED][ZZ], HTML5, HTTPServer[nostromo 1.9.6], IP[10.10.10.165], JQuery, Script, Title[TRAVERXEC]
Luego de buscar la version nostromo 1.9.6 en google encontre un cve de una vulnerabilidad RCE(Remote Code Execution).

Copié el codigo a un archivo .py y ejecuté el script, luego me dio una shell como www-data y haciendole el tratamiento de la tty, quedaría así.

Luego de un momento de analizar directorio por directorio encontré archivos de configuracion que tenian el hash de david, un usuario del sistema, y tenia rutas de directorios ocultos pertenecientes a david.

Con el hash encontré utilizé john para poder crackearlo y obtuve Nowonly4me como password, que seria la clave de acceso a la pagina protected-file-area, que está dentro del directorio www_public del usuario david.

Luego de desencriptarlo…

Luego de acceder a la pagina con el usuario david y contraseña Nowonly4me, pude descargar el comprimido que contenia la clave privada de david.

Luego hize el mismo procedimiento para obtener la password, usé ssh2john para crackear la password y con el id_rsa pude logearme via ssh y obtener el user.txt.

Escalamiento de privilegios
Luego de obtener acceso como el usuario david, probé con sudo -l para listar los binarios que se pueden ejecutar como sudo, pero no encontré nada, luego inspeccioné los binarios con permisos SUID, pero tampoco encontré un vector de ataque.
Pero inspeccionando los directorios de david, dentro de la carpeta bin encontré dos archivos, uno server-stats.head y el otro server-stats.sh, dentro del head no habia más que un banner, y en el otro habian comandos llamando a binarios, en la ultima linea llamaba a sudo.

El script devuelve las últimas 5 líneas de los registros del servicio nostromo usando journalctl. Esto es explotable porque journalctl invoca el buscador predeterminado, que probablemente sea less. El comando less muestra la salida en la pantalla del usuario y espera la entrada del usuario una vez que se muestra el contenido. Este puede explotarse ejecutando un comando de shell.
Ejecutamos el comando para invocar a less
1
/usr/bin/sudo /usr/bin/journalctl -n5 -unostromo.service
Y en esta ventana de input ingresamos !/bin/bash para invocar una shell como root.

Conclusiones
Fue una maquina agradable con debilidades que, por desgracia, siguen siendo muy comunes por ahí.
Algunas reflexiones y conclusiones de este pentest:
Usar una política de contraseñas fuerte y monitorear diariamente si se publican vulnerabilidades para las aplicaciones/bibliotecas/plugins/firmware que tienes en producción.
utiliza herramientas de código abierto que todavía se mantienen y que están respaldadas por una comunidad fuerte.
Almacene sus claves privadas en un repositorio protegido por una autenticación multifactorial. No las dejes “en línea” si no es necesario y no pienses que nadie las encontrará sólo porque crees que las escondiste bien.
Evita jugar con la configuración de sudo si no estás seguro de lo que haces y de cómo se puede abusar de ello. Echa un vistazo a GTFObins para empezar…
Gracias por leer, Happy hacking and always try harder!
