Introducción
En este write up de la máquina Kenobi, veremos temas cómo manipular una versión vulnerable de proftpd para ganar acceso inicial y escalar privilegios con binarios SUID
Acceso Inicial
Primero haremos un escaneo con Nmap con el comando sudo nmap -sS -sV -T4 IP
y esto nos muestra el output
también le podemos agregar un script de nmap, en este caso le agregamos el script llamado “vuln”
Podemos ver que hay varios puertos abiertos, así que empezamos a examinarlos en orden, partimos con el puerto 21(FTP) y si comprobamos la versión del PROFTPD con searchsploit para ver si hay exploits disponibles
Efectivamente hay exploits disponibles para la versión 1.3.5, el exploit “mod_copy” en resumen consiste en que cualquier usuario sin privilegios puede copiar cualquier archivo del sistema a cualquier destino, esto se puede aprovechar para mover directorios completos y obtener información sensible etc.
Ahora vamos a seguir examinando puertos, esta vez vamos a enumerar SMB shares con el comando nmap -p 445 --script=smb-enum-shares.nse,smb-enum-users.nse IP
este es el output
Solo tenemos acceso a Anonymous así que vamos a ver que hay dentro con el siguiente comando smbclient//ip/anonymous
hacemos un ls y vemos un archivo llamado “log.txt”
No podemos hacer cat ni nada similar para poder ver lo que hay dentro, entonces vamos a tener que hacer una descarga recursiva a nuestra máquina local con smbget el comando para hacerlo sería así smbget -R smb://<ip>/anonymous
Una vez descargado, podemos ir viendo que cosas interesantes encontramos dentro de “log.txt”, podemos ver que se han creado claves ssh(id_rsa), donde se encuentra el puerto del proftpd(21)
Ahora vamos a escanear RPC(111) con el comando nmap -p 111 --script=nfs-ls,nfs-statfs,nfs-showmount 10.10.112.6
y podemos ver que está montado “/var”
Nos conectamos con netcat al servidor de ProFTPD en el puerto 21
Y ahora copiamos el id_rsa de Kenobi al directorio /var/tmp/id_rsa
Ahora vamos a tener que montar el directorio /var/tmp en nuestra máquina con los siguientes comandos
1
2
3
mkdir /mnt/kenobiNFS
mount ip_maquina:/var /mnt/kenobiNFS
ls -la /mnt/kenobiNFS
Ahora podemos ir a /var/tmp y copiar la llave id_rsa de Kenobi a nuestra máquina y entrar via SSH
Escalando Privilegios
Ahora vamos a buscar ficheros SUID con el siguiente comando find / -perm -u=s -type f 2>/dev/null
Observamos algo fuera de lo común “/usr/bin/menu”
Lo ejecutamos y nos da 3 opciones, tampoco se puede ver el código fuente así que vamos a usar el comando “strings” para ver los caracteres legibles dentro de cualquier archivo y vemos que el binario no está corriendo con una ruta absoluta
Podemos abusar de esto de la siguiente manera
Nos vamos a /tmp, hacemos un echo /bin/sh dentro de curl, le damos los permisos correspondientes y modificamos la ruta para que lo primero que el script revise sea el directorio /tmp, quiere decir que el script cuando encuentre algo llamado “curl” en realidad va a estar ejecutando bash por lo tanto nos va a dar r00t
Y listo ;)