🟩HTB - Bizness

https://app.hackthebox.com/machines/Bizness

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:

settarget 10.10.11.252

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:

ping -c 1 10.10.11.252 -R

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:

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

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:

sudo nmap -sCV -p22,80,443 10.10.11.252 -oN targeted
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:

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).

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

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 para confirmar la vulnerabilidad.

Probamos inyectando manualmente para ver si es vulnerable:

Ejecutamos el payload para tener nuestra reverse shell.

Privilege Escalation

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.

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

#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}')

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

Última actualización