Search

Escribe para buscar.

en
HackTheBox: OpenAdmin

HackTheBox: OpenAdmin

Junior Restituyo
0xR3iko

Enumeración

Nmap

Para empezar, corremos un escaneo de Nmap para encontrar los puertos abiertos. Nada interesante además del puerto 22/tcp (ssh) y el 80/tcp (http).

Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-05-05 11:43 EDT
Nmap scan report for 10.129.178.122
Host is up (0.10s latency).

PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 7.6p1 Ubuntu 4ubuntu0.3 (Ubuntu Linux; protocol 2.0)
80/tcp open  http    Apache httpd 2.4.29 ((Ubuntu))
|_http-server-header: Apache/2.4.29 (Ubuntu)
|_http-title: Apache2 Ubuntu Default Page: It works
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

Pasamos a la página web expuesta en el puerto 80/tcp. Nos encontramos con la interfaz por defecto del servidor Apache.

Página por defecto de Apache2 Ubuntu en el puerto 80

Ffuf

Para enumerar con más profundidad, corremos un fuzzing con ffuf. Acá pudimos ver varios directorios que nos llevaron a distintas páginas web: music, sierra, artwork.

bash
ffuf -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-small.txt:FUZZ -u http://10.129.178.122/FUZZ -ic -e .php

music                   [Status: 301, Size: 316, Words: 20, Lines: 10]
artwork                 [Status: 301, Size: 318, Words: 20, Lines: 10]
sierra                  [Status: 301, Size: 317, Words: 20, Lines: 10]
:: Progress: [175302/175302] :: Job [1/1] :: 398 req/sec :: Duration: [0:08:12] :: Errors: 0 ::

La más interesante de todas las páginas fue music; nos mostró un botón de login.

La página web music con un botón de login

El botón de login nos llevó a un tipo de panel de administración llamado OpenAdmin, que podría darnos acceso al servidor.

Panel de login de OpenNetAdmin

OpenNetAdmin es una interfaz administrativa que permite gestionar tu red IP con un inventario basado en base de datos y un front end web.

Si miramos con atención, un mensaje de advertencia nos dice que la versión en uso no es la última, y nos da la versión actual, v18.1.1.

Advertencia mostrando la versión de OpenNetAdmin v18.1.1

Acceso inicial

Buscamos información sobre esta versión y encontramos que es vulnerable a ejecución remota de código. Con el siguiente PoC pudimos obtener una reverse shell.

https://github.com/amriunix/ona-rce

Reverse shell obtenida a través del RCE de OpenNetAdmin

Búsqueda de credenciales

Primero listamos qué usuarios hay disponibles en el servidor. Encontramos jimmy y joanna.

Listando los usuarios jimmy y joanna en el servidor

Profundizando en el servidor, encontramos un archivo de configuración de base de datos con una contraseña en texto plano, dándonos credenciales para posiblemente enumerar la base de datos o algo más.

Archivo de configuración de base de datos exponiendo una contraseña en texto plano

Al usar las credenciales con la shell actual no podemos hacer mucho, y nos da un error de acceso denegado.

Acceso denegado al reutilizar las credenciales en la shell actual

Rápidamente hicimos un ataque de password spray sobre los usuarios encontrados en el servidor y tuvimos un acierto.

Password spray acertando en un usuario válido

Con estas credenciales obtuvimos acceso al servidor. Lamentablemente, este usuario no tenía mucho acceso, así que enumeramos un poco más.

Acceso al servidor como el usuario del spray

Seguimos buscando más cosas en el servidor, y podemos ver cómo un puerto poco común está escuchando en localhost.

Un puerto poco común escuchando en localhost

Lanzamos un port forward del puerto local en el objetivo con ssh, y al acceder encontramos una página de login.

bash
ssh -L 52846:localhost:52846 <USER>@<Target-IP>

Página de login alcanzada a través del port forward por SSH

Las credenciales de Jimmy no funcionan, así que fuimos a buscar archivos de configuración de esta página para encontrar algún error de desarrollo o algo, y encontramos que el código fuente tiene credenciales hardcodeadas. Intentaron ocultarlas como un hash, pero eso no impide que un atacante crackee el hash para obtener una contraseña en texto plano.

Hash de credenciales hardcodeado en el código fuente de la página

Usando una herramienta en línea, obtuvimos rápidamente una contraseña en texto plano.

https://crackstation.net/

Crackeando el hash con CrackStation

Dentro de la página obtenemos una clave privada SSH.

Clave privada SSH expuesta dentro de la página interna

Usamos la clave privada con el usuario joanna, pero nos pide una passphrase para continuar.

La clave privada pidiendo una passphrase

Crackeamos fácilmente la passphrase con john the ripper.

Crackeando la passphrase de la clave SSH con John the Ripper

Una vez dentro del servidor, autenticados como joanna, obtuvimos nuestra primera flag.

Flag de usuario obtenida como joanna

Escalada de privilegios

Ahora buscamos escalar privilegios. Empezamos haciendo un sudo -l, y rápidamente encontramos que tenemos privilegios de root para ejecutar nano sobre un archivo específico.

sudo -l mostrando que nano se puede ejecutar como root

Una técnica de GTFOBins para escalar privilegios usando nano nos da las siguientes instrucciones.

bash
sudo nano
^R^X
reset; sh 1>&0 2>&0

Aplicando la técnica de nano de GTFOBins

Obteniendo una shell de root desde nano

Verificamos el nivel de acceso que obtuvimos en el servidor y somos root.

Confirmando el acceso root con id

Finalmente, obtuvimos la última flag.

Flag de root obtenida

Gracias por leer.