HTB — Laboratory
Iniciamos con el clásico escaneo de puertos, para identificar los puertos abiertos. Una vez que tenemos la lista de puertos abiertos analizamos el resultados e iniciamos las pruebas.
Algo interesante son los vhost:
- laboratory.htb
- git.laboratory.htb
Los agregamos al archivos hosts en linux o windows.
Ingresando al portal se puede ver que el dominio laboratory.htb no muestra nada y no se tiene pistas que puedan ayudar.
Pero el siguiente portal nos muestra un GitLab (repositorio de código), una vez registrado y revisando la versión, resulta que es vulnerable a RCE. Para facilitarme el trabajo busque si metasploit tiene algún exploit.
Configuramos las variables que nos pide metasploit y explotamos la vulnerabilidad.
Ahora que tenemos shell, busquemos opciones de subir privilegios. Al usar el comando mount, me doy cuenta que es un docker donde nos encontramos, trate de subir privilegios pero ningún método que encontraba funcionaba.
Después de una larga búsqueda de como explotar el docker, encontré la opción de enumerar usuarios en metasploit que no funciona pero me dio la idea para seguir buscando pistas.
Asi que busque algo de la documentacion de gitlab.
Con este comando listaremos los usuarios administrador, para realizar esto debemos tener permisos de ejecutar el comando gitlab-rails.
$ ./usr/bin/gitlab-rails console -e production
>>> User.admins
Ahora que tenemos el usuario administrador necesitamos cambiarle la contraseña.
Para cambiarle la contraseña al administrador se necesitan los siguientes comandos.
gitlab-rails console -e production
user = User.where(id: 1).first
user.password = 'password'
user.password_confirmation = 'password'
user.save!
Validamos nuestras credenciales de administrador ingresando al portal y veamos que tiene este usuario dexter que es el administrador. Revisando el contenido de los repositorios me encuentro con unas llaves SSH.
Ahora que se tiene unas llaves SSH probemos si nos funciona. Pero después de algunas pruebas ya se tiene acceso al servidor.
Con mucho tiempo invertido ya se tiene un usuario para poder escalar privilegios, veamos si tenemos permisos de algún SUID.
find / -perm -u=s -type f 2>/dev/null
De todas las opciones solo un ejecutable es el que me llamo la atención, antes de eso use linpeas.sh y LinEnum.sh que son herramientas interesantes pero fue mucha información para analizar.
Despues de hacer pruebas sobre el ejecutable docker-security el comando LTRACE fue el que me ayudo a continuar con la explotación y elevación de privilegios.
Para poder elevar privilegios en el foro de HTB facilitaron algunas pistas muy rebuscadas, pero el objetivo es explotar las rutas (PATH) de los binarios utilizados por docker-security.
Primero realice algunas pruebas con el path del binario usaba el archivo chmod que había creado.
Ahora que funciona y se ejecuta el comando chmod, inyectemos algo mas interesante para tener shell.
Un reto que me llevo mucho tiempo y no era tan fácil en la etapa de explotación tiene su dificultad pero al entender el funcionamiento ya todo es sencillo.
Happy hacking.