En este writeup comenzamos a resolver máquina de la plataforma Dockerlabs, y en esta ocasión empezamos por el nivel más sencillo resolviendo la máquina Trust de dificultad «Muy fácil».
Resumen de conceptos trabajados:
Escaneo de Puertos Búsqueda Directorios ocultos Fuerza bruta de contraseñas con hydra Escalada de privilegios |
Si quieres conocer más sobre la plataforma Dockerlabs y ver cómo se configura, etc, en este post te cuento cómo hacerlo.
Una vez hemos descargado en nuestra máquina la máquina víctima de Dockerlabs y desplegada en nuestro entorno siguiendo los pasos anteriores que menciono en el post, empezamos con el escaneo.
Lo primero que te recomiendo hacer es acceder a la página de Dockerlabs, buscar la máquina Trust y descargarla en tu equipo.
Después, mi procedimiento por ejemplo es, siempre como usuario root «sudo su», dentro de una carpeta que he llamado DOCKERLABS, crear otra carpeta con «mkdir» con el nombre de la máquina (en este caso TRUST). Después lo que he hecho es mover el .zip descargado de la carpeta Downloads a la nueva carpeta TRUST mediante el comando:
mv trust.zip /home/kali/DOCKERLABS/TRUST
Una vez movido el zip allí, lo que hago es descomprimirlo:
unzip trust.zip
Y así se descomprimen los ficheros de deploy y .tar con los que empezar a levantar la máquina.
A continuación con el siguiente comando desplegamos la máquina con su IP:
bash auto_deploy.sh trust.tar
Estructura del contenido
ENUMERACIÓN -> ESCANEO DE PUERTOS
Para asegurarte de que están conectado a la máquina víctima lo que puedes hacer es, o bien lanzas un PING o directamente un nmap para ver si está activa.
ping -c 1 172.17.0.2 -R
-R (para ver el trace route con el nodo intermediario)
Otra opción para ver si la máquina está activa, es ejecutando el comando:
nmap -sn 172.17.0.2
En cualquiera de los casos vemos que la máquina responde y está activa con un TTL de 64 (TimeToLive -1 del nodo intermediario =63) por lo tanto máquina Linux.
Lanzamos un escaneo para analizar puertos abiertos en esta IP y exportamos la evidencia en un archivo Normal Output llamado Escaneo, así:
nmap -sCV -p- --open --min-rate 5000 -n -vvv -Pn 172.17.0.2 -oN Escaneo
Detectados tras el escaneo, los puertos abiertos:
- 22 ssh
- 80 HTTP puerto web
Personalmente me gusta empezar a analizar el puerto 80 para ver qué encontramos en la página web:
A priori no se ve nada interesante en la página, pese a analizar el código fuente, el fichero robots.txt, etc, por lo que vamos a hacer descubrimiento de directorios internos dentro del site para ver qué carpetas o archivos abiertos podemos encontrar.
BÚSQUEDA DIRECTORIOS INTERNOS
Aplicar fuerza bruta a nivel de directorios a través de gobuster que tira contra un diccionario de posibles rutas donde le pedimos que encuentre ficheros pdf, html, etc:
gobuster dir -u http://172.17.0.2/ -w /usr/share/wordlists/dirbuster/directory-list-lowercase-2.3-medium.txt -x php,pdf,html
Nos encuentra dos con estado 200:
- Index.html
- Secret.php
El primero nos devuelve simplemente la web, y el segundo http://172.17.0.2/secret.php
Por la parte web, podríamos darlo por finalizado ya que según la página “no se puede hackear” por lo que la otra opción es acceder a través del puerto 22 por SSH con el usuario Mario.
APLICACIÓN DE FUERZA BRUTA CON HYDRA
Tenemos el posible usuario Mario, pero no tenemos la password, por lo que podríamos hacer un ataque de fuerza bruta con hydra para encontrar la contraseña basándonos en un diccionario como es el famoso “rockyou”.
Por tanto, aplicamos este comando:
hydra -l mario -P /usr/share/wordlists/rockyou.txt ssh://172.17.0.2
Ya tenemos la pass por lo que vamos a entrar con el usuario y contraseña.
Si ejecutamos el comando “sudo -l”, listado los permisos de sudo para el usuario Mario.
(ALL) /usr/bin/vim
: significa que «mario» puede ejecutar el comando /usr/bin/vim
(el editor de texto Vim) con privilegios de superusuario usando sudo.
ESCALADA DE PRIVILEGIOS EN VIM
Entonces ahora para ver cómo escalar privilegios en Vim podemos ir a gtfobins y encontrar la forma: https://gtfobins.github.io/gtfobins/vim/#sudo
Añadimos el parámetro como usuario root y ya entraríamos con la Shell sh como usuario root.