Haremos el reconocimiento con nmap: {{pasted_image_20230605111648.png|}} Vamos al puerto 80 y nos encontramos con esta web: {{pasted_image_20230605111756.png|}} 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: {{pasted_image_20230605114127.png|}} Y vemos que nos dicen algo de una flag: {{pasted_image_20230605112845.png|}} Y si buscamos la ruta donde vemos ese allow, podemos acceder a la flag: {{pasted_image_20230605112927.png|}} Y si vamos a la otra dirección vemos que no nos deja acceder: {{pasted_image_20230605113008.png|}} 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: {{pasted_image_20230605113221.png|}} Por tanto vamos a probarlo: {{pasted_image_20230605113430.png|}} {{pasted_image_20230605113444.png|}} 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: {{pasted_image_20230605113659.png|}} Ahora que tenemos estas credenciales del protocolo ftp, vamos a probar en iniciar sesión: ftpuser:givemefiles777 Y ya estamos dentro: {{pasted_image_20230606092920.png|}} 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: {{pasted_image_20230606093347.png|}} 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: {{pasted_image_20230609171842.png|}} Lo editamos y añadimos nuestra IP y puerto por el cual estaremos con netcat escuchando: {{pasted_image_20230609172058.png|}} Y lo subimos: {{pasted_image_20230609171925.png|}} Por tanto ahora desde el navegador ponemos esta url llamando al fichero php malicioso: {{pasted_image_20230609172339.png|}} Y ya hemos obtenido la reverse shell: {{pasted_image_20230609172403.png|}} 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): {{pasted_image_20230609172644.png|}} Ahora podemos ver que como el usuario toby podemos ejecutar cualquier comando: {{pasted_image_20230609173404.png|}} Si preguntamos a la inteligencia artificial cómo convertirnos en el usuario toby en este contexto, nos da estas instrucciones: {{pasted_image_20230609173616.png|}} Por tanto lo probamos y podemos ejecutar un comando como toby: {{pasted_image_20230609173640.png|}} Por tanto vamos a lanzar una bash desde toby: {{pasted_image_20230609173701.png|}} En el directorio personal del usuario toby tenemos la flag 4: {{pasted_image_20230609173800.png|}} Dentro del directorio personal del usuario Toby nos encontramos que hay una nota que dice algo de una tarea cron: {{pasted_image_20230610125533.png|}} Y aquí nos encontramos con un script donde tenemos permisos de escritura, llamado cow.sh: {{pasted_image_20230610125613.png|}} Y esto es lo que hace el script: {{pasted_image_20230610125727.png|}} Por tanto ahora podemos escalar privilegios editando este script y añadiendo código para que nos envíe una shell reversa: {{pasted_image_20230610130336.png|}} 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: {{pasted_image_20230610130410.png|}} Y obtenemos la flag 5: {{pasted_image_20230610130626.png|}} Y tenemos esta nota donde nos dice que tenemos permisos para ejecutar código python como root: {{pasted_image_20230610130701.png|}} En la carpeta scripts tenemos dos scripts de python donde tenemos permisos de escritura y ejecución: {{pasted_image_20230610130812.png|}} Además, si ejecutamos el comando sudo -l nos encontramos con que podemos ejecutar el script will_script.py como will: {{pasted_image_20230610132146.png|}} Y este es el contenido de ambos scripts, donde vemos que uno llama al otro: {{pasted_image_20230610132451.png|}} Por tanto, editamos el contenido de cmd.py para poner un comando que lance una bash como el usuario Will: {{pasted_image_20230610132405.png|}} 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 * {{pasted_image_20230610132635.png|}} Por último, vemos que el usuario Will se encuentra dentro del grupo adm: {{pasted_image_20230610132749.png|}} 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: {{pasted_image_20230610132949.png|}} Si visualizamos esta key, vemos que está en base64, pero podemos decodificarla: {{pasted_image_20230610133048.png|}} 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: {{pasted_image_20230610133240.png|}}