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.

Captura de pantalla (634)

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”.

primera

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!!.

cuarta

Una vez dentro, se veía esto.

Captura de pantalla (635)

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.

Captura de pantalla (636)

Y al parecer hay un usuario con más privilegios que admin, me tenía que convertir en él para poder subir un archivo.

Captura de pantalla (636)

Viendo esto me decanté por darle en la sección de “accounts” y vi que la URL me reportaba un ID que era 1.

Captura de pantalla (638)

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.

burpsuite

El ID del usuario superadmin era el 30, intercepte otra petición pero esta vez de la sección “uploads”.

Captura de pantalla (639)

Cambie los datos del parámetro user y puse el del usuario superadmin.

Captura de pantalla (640)

Le di clic a “forward” y me redirigió a la página de subida de archivos.

Captura de pantalla (641)

Subí una reverse Shell en PHP, utilice la de Pentestmonkey.

Captura de pantalla (642)

Volví a interceptar la petición.

Captura de pantalla (643)

Cambie el parámetro “user” de la petición, al del superadmin.

Captura de pantalla (644)

Le di clic a forward para emitirla y subir el Shell inverso.

Captura de pantalla (645)

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í.

revershell

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.

robert

Probé a autenticarme por SSH, ya que la máquina lo tenía abierto y funciono.

sshrobert


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.

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.

rootflag

Leave a comment