Notas de Luis

Haremos el reconocimiento con nmap:

Vamos al puerto 80 y nos encontramos con esta web:

Una vez en esta web, vamos a hacer fuzzing con gobuster en busca de directorios:

gobuster dir -w /usr/share/dirbuster/wordlists/directory-list-2.3-medium.txt -u http://10.10.37.34/

Y vemos que nos encuentra un robots.txt si le pasamos el parámetro -x para buscar por extensiones de archivos, por lo que vamos a acceder:

Y vemos que nos dicen algo de una flag:

Y si buscamos la ruta donde vemos ese allow, podemos acceder a la flag:

Y si vamos a la otra dirección vemos que no nos deja acceder:

Ahora, si vamos a la página principal y revisamos el código fuente, veremos que se hace un llamamiento a archivos .php del sistema, por lo que posiblemente estemos ante un path traversal o local file inclusion:

Por tanto vamos a probarlo:

Y ahora gracias a este local file inclusion, si podemos leer el archivo de antes que no podíamos acceder a él en el robots.txt:

Ahora que tenemos estas credenciales del protocolo ftp, vamos a probar en iniciar sesión:

 ftpuser:givemefiles777

Y ya estamos dentro:

Y vemos que hay una carpeta files que tiene permiso de escritura, por lo que podríamos subir algo malicioso y leerlo posteriormente a través del local file inclusion:

Ahora el objetivo es ganar acceso a la máquina remota, por lo que tenemos aquí una carpeta llamada files a la que tenemos permisos de escritura, por lo que podemos subir un archivo PHP malicioso que nos proporcione una reverse shell aprovechándonos de LFI. Por lo que usamos este código:

Lo editamos y añadimos nuestra IP y puerto por el cual estaremos con netcat escuchando:

Y lo subimos:

Por tanto ahora desde el navegador ponemos esta url llamando al fichero php malicioso:

Y ya hemos obtenido la reverse shell:

Ahora para encontrar la flag 3, nos ubicamos dentro de la carpeta del servidor web por donde hemos entrado (aunque también podríamos buscar la flag con find, y nos encontramos con ella):

Ahora podemos ver que como el usuario toby podemos ejecutar cualquier comando:

Si preguntamos a la inteligencia artificial cómo convertirnos en el usuario toby en este contexto, nos da estas instrucciones:

Por tanto lo probamos y podemos ejecutar un comando como toby:

Por tanto vamos a lanzar una bash desde toby:

En el directorio personal del usuario toby tenemos la flag 4:

Dentro del directorio personal del usuario Toby nos encontramos que hay una nota que dice algo de una tarea cron:

Y aquí nos encontramos con un script donde tenemos permisos de escritura, llamado cow.sh:

Y esto es lo que hace el script:

Por tanto ahora podemos escalar privilegios editando este script y añadiendo código para que nos envíe una shell reversa:

Y nos ponemos en escucha con netcat y recibimos la reverse shell gracias a que este script se ejecuta por estar como tarea cron; y recibimos una shell como el usuario mat:

Y obtenemos la flag 5:

Y tenemos esta nota donde nos dice que tenemos permisos para ejecutar código python como root:

En la carpeta scripts tenemos dos scripts de python donde tenemos permisos de escritura y ejecución:

Además, si ejecutamos el comando sudo -l nos encontramos con que podemos ejecutar el script will_script.py como will:

Y este es el contenido de ambos scripts, donde vemos que uno llama al otro:

Por tanto, editamos el contenido de cmd.py para poner un comando que lance una bash como el usuario Will:

Por tanto ejecutamos el comando que nos salía al poner sudo -l y nos convertirmos en will:

sudo -u will /usr/bin/python3 /home/mat/scripts/will_script.py *

Por último, vemos que el usuario Will se encuentra dentro del grupo adm:

Por tanto vamos a buscar archivos que se encuentren dentro del grupo adm con el comando find:

find / -group adm 2>/dev/null

Y nos encuentra una key en base64:

Si visualizamos esta key, vemos que está en base64, pero podemos decodificarla:

Por tanto vamos a pegar este contenido de la clave id_rsa en nuestra máquina atacante y lo usamos para acceder vía ssh a la máquina víctima como root:

computing/hacking/ctf/tryhackme/maquina_watcher.txt · Última modificación: por 127.0.0.1