# HTB - Bizness

<figure><img src="/files/q0yVX0po0q1Cny6pxYWq" alt=""><figcaption></figcaption></figure>

## Información General

* **Nombre de la Máquina:  Bizness**
* **IP de la Máquina:**  10.10.11.252
* **Sistema Operativo: Linux**
* **Dificultad: Easy**
* **Fecha de Publicación:**  06 Jan 2024

***

### **Enumeration**

#### **Establecer el objetivo**

Primero, establecemos el objetivo utilizando el comando `settarget` con la dirección IP de la máquina objetivo:

```bash
settarget 10.10.11.252
```

<figure><img src="/files/4mhdQYQMpZlngYkOjQMy" alt=""><figcaption></figcaption></figure>

#### **Ping de reconocimiento**

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:

```bash
ping -c 1 10.10.11.252 -R
```

<figure><img src="/files/ax4i8T76LGmmnmHfkRth" alt=""><figcaption></figcaption></figure>

#### **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:

{% code overflow="wrap" %}

```bash
sudo nmap -p- --open -sS --min-rate 5000 -vvv  -n -Pn 10.10.11.252 -oG allPorts
```

{% endcode %}

<figure><img src="/files/nOqhNKDDA5eSJVUfBMru" 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`:

```bash
sudo nmap -sCV -p22,80,443 10.10.11.252 -oN targeted
```

<figure><img src="/files/lnyyGnSdvWtc4KyWzcT8" alt=""><figcaption></figcaption></figure>

```
cat targeted -l java
```

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

```bash
echo "10.10.11.252 bizness.htb" | sudo tee -a /etc/hosts
```

Este comando añade la dirección IP `10.10.11.252` asociada al nombre de host `bizness.htb` al archivo `/etc/hosts` de tu sistema.

Para realizar un descubrimiento de directorios en un sitio web utilizando Dirsearch (<https://github.com/maurosoria/dirsearch>).&#x20;

{% code overflow="wrap" %}

```bash
 sudo python3 dirsearch.py -u https://bizness.htb/ --exclude-status 403,404,500,502,400,401
```

{% endcode %}

<figure><img src="/files/QZC4YE8jgqPAnwt1wvf3" alt=""><figcaption><p>dirsearch.py </p></figcaption></figure>

### Explotation

Durante una evaluación de seguridad, al revisar el endpoint `/control/login` de la aplicación web, se identificó que la aplicación estaba utilizando Apache OFBiz. Tras investigar, se encontraron dos posibles vulnerabilidades: CVE-2023-51467 y CVE-2023-49070. Estas vulnerabilidades podrían permitir un bypass de autenticación en OFBiz.

Para verificar si el sitio era vulnerable manualmente, se realizaron pruebas exploratorias en el endpoint `/control/login`. Posteriormente, se decidió probar el exploit disponible en el repositorio [jakabakos/Apache-OFBiz-Authentication-Bypass](https://github.com/jakabakos/Apache-OFBiz-Authentication-Bypass) para confirmar la vulnerabilidad.

<figure><img src="/files/cuInOFNlgu2OgxCloI8C" alt=""><figcaption></figcaption></figure>

Probamos inyectando manualmente para ver si es vulnerable:

<figure><img src="/files/Af5GcDbVt6YK0VkRRE0O" alt=""><figcaption><p>It's!</p></figcaption></figure>

Ejecutamos el payload para tener nuestra reverse shell.

<figure><img src="/files/Hnm0qrChBhDqShA1Km08" alt=""><figcaption></figcaption></figure>

### Privilege Escalation&#x20;

Durante la investigación de seguridad, se descubrió un archivo llamado `AdminUserLoginData.xml` ubicado en `/opt/ofbiz/framework/resources/templates`. Este archivo contiene información relacionada con el inicio de sesión de los usuarios administrativos, incluyendo hashes de contraseñas.

<figure><img src="/files/AJAZK1XuQI9o12LqbSZL" alt=""><figcaption></figcaption></figure>

Con ayuda de ChatGPT creamos un script para crackear el hash:

{% code overflow="wrap" %}

```python
#sha1_bruteforce.py --sha1 "SHA1"

import hashlib
import base64
import argparse
from colorama import Fore, Style

def crypt_password(salt, password):
    return hashlib.sha1((salt + password).encode('utf-8')).digest()

def crack_password(salt, search_hash, wordlist_path):
    with open(wordlist_path, 'r', encoding='latin-1') as f:
        for password in f:
            password = password.strip()
            hashed_password = base64.urlsafe_b64encode(crypt_password(salt, password)).decode('utf-8').replace('+', '.')
            if hashed_password == search_hash:
                return password
    return None

# Parse command line arguments
parser = argparse.ArgumentParser(description='Crack SHA-1 hashed password')
parser.add_argument('--sha1', type=str, help='SHA-1 hash to crack', required=True)
args = parser.parse_args()

salt = "d"
search_hash = args.sha1
wordlist_path = '/usr/share/wordlists/rockyou.txt'

print(f"{Fore.GREEN}Creado por ChatGPT{Style.RESET_ALL}")
print("="*30)

password = crack_password(salt, search_hash, wordlist_path)

if password:
    print(f'{Fore.YELLOW}Contraseña encontrada: {password}{Style.RESET_ALL}')
else:
    print(f'{Fore.RED}Contraseña no encontrada en el diccionario.{Style.RESET_ALL}')
```

{% endcode %}

<figure><img src="/files/pM1zUwr6083Cok3ejkUS" alt=""><figcaption></figcaption></figure>

Con eso tenemos ya las credenciales para obtener nuestro root.txt como nuestro user.txtç

<figure><img src="/files/tYILKTDnKG6LHEgOaMab" alt=""><figcaption></figcaption></figure>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://dcollao.gitbook.io/my-pentest-book/writeups/htb-hackthebox/htb-bizness.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
