Hacemos el reconocimiento con nmap:
{{pasted_image_20230702115218.png|}}
Vemos que por el puerto 3333 corre un servidor web, por lo que debemos ponerlo en el buscador y accedemos:
{{pasted_image_20230702115231.png|}}
Ahora vamos a hacer fuzzing a esta página web en busca de directorios, donde nos encontramos con el directorio internal:
{{pasted_image_20230702115246.png|}}
Lo probamos en la web y podemos acceder a una web donde podemos subir algún archivo:
{{pasted_image_20230702115300.png|}}
Probamos en crear un archivo .php malicioso para subirlo en la web:
{{pasted_image_20230702115320.png|}}
Pero si lo intentamos subir no nos deja:
{{pasted_image_20230702115332.png|}}
Por lo que tendremos que recurrir a burpsuite e interceptamos la petición justo en el momento de subir el archivo:
{{pasted_image_20230702115346.png|}}
Pero podemos probar en cambiarle el nombre por phtml y veremos que ahora sí nos lo acepta:
{{pasted_image_20230702115401.png|}}
{{pasted_image_20230702115409.png|}}
Y ahora si navegamos al directorio uploads, nos encontramos con el archivo malicioso que acabamos de subir:
{{pasted_image_20230702115421.png|}}
Y tenemos ejecución remota de comandos:
{{pasted_image_20230702115435.png|}}
Ahora url-encodeamos el comando para mandarnos una reverse shell y lo pegamos en la url mientras permanecemos en escucha con netcat:
{{pasted_image_20230702115446.png|}}
Y ya hemos recibido la shell reversa:
{{pasted_image_20230702115457.png|}}
Dentro del directorio de bill obtenemos la flag de user:
{{pasted_image_20230702115511.png|}}
Tras hacer una búsqueda de binarios con permisos de root, llama la atención el systemctl:
{{pasted_image_20230702115526.png|}}
Nos informamos en gtfobins cómo escalar privilegios con este binario y nos encontramos con esto:
{{pasted_image_20230702115536.png|}}
Por tanto vamos a crear un script con este contenido pero modificando la ruta absoluta del binario systemctl y poniendo también el comando para visualizar la flag de root dentro de /tmp/output:
#!/bin/bash
TF=$(mktemp).service
echo '[Service]
Type=oneshot
ExecStart=/bin/sh -c "cat /root/root.txt > /tmp/output"
[Install]
WantedBy=multi-user.target' > $TF
/bin/systemctl link $TF
/bin/systemctl enable --now $TF
Y lo ejecutamos:
{{pasted_image_20230702115559.png|}}
Y ahora tenemos un archivo llamado output con el contenido de la flag de root:
{{pasted_image_20230702121729.png|}}
Aunque también podríamos haber ejecutado el siguiente comando:
chmod u+s /bin/bash
Y de esta forma le habremos cambiado los permisos a la bash, para poder ejecutar el comando bash -p y obtener una bash como root:
{{pasted_image_20230702204101.png|}}