Hackthebox — Writeup SolidState No/MSF

Israel Aráoz Severiche
5 min readNov 28, 2020

--

Estamos en al recta final de la lista de OS Linux de TJnull at NetSec Focus , por ahora y en el proceso de aprendizaje se va creando un “mindset” de que tipo de acceso inicial y escalada de privilegio.

Para el acceso inicial se ejecuto previamente un exploit RCE , esto permitió crear un usuario, y con este usuario cambiar contraseña de los usuarios para listar sus bandejas de entrada y correos, en este proceso se obtuvo usuario y contraseña para una conexión ssh, la escalada de privilegio es una ejecución condicionada de una tarea programada y un archivo que tiene permisos de escritura para todos los usuarios, digamos que es una condición bidireccional en este escenario.

Después de ordenar los horarios para tener un poco más de tiempo continuamos con el equipo de preparación hacia el OSCP, solo recuerdo el mantra ”Disfruta el proceso”, y aplico esa frase en todos los aspectos, por ejemplo entrenamiento.

Identificación de puertos y servicios

Como es necesario, primero debemos identificar todos los puertos y servicios activos en el equipo “Solidstate”

nmap -sC -sV -p22,25,80,110,119,4555 --min-rate=4500 -oA solidstate.services -Pn 10.10.10.51
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 7.4p1 Debian 10+deb9u1 (protocol 2.0)
| ssh-hostkey:
| 2048 77:00:84:f5:78:b9:c7:d3:54:cf:71:2e:0d:52:6d:8b (RSA)
| 256 78:b8:3a:f6:60:19:06:91:f5:53:92:1d:3f:48:ed:53 (ECDSA)
|_ 256 e4:45:e9:ed:07:4d:73:69:43:5a:12:70:9d:c4:af:76 (ED25519)
25/tcp open smtp JAMES smtpd 2.3.2
|_smtp-commands: solidstate Hello nmap.scanme.org (10.10.14.37 [10.10.14.37]),
80/tcp open http Apache httpd 2.4.25 ((Debian))
|_http-server-header: Apache/2.4.25 (Debian)
|_http-title: Home - Solid State Security
110/tcp open pop3 JAMES pop3d 2.3.2
119/tcp open nntp JAMES nntpd (posting ok)
4555/tcp open james-admin JAMES Remote Admin 2.3.2
Service Info: Host: solidstate; OS: Linux; CPE: cpe:/o:linux:linux_kernel

Enumeración

Analizando los servicios que estan activos, el primero que me llamó la atención fue “James Remote Admin 2.3.2”

El exploit crea un usuario a nivel del servicio

Se ejecuta el exploit y crea una cuenta

Una vez ejecutado el exploit procedemos a conectarnos con el usuario por defecto “root”

Listamos todos los usuarios

Para acceder a cada buzón es necesario conocer la contraseña o “reiniciarla”

setpassword [user] [new-password]

La forma seria la siguiente, el comando setpassword [user] [new-password], ahora, es hora de revisar si hay algo en cada uno de los buzones para continuar.

El pobre james, solo se dedicaba a mandar correo, no tiene nada en su bandeja

Thomas es el típico usuario que solo se conecta, no recibe ni envía correos (jajaj)

Bueno parece que aqui ya comienza lo interesante, James (jaimito) le envia un correo a John (Juancito)

Accedemos al buzon de Mindy y encontramos 2 mensajes, el mas importante es el segundo en el cual se identifican user & password

username: mindy
pass: P@55W0rd1!2@

Acceso Inicial

Con el usuario y contraseña identificados, se procedió a acceder al equipo

El acceso estaba restricto a la ejecución de ciertos comandos, por ejemplo whoami, id, hostname, ifconfig y otros.

Escalada de Privilegio

En este proceso, yo, al menos tengo un orden de ejecución y seguramente varia al de muchos, si estas leyendo este articulo, coméntame cual es tu path de enumeración para la escalada de privilegios :)

sudo -l
find / -perm -u=s -type f 2>/dev/null

debido a la restricion de la shell, enumerar de forma manual se complicaba

Una forma de escapar de rbash restricto es

ssh mindy@10.10.10.51 -t 'bash --noprofile'

Ahora ya podemos ejecutar algunos comandos, podes ver todas las técnicas en el siguiente enlace

Se identifico un archivo en python que tiene permiso de escritura para todos, vamos uniendo los puntos.

Confirmamos los permisos

Ahora a esperar que se ejecute la tarea

Conclusión

No es recomendable enviar credenciales de acceso vía correo electrónico, en todo caso la contraseña debe cambiarse en el primer acceso, se debe actualizar la versión del servicio de James para evitar ejecución de comando remotos a traves del servicio vulnerable, sobre la escalada de privilegio eliminar permisos de escritura para todos los usuarios sobre los archivos creados o ejecutados por el usuario root

--

--

Israel Aráoz Severiche
Israel Aráoz Severiche

Written by Israel Aráoz Severiche

{💀Cybersecurity Engineer​​🐞 } / { 🥋​ Purple Belt Brazilian Jiu Jitsu } / {🌐​https://twitter.com/iara0z}

No responses yet