Task 1 Pwn
Para poder responder las primeras preguntas: Enumerate the machine. How many ports are open? y What service is running on port 21? Se puede utilizar el comando sudo nmap 10.10.182.83
Ahora para conocer la respuesta de la siguiente pregunta: What service is running on ports 139 and 445? Y seguir enumerando la máquina virtual utilice el comando: sudo nmap -p21,22,139,445 -A 10.10.182.83
Como podemos ver en la imagen anterior es posible conectarse al FTP de manera anónima por lo que procedemos a conectarnos usando el comando ftp 10.10.182.83, estando dentro del enumeramos las carpetas existentes, encontramos una que se llama scripts e ingresamos en ella.
Dentro de ella encontramos 3 archivos los descargamos para ver que hay dentro de ellos con el comando get NombreDeArchivo.
Al haber descargado todos los archivos comenzamos a ver que hay dentro de ellos:
El archivo removed_files.log muestra un mensaje repetido varias veces.
To_do.txt es un mensaje para el administrador recordándose que tener una conexión anónima en FTP no es seguro y claro que no lo es.
Clean.sh vemos un script escrito en bash, el cual al analizarlo vemos que es un script encargado de limpiar archivos en una carpeta específica y cuando no encuentra nada escribe el mensaje que encontramos en uno de los archivos anteriores.
Con esto que hemos obtenido y luego de haber enumerado los demás servicios de la máquina virtual (una búsqueda en Google buscando si existía alguna forma de aprovechar una vulnerabilidad en ellos) conocemos que este archivo clean.sh es un script que funciona automáticamente (cronjob), por lo que necesitamos modificarlo para obtener una reverse shell.
En este caso decidí utilizar una Bash reverse Shell:
Ya con el script modificado ejecutamos un listener nc -lvnp 4444 y luego subimos el script al servidor, para subirlo y mantener los permisos de este utilizamos el comando put clean.sh esto sin haber borrado el que estaba anteriormente ya que si lo borramos pierde sus permisos y al tratar de darle el permiso de ejecución nos indica permiso denegado, por lo que cuando hacemos el put sobreescribe y no pierde sus permisos.
Luego de hacer esto esperamos un poco y tendremos una Shell.
Con esta Shell comenzamos a enumerar, encontramos el archivo user.txt y la respuesta a la pregunta: There’s a share on the user’s computer. What’s it called?
Procedemos a ver el interior de este archivo user.txt para encontrar nuestra flag.
Escalar Privilegios:
Ahora nos toca elevar nuestros privilegios a usuario root para poder obtener la última flag:
Primero ejecute el comando sudo -l pero no dio un resultado útil por lo que procede a investigar si existe un archivo con SUID el cual nos puede ser útil:
Como se ve en la imagen anterior ejecute el comando find / -perm -u=s -type f 2>/dev/null para poder determinar los archivos con SUID en este resultado encontramos uno que puede ser útil, utilizando la página web https://gtfobins.github.io obtenemos los comandos a utilizar:
En este momento ya somos el usuario root así podemos ver el archivo root.txt