TheNotebook - HackTheBox

image (35)

Comencé haciendo un escaneo con Nmap para detectar puertos abiertos.

┌──(root💀kali)-[/home/wackyh4cker/HTB/TheNotebook]
└─# nmap -sS --min-rate=5000 --open -v -n 10.10.10.230 -oN targeted
Starting Nmap 7.91 ( https://nmap.org ) at 2021-07-31 19:12 CEST
Initiating Ping Scan at 19:12
Scanning 10.10.10.230 [4 ports]
Completed Ping Scan at 19:12, 0.08s elapsed (1 total hosts)
Initiating SYN Stealth Scan at 19:12
Scanning 10.10.10.230 [1000 ports]
Discovered open port 80/tcp on 10.10.10.230
Discovered open port 22/tcp on 10.10.10.230
Completed SYN Stealth Scan at 19:12, 0.47s elapsed (1000 total ports)
Nmap scan report for 10.10.10.230
Host is up (0.15s latency).
Not shown: 997 closed ports, 1 filtered port
Some closed ports may be reported as filtered due to --defeat-rst-ratelimit
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.73 seconds
       	Raw packets sent: 1014 (44.592KB) | Rcvd: 1009 (40.356KB)

Hice otro para detectar la versión de cada puerto abierto encontrado.

┌──(root💀kali)-[/home/wackyh4cker/HTB/TheNotebook]
└─# nmap -sC -sV -p22,80 10.10.10.230 -oN webscan             	 
Starting Nmap 7.91 ( https://nmap.org ) at 2021-07-31 19:12 CEST
Nmap scan report for 10.10.10.230
Host is up (0.069s latency).

PORT   STATE SERVICE VERSION
22/tcp open  ssh 	OpenSSH 7.6p1 Ubuntu 4ubuntu0.3 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
|   2048 86:df:10:fd:27:a3:fb:d8:36:a7:ed:90:95:33:f5:bf (RSA)
|   256 e7:81:d6:6c:df:ce:b7:30:03:91:5c:b5:13:42:06:44 (ECDSA)
|_  256 c6:06:34:c7:fc:00:c4:62:06:c2:36:0e:ee:5e:bf:6b (ED25519)
80/tcp open  http	nginx 1.14.0 (Ubuntu)
|_http-server-header: nginx/1.14.0 (Ubuntu)
|_http-title: The Notebook - Your Note Keeper
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 11.04 seconds

Tenía dos puertos abiertos, empece mirando por el servidor web, esto es lo que tenía.

PaginaPrincipal

Me registré y me redirigió a este panel.

accesoalpanel

Cree una nota y probé distintas inyecciones de código html y js pero no era vulnerable a XSS o HTMLi, probé a interceptar la petición para ver como va todo por detrás y encontré una cookie que me llamo la atención.

jwtcookie

Al parecer era un JWT o “JSON Web Token”, copie la cookie y la pegue en jwt.io para ver el formato json como se estaba tratando y encontré lo siguiente.

jwtio

Al parecer se estaba comunicando con una priv key en localhost, es decir que no tenía ningún tipo de acceso a ella, pensé en crear la mía propia con OpenSSL y que tire por la mía abriendo un servidor por Python, empecé creando la clave privada con el siguiente comando.

openssl genrsa -out privKey.key 2048

Abrí un servidor por python por el puerto por el que corría la priv key de la víctima, el 7070, y cambie a mi dirección IP y puse 1 en admin_cap y pegue la mi priv key abajo a la izquierda.

codigo

Copie la cadena en base64 y la sustitui por la cookie que me venía en la página.

paneladminconseguido

Y cambio el panel, ahora había una sección que me permitía subir archivos.

uploadfiles

Inmediatamente probé a subir una reverse shell en PHP, utilice una de pentestmonkey.

subida

Me dejo subirla, le di a save con una sesión de netcat corriendo por el puerto ‘443’ y gané acceso a la máquina.

reverseshell (1)

Hice un tratamiento de la TTY, investigando un poco en la máquina encontré un archivo llamado home.tar.gz que me llamo la atención, por lo que pensé en transferírmelo a mí máquina con netcat.

transferusingnmap

Descomprimiéndolo vi que era el directorio home, dentro encontré una clave privada de SSH, una id_rsa, también tuve que enumerar el usuario en el que tenía que migrar y en la ruta que seguí encontré un directorio llamado noah.

ypadentroconhome

Le di permisos 600 a la id_rsa y probé a conectarme con ella en SSH haciendo uso del usuario noah y funciono.

ssshacceso

Ya pude visualizar la “flag” del usuario.

flagdelusuario (3)


ESCALADA DE PRIVILEGIOS

Ahora solo faltaba la escalada de privilegios, haciendo sudo -l vi que podía ejecutar Docker con privilegios de sudo.

sudoguionele

Lo ejecuté añadiendo bash y conseguí una sesión con Docker, pero esto no era la escalada, ya que solo estaba en un contenedor, mire la versión de Docker.

dockerversion

Busque si había algún exploit de esa versión en Google y encontré el siguiente PoC.

pocdockerexploit

Me lo traje y a mí máquina y modifique la línea que hacia la ejecución de código, puse que le dé permisos 777 al /etc/passwd.

modificandoetchosts

Compile el exploit y lo transferí al servidor víctima, concretamente en la sesión de Docker, ejecute el exploit corriendo otra sesión de Docker a la vez que se esté ejecutando el exploit.

descargarexploit (1) (1)

Modifique la x del /etc/passwd y puse una contraseña creada anteriormente con OpenSSL, hice sudo su y puse la contraseña que me creo OpenSSL y gane acceso con root, ya pude ver la “flag”.

bashmenosoe (1)

Leave a comment