Era HackTheBox (Intermediate)

Escaneo de puertos

nmap -p- --open -sS --min-rate 5000 -vvv -n -Pn <IP>
nmap -sCV -p<PORTS> <IP>

Info:

Starting Nmap 7.95 ( https://nmap.org ) at 2025-09-25 05:46 EDT
Nmap scan report for 10.10.11.79
Host is up (0.033s latency).

PORT   STATE SERVICE VERSION
21/tcp open  ftp     vsftpd 3.0.5
80/tcp open  http    nginx 1.18.0 (Ubuntu)
|_http-server-header: nginx/1.18.0 (Ubuntu)
|_http-title: Did not follow redirect to http://era.htb/
Service Info: OSs: Unix, 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.29 seconds

Veremos varios puertos interesantes, entre ellos el 80 y el FTP (21), vemos que en el 80 nos redirige a un dominio llamado era.htb, por lo que vamos añadirlo a nuestro archivo hosts.

nano /etc/hosts

#Dentro del nano
<IP>          era.htb

Lo guardamos y entramos dentro de dicho dominio a ver que vemos.

Veremos que es una pagina de empresa normal, un poco mas abajo veremos varios empleados de la empresa, por lo que tenemos 3 nombres de usuarios, que podriamos guardarnos por si acaso.

Ya que tenemos un dominio vamos a realizar un poco de fuzzing para ver si hubiera algun subdominio.

FFUF

Antes nos descargamos un diccionario de subdominios de la siguiente pagina:

Ahora que tenemos el diccionario vamos hacer lo siguiente:

Info:

Veremos que ha funcionado, por lo que vamos añadirlo a nuestro archivo hosts el subdominio llamado file.

Lo guardamos y entramos a dicho subdominio de esta forma:

Info:

Si le damos a cualquiera de las opciones nos llevara a un login, pero no tenemos ningunas credenciales, vamos a realizar un poco de fuzzing para ver que otras rutas puede haber.

Gobuster

Info:

Con esto veremos una ruta muy interesante llamada /register.php, si entramos en dicho archivo.

Info:

Vemos que ha funcionado, vamos a probar a registrar un usuario en la web, una vez registrado nos redirige al login, cuando iniciemos sesion con dichas credenciales, veremos lo siguiente:

Si probamos a subir un archivo por ejemplo una reverse shell.

shell.php

Nos vamos a la seccion de Upload Files y si nos dejara subirlo:

Pero si nos vamos a dicho ID de archivo, solamente nos dejara descargarlo, no nos permite acceder a dicho archivo, por lo que no podremos hacer mucho.

Pero si realizamos un poco de fuzzing en el parametro ID para ver que otros archivos pueden estar cargados en la pagina, nos vamos a montar un script que haga esto mismo:

fuzzID.sh

Poniendo nuestra Cookie de sesion en el script, lo ejecutaremos de esta forma:

Info:

Veremos que ha encontrado 2 IDs, si entramos en ellos uno sera de un archivo llamado site-backup-30-08-24.zip y el otro llamado signing.zip, vamos a descargarnos los dos archivos e investigar que pueden contener.

Si descomprimimos el primer archivo:

Info:

Los 2 archivos que se descomprimieron contiene la siguiente informacion:

key.pem

x509.genkey

Ya mirando esto veremos informacion muy interesante entre ella un nombre de usuario llamado yurivich el cual nos vamos a guardar, si descomprimimos el segundo archivo.

Info:

Veremos efectivamente los archivos de la pagina web en formato de backup, vamos analizar a ver si hubiera algo interesante.

Investigando un poco veremos un archivo llamado filedb.sqlite el cual vamos a observar por la herramienta de sqlite3.

Entrando dentro de la interfaz, vamos a listar las tablas.

Info:

Si vemos que contiene la tabla users.

Info:

Veremos varias credenciales, por lo que vamos a probar a intentar crackearlas de esta forma:

John (Crackeo)

hash

Teniendo nuestro archivo de credenciales hasheadas vamos a crackearlo de esta forma:

Info:

Veremos que pudimos obtener 2 credenciales, vamos a probarlas por FTP a ver si funcionan tambien.

Metemos como contraseña mustang...

Veremos que ha funcionado con el usuario yuri, si listamos veremos 2 directorios de configuracion, pero no veremos nada interesante, si nosotros vemos como esta compuesto el archivo de download.php que vimos antes.

download.php

Vamos a ver que tiene una vulnerabilidad de Acceso a wrappers de PHP - LECTOR DE ARCHIVOS pero para ello tendremos que ser admin, si recordamos antes, tenemos el usuario de administrador su nombre, vamos a cerrar sesion y vamos a irnos al archivo llamado reset.php para poder resetear a dicho usuario, en todos los campos meteremos el nombre de admin_ef01cab31aa estando en la misma sesion de nuestro usuario ya logueados y cuando le demos a resetear veremos que nos redirige a la sesion actual, cerramos sesion y vamos otra vez a reset.php volvemos a meter admin_ef01cab31aa en todos los campos y ya seremos los administradores, por lo que nos inicia sesion de forma automatica, una vez siendo administradores, podremos probar la vulnerabilidad de esta forma:

Vemos que se pueden utilizar wrappers como ssh2.shell:// o ssh2.exec://, utilizaremos en este caso el de exec para ejecutar un comando, nos pondremos a la escucha en un servidor de python3 para ver si se ejecuta de forma correcta dicho comando:

Ahora si ejecutamos esto:

Se nos descargara un archivo, pero ese no nos interesa, si vamos a nuestro servidor de python3 veremos lo siguiente:

Vemos que se esta ejecutando bien, por lo que vamos a ejecutar una reverse shell de esta forma:

Le añadiremos un + a lo ultimo para que separe el comando que concatena al que nosotros estamos enviando, ya que si lo enviamos sin el + se va a concatenar el comando files/site-backup-30-08-24.zip y no funcionara.

Antes de enviarlo nos pondremos a la escucha:

Ahora si le damos a ENTER en la URL para que se ejecute y volvemos a donde tenemos la escucha, veremos lo siguiente:

Veremos que ha funcionado, por lo que vamos a sanitizar la shell.

Sanitización de shell (TTY)

Escalate user eric

Si nosotros listamos el passwd veremos que hay otro usuario llamado eric y si recordamos antes tenemos sus credenciales, vamos a probarlo directamente desde esta shell a ver si nos dejara.

Metemos como contraseña america...

Veremos que estaremos dentro con dicho usuario, por lo que vamos a leer la flag del usuario.

user.txt

Escalate Privileges

Si listamos del grupo que somos veremos esto:

Vemos que somos del grupo devs, vamos a realizar un find para ver que podemos hacer con dicho grupo en el sistema.

Info:

Veremos que esta en la carpeta /opt la carpeta AV en la cual pertenece a dicho grupo, si entramos dentro donde la carpeta periodic-checks veremos los siguientes permisos:

Vemos que podemos editar y sobreescribir el archivo monitor, vamos a probar a estar a la escucha de cualquier proceso con una herramienta llamadapspy64.

URL = Download pspy64 linux

Info:

Vemos que cada x tiempo se esta ejecutando el binario monitor como el usuario root, por lo que podremos hacer lo siguiente:

monitor

Si hacemos esto y esperamos un rato monitoreando los procesos veremos esto otro:

Por lo que vemos esta comprobando la firma del binario y como no es igual no lo ejecuta, acordemonos de que obtuvimos un archivo en el comprimido de signing.zip que nos daba ya estas claves, por lo que vamos a crear un binario desde C# compilarlo y firmarlo con dichas claves de esta forma desde nuestra maquina atacante:

Primero vamos a crear el monitor.c:

Ahora vamos a compilarlo:

key.pem

Vamos a firmar el binario con estos pasos de los archivos que hayamos creado necesarios:

Info:

Ahora vamos a abrir un servidor de python3 para pasarnos el archivo.

Seguidamente estaremos a la escucha desde otra pestaña de terminal:

Desde la maquina victima, vamos a ejecutar lo siguiente:

Si esperamos un poco y volvemos a donde tenemos la escucha, veremos lo siguiente:

Veremos que ha funcionado, con esto ya seremos root, por lo que vamos a leer la flag de root.

root.txt

Last updated