Esta vez tenemos un tutorial de una maquina básica «TryHackMe» que nos permite conocer los pasos iniciales de pentesting y el uso de las habitaciones de esta pagina con retos de ciberseguridad en maquinas virtuales alojadas en la nube.
Antes de empezar a comentar el reto debemos tener en cuenta que para acceder a las maquinas debemos conectarnos a su red mediante una conexión VPN, con OpenVPN, y que esta perfectamente explicado en la opción de acceso en la que nos podremos descargar nuestro fichero de configuración OpenVPN y podremos ver nuestra IP y la IP-Virtual de acceso a las salas.
Solo teniendo una conexión VPN podremos lanzar la maquina desde la sala «https://tryhackme.com/room/basicpentestingjt«, indicándonos la IP de acceso, que nos durara una hora y podremos ir incrementando el tiempo según vayamos necesitando. Nos indicara las tareas que debemos ir completando, nosotros definiremos las acciones de un pententing e iremos completando las tareas.
Enumeración
Lo primero sera encontrar los posibles servicios a explotar y lo realizaremos con nuestra herramienta nmap.
nmap -O -sS -Pn -sV 10.10.73.216
de forma que localizaremos los puertos abiertos y versiones del SO y los servicios que nos permitira localizar vulnerabilidades, lo que nos permitirá finalizar la tarea 2 del reto(«#2») que en este caso solo debemos indicar que se ha completado.
Con lo que descubrimos que es una maquina Linux, llamada BASIC2, y los puertos siguientes abiertos:
- 22 SSH y la versión es OpenSSH 7.2p2
- 80 HTTP con un Apache 2.4.18
- 139 y 445 Samba y detecta el grupo «WORKGROUP»
- 8009 ajp13 Apache Jserv
- 8080 http con Tomcat 9.0.7
Podemos ampliar la enumeración con el protocolo SAMBA (herramienta enum4linux» a ver si nos detecta algun usuario que se puede usar por ejemplo con SSH, y un análisis de la WEB.
WEB
Lo primero es conectarnos al navegador a ver si vemos algún formulario o punto de ataque, no se ve nada por lo que realizaremos una fuerza bruta de directorio con la herramienta (dirb)
dirb http:10.10.73.216
En este caso se encuentra el directorio development, que lo introduciremos en la pregunta (#3) sin ‘\’ como así lo indica y nos validara que es correcto.
Miramos este directorio y se encuentran dos archivos: dev.txt y j.txt. No viendo nada especialmente útil en ellos salvo un comentario de contraseñas débiles en Shadow pero para esto deberemos tener acceso root.
Samba
Realizaremos una enumeración del servicio SAMBA con la herramienta (enum4linux)
enum4linux 10.10.73.216
Y obtenemos que el grupo es «WORKGROUP» y es un servicor samba 4.3.11 en Ubunto, eso ya lo teniamos con nmap, que disponemos de Anonymous y que las restricciones de la clave es de al menos 5 caracteres y lo más importante ya que nos permitirá responder a la pregunta #4, #5 y #9 con los usuarios jan y kay.
Para descubrir el usuario de la pregunta #6 que es la clave de usuario «jan» que es el respondido en la pregunta #5 usaremos la fuerza bruta con (hydra) y el servicio ssh que era otro de los servicios abiertos.
hydra -l jan -P /usr/share/wordlists/rockyou.txt 10.10.73.216 ssh
Con la clave obtenida «armando» la respondemos en la pregunta #5 y nos conectamos con ssh para entrar en la maquina.
ssh jan@10.10.73.216
Dentro deberemos realizar una enumeración interna para localizar algún método de escalada de privilegios ya que vemos que ‘jan’ no tiene acceso de root. Al acceder con SSH confirmamos la pregunta #7 con la respuesta ssh. Y se inicia la enumeración en busca de vectores de ataque para la escalada de privilegios como nos piden en #8.
Vemos que ‘kay’ el otro usuario pertenece a más grupo y en especial al grupo sudo lo cual puede ser bueno acceder como kay.
grep sudo /etc/group
// Nos movemos un poco por los directorios de 'kay' a ver si localizamos algo.
cd ..
cd kay
ls -la
Vemos varias cosas interesante, una es el fichero «pass.bak», otra es el directorio .ssh y al entrar en el vemos un fichero id_rsa y que al realizar un cat parece ser la clave privada RSA que tiene pinta de ser la de SSH por lo que nos ponemos manos a la obra para obtener la clave y en este caso utilizaremos la herramienta john.
# Primero nos llevamos el fichero a nuestra maquina KALI que tiene la herramienta.
scp jan@10.10.73.216:/home/kay/.ssh/id_rsa id_rsa.orig
#Ahora convertimos la clave privada a un formato compatible con john.
python /usr/share/john/ssh2john.py id_rsa.orig > id_rsa.hash
john --wordlist=/usr/share/wordlists/rockyou.txt id_rsa.hash
Obtenemos, ya que estaba la clave en el diccionario, la clave beeswax que probaremos antes con ssh, a ver si es cierto que esta frase/clave es del ssh
# Desde la maquina con usuario jan
jan@basic2:/home/kay$ ssh -i .ssh/id_rsa kay@10.10.73.216
Entramos como kay y reconfirmamos que tenemos acceso sudo, por lo que probaremos si el fichero pass.bak es la clave, y lo probamos con «sudo -l y así ver que acceso tenemos descubriendo que son todos no tardamos más y ejecutamos «sudo su». rellenando la preguntas #9 (con kay) la #10 y la #11 con la frase de pass.bak (heresareallystrongpasswordthatfollowsthepasswordpolicy$$)
En principio ya hemos terminado pero si vamos al directorio de root nos encontramos con un fichero de bandera «flag.txt» y con esto si hemos logrado el reto completo.
Se indica que tenemos dos formas de acceder y de escalar privilegios, pero esto lo dejamos para otro momento, y como pista miraríamos vulnerabilidades de los servicios por ejemplo con «searchsploit» y usando metasploit.
Nos vemos en otra, y no olvidemos de dar a terminar para liberar los recursos de la maquina.