Oopsie - HackTheBox
Inicie con un escaneo de Nmap para ver que puertos tiene abiertos la máquina.
┌─[root@parrot]─[/home/wackyhacker/Desktop]
└──╼ nmap -sS --min-rate=5000 -v -Pn -n 10.10.10.28 -oG allPorts
Starting Nmap 7.80 ( https://nmap.org ) at 2021-06-30 15:22 CEST
Initiating SYN Stealth Scan at 15:22
Scanning 10.10.10.28 [1000 ports]
Discovered open port 22/tcp on 10.10.10.28
Discovered open port 80/tcp on 10.10.10.28
Completed SYN Stealth Scan at 15:22, 0.46s elapsed (1000 total ports)
Nmap scan report for 10.10.10.28
Host is up (0.12s latency).
Not shown: 998 closed ports
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
Read data files from: /usr/bin/../share/nmap
Nmap done: 1 IP address (1 host up) scanned in 0.57 seconds
Raw packets sent: 1128 (49.632KB) | Rcvd: 1008 (40.328KB)
Una vez el escaneo finalizado hice otro escaneo para detectar la versión y servicio de cada puerto encontrado.
┌─[root@parrot]─[/home/wackyhacker/Desktop]
└──╼ nmap -sC -sV -p22,80 10.10.10.28 -oN targeted
Starting Nmap 7.80 ( https://nmap.org ) at 2021-06-30 15:23 CEST
Nmap scan report for 10.10.10.28
Host is up (0.11s latency).
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 7.6p1 Ubuntu 4ubuntu0.3 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 2048 61:e4:3f:d4:1e:e2:b2:f1:0d:3c:ed:36:28:36:67:c7 (RSA)
| 256 24:1d:a4:17:d4:e3:2a:9c:90:5c:30:58:8f:60:77:8d (ECDSA)
|_ 256 78:03:0e:b4:a1:af:e5:c2:f9:8d:29:05:3e:29:c9:f2 (ED25519)
80/tcp open http Apache httpd 2.4.29 ((Ubuntu))
|_http-server-header: Apache/2.4.29 (Ubuntu)
|_http-title: Welcome
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 10.91 seconds3
Tenía un Servidor y un servicio SSH que poco podía hacer en él, probé a hacer fuzzing para ver si hay algún directorio potencial.
┌─[root@parrot]─[/home/wackyhacker/Desktop]
└──╼ gobuster dir -u http://10.10.10.28/ -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -t 20
===============================================================
Gobuster v3.0.1
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@_FireFart_)
===============================================================
[+] Url: http://10.10.10.28/
[+] Threads: 20
[+] Wordlist: /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt
[+] Status codes: 200,204,301,302,307,401,403
[+] User Agent: gobuster/3.0.1
[+] Timeout: 10s
===============================================================
2021/06/30 20:22:13 Starting gobuster
===============================================================
/images (Status: 301)
/themes (Status: 301)
/uploads (Status: 301)
/css (Status: 301)
/js (Status: 301)
/fonts (Status: 301)
Progress: 4146 / 220561 (1.88%)^C
[!] Keyboard interrupt detected, terminating.
===============================================================
2021/06/30 20:22:27 Finished
===============================================================
El directorio “uploads” quise pensar que se tendrá que apuntar a algún archivo más adelante, mire el servidor web.
Encontré una ruta en el código fuente que me llamo mucho la atención que ponía /cdn-cgi/login/script.js, quite el script.js, copie la ruta y la puse junto a la IP de la máquina y me reporto un panel de “Log In”.
Tras un tiempo de investigación sobre este panel, no encontré nada critico sobre él y tuve que ver esta parte en otro Write Up, al parecer las credenciales de acceso son de la máquina anterior del “Starting Point”, es decir ArcheType, el nombre de usuario es admin y la contraseña MEGACORP_4dm1n!!.
Una vez dentro, se veía esto.
La sección que me llamo especialmente la atención era “uploads”, le di un clic para ver si me permitía subir algún archivo.
Y al parecer hay un usuario con más privilegios que admin, me tenía que convertir en él para poder subir un archivo.
Viendo esto me decanté por darle en la sección de “accounts” y vi que la URL me reportaba un ID que era 1.
Este ID correspondía al usuario admin en el que estaba, pensé en hacer fuerza bruta y quizás sacar un ID de otro usuario y con un poco de suerte el del usuario con más privilegios, para ello cree un secuenciador del 0 al 100 para el diccionario, lo exporte a un archivo dic.txt y ahora solo faltaba interceptar la petición con BurpSuite y mandarla al “intruder”, seleccione “sniper” como tipo de ataque y el “payload” a atacar, en este caso el ID, comencé el ataque y al fin encontré el usuario superadmin en una respuesta del lado del servidor diferente a las otras.
El ID del usuario superadmin era el 30, intercepte otra petición pero esta vez de la sección “uploads”.
Cambie los datos del parámetro user y puse el del usuario superadmin.
Le di clic a “forward” y me redirigió a la página de subida de archivos.
Subí una reverse Shell en PHP, utilice la de Pentestmonkey.
Volví a interceptar la petición.
Cambie el parámetro “user” de la petición, al del superadmin.
Le di clic a forward para emitirla y subir el Shell inverso.
Ahora bien donde se ha subido, pues si recordamos al principio de todo hicimos “fuzzing” para encontrar directorios potenciales, había uno llamado “uploads”, probé a apuntar a ese directorio con el nombre del Shell inverso y abrir el puerto 443 por NC para recibir la conexion, y efectivamente estaba ahí.
Hice un tratamiento de la TTY para manejarme por la Shell más cómodamente e intenté visualizar la “flag” del usuario, al parecer no tenía permisos, había un usuario llamado Robert, pensé que me tenía que convertir en ese usuario para poder visualizarla, tras una pequeña búsqueda en el sistema conseguí encontrar un archivo en /var/www/html que tenía unas credenciales junto al usuario Robert.
Probé a autenticarme por SSH, ya que la máquina lo tenía abierto y funciono.
ESCALADA DE PRIVILEGIOS
Visualice la flag, y ahora ya solo faltaba la escalada de privilegios, encontré un binario llamado bugtracker, tras intuir lo que hacía vi que se estaba ejecutando un cat por detrás y al parecer no estaba apuntando desde su ruta absoluta, por lo que esto era un PATH hijacking como una casa, cree un archivo llamado cat con “/bin/bash” de contenido y modifique el PATH para que apunte al directorio en el que estoy ahora, le di permisos de ejecución al archivo y ejecute el binario bugtracker y me convertí en el usuario ROOT.
Intente visualizar la flag, pero parecía que no tenía nada, tuve que codificarla en hexadecimal y las dos pociones del final juntas conforman la flag del usuario ROOT.
Leave a comment