Writeup — HackTheBox — “Armageddon”

Jeach_03
7 min readJul 25, 2021

--

Armageddon máquina retirada con sistema operativo Linux y clasificada como fácil; método para resolver esta máquina explotar los errores de configuración de usuarios, enumeración, explotación de Drupal y la escalada básica de privilegios por snap (Dirty_sock).

Metodología:

  • Information Gathering and Enumeration
  • Scan de puertos con nmap
  • Scan de servicios y versiones con nmap
  • Enumeración Web
  • Drupal Exploit
  • Password Cracking
  • User Flag
  • Escalada de Privilegios

Comenzamos corriendo nuestra VPN descargada de la plataforma HTB (examples.ovpn) y comprobar conexión mediante una traza ICMP: ping -c 1 10.10.10.233 a nuestra máquina target.

Repuesta de la máquina target

Confirmamos que tenemos conexión iniciamos la fase de reconocimiento con nmap para buscar puertos y servicios abiertos.

INFORMATION GATHERING AND ENUMERATION:

Scan de Puertos: Lo primero es lo primero, escanear la máquina objetivo con nmap para identificar los puertos que están abiertos de forma rápida:

# nmap -p- --open -T5 -v -n 10.10.10.233
Identificación de puertos máquina target

Una vez conocemos los puertos activos de nuestra máquina target procedemos a un scan mas profundo.

Scan detención de servicios y versiones:

# nmap -p 22,80 -sC -sV 10.10.10.233 -oN armageddonmap
Puertos y Servicios

Solo hay 2 puertos abiertos como resultado del escaneo con nmap.

  • 22: SSH; lo mantenemos como referencia que pueden existir credenciales para loggearnos por SSH más adelante como es habitual.
  • 80: Servidor web, gracias a el escaneo de nmap podemos ver los listados de directorios del mismo. Abrimos la IP en nuestro navegador preferido.

ENUMERACIÓN WEB

Visitemos el sitio web veamos que tiene el puerto 80 de http, ingresamos IP http://10.10.10.233.

Web Site

El sitios web consiste en un sistema de registro e inicio de sesión. Para empezar, normalmente escaneomos primero los directorios usamos dirsearch o gobuster.

Luego utilizamos la herramientas whatweb para hacer la preguta ¿Que es este sitio Web? lo cual nos permite identificar diferentes tecnologías web utilizadas por el sitio web, tambien exite una extension llamada wappalyzer que no muestra de una formal mas llamativa.

Drupal 7

DRUPAL EXPLOIT

Se intento con contraseñas predeterminadas, creando una cuenta, pero no hubo éxito; Podemos afirmar que CMS en el sistema está usando DRUPAL versión 7.56. Aquí Googleamos le preguntamos amablemente sobre vulnerabilidades o exploit lo cual nos muestra lo siguiente CVE-2018–7600; Se puede realizar esta CVE desde metasploit pero descargamos uno desde git hub la siguiente tools.

# git clone https://github.com/pimps/CVE-2018-7600 
Git clone

Para utilizarlo colocamos nuestra información de nuestra máquina target, el script permite ejecutar comandos como id, ifconfig en este caso aprovechamos y creamos una carga de tipo bash TCP shell con nuestra ip y puerto para obtener una reverse shell para permitirnos tener una mejor interacción.

configurando netcat por el puerto 4444 para esperar reverse shell.

Después de configurar la carga útil correctamente, es hora de ejecutar el exploit.

Exploit tuvo éxito, es hora de continuar con la enumeración, seguimos la siguientes rutas de archivos y en este caso se enumera el archivo settings.php lo cual contiene nombre de usuario y una contraseña posiblemente de una BD MySQL con cat settings.php.

cat settings.php
usuario & password

Damos una mirada a el archivo passwd, no vemos ningún usuario con el nombre drupaluser.

En realidad las credenciales encontrada en el paso anterior equivale a credenciales de usuario mysql, proseguimos a enumeramos BD, primero determinamos si es cierto que corre en esta máquina MySQL con netstat lo cual es una herramienta de línea de comandos que muestra un listado de las conexiones activas de una computadora, tanto entrantes como salientes y sabemos que mysql por defecto corre por el puerto 3306.

Es necesario seguir con la enumeración para conocer la lista de la BD.

$ mysql -u drupaluser -p CQHEy@9M*m23gBVj -e 'show databases;'

Nos concentramos en la BD drupal para conocer las tablas de la BD.

$ mysql -u drupaluser -pCQHEy@9M*m23gBVj -D drupal -e 'show tables;'

Veamos que contiene la tabla users al volcar las contraseñas de los usuarios de las tablas, obtenemos los hashes de los usuarios.

$ mysql -u drupaluser -pCQHEy@9M*m23gBVj -D drupal -e 'select name,pass from users;'

PASSWORD CRACKING

Nos concentramos en usuario brucetherealadmin y tratamos de romper el hash con la ayuda de john the ripper, primero copiamos el hash en un archivo txt.

hash de brucetherealadmin

john the ripper logro crackear el hash obtuve la contraseña del usuario brucetherealadmin → booboo. Probamos el servicio SSH con el nombre de usuario y la contraseña

USER FLAG

Luego intentamos iniciar sesión usando las credenciales obtenidas a través de SSH, tenemos exitos solo queda realizar un cat a archivo user.txt y logramos obtener el flag de user.

Recordar que todos los flag son diferentes

ESCALADA DE PRIVILEGIOS

A verificar los privilegios del usuario actual ejecutamos el comando sudo-l, se observa que el usuario brucetherealadmin puede ejecutar el binario / usr / bin / snap install * con privilegios de root; en este caso mediante snap podemos elevar privilegios explotando la vulnerabilidad dirty Sock.

& sudo -l

Verificamos si estamos corriendo en nuestra máquina snap y que versión.

Nuevamente le preguntamos a google si conoce una posible escalada de privilegios usando snap, lo cual encontramos un repositorio en github que habla sobre la explotación de la escalada de privilegios usando snap mediante la instalación de un snap devmode vacío que agrega un nuevo usuario al sistema local, este usuario tendrá permisos para ejecutar comandos sudo.

Copiamos una parte del exploit en archivo txt para usarlo posteriormente y colocamos nombre a el archivo unbroken.snap en este caso.

Ejecutamos el siguiente comando en la máquina para crear un nuevo usuario.

$sudo /usr/bin/snap install --devmode unbroken.snap

Realizamos un cat a /etc/passwd como se ve se ha creado el usuario dirty_sock.

Se instalo el paquete snap para verificar si funciona ejecutemos su dirty_sock, le pedirá una contraseña y es dirty_sock una vez dentro sudo -l esta línea significa que el usuario tiene privilegios ilimitados y puede ejecutar cualquier comando en el sistema.

Luego ejecute el comando sudo -i y escribimos la contraseña nuevamente dirty_sock, obtendrá el privilegio de root nos desplazamos hasta obtener la flag de root.txt.

Finally!!! somos Root

Recordar que todos los flag son diferentes

!Saludos!

Referencias

--

--

Jeach_03

Security Enthusiast | Starting Hacking | Lover HTB-Tryhackme-CTF | Purple _Team_UTP |