HackTheBox-SAU WriteUp
HTB Akademi Makine Bilgileri
HTB Akademi üzerinden verilen makine hakkında elimizde olan tek bilgi Target IP adresidir.
Bizden istenen user ve root kullanıcılarının terminallerine erişmek ve saklanan flag’leri bulmak.
HTB VPN’e Bağlanma
Openvpn aracı kullanılarak hem kendi cihazımızda hem de sanal makinemizde HTB VPN’ine bağlanıldı.
Makineye Erişebiliyor Muyum?
Sanal makine üzerinde ping komutu kullanılarak makine erişim sağlanmış mı diye kontrol ediyoruz.
Nmap ile IP taraması
Aktif bilgi toplama araçlarından olan nmap ile hedef IP adresini analiz ediyoruz.
Analiz sonucunda bu IP adresinin 22 ve 55555 portlarının açık olduğunu görüyoruz.
Bu portları incelemeye başlayalım.
22 portunda SSH servisinin çalıştığını görüyoruz.
SSH servisi kullanıcıların sunucularına erişmesi ve sunucu kontrollerini sağlaması için kullanılan uzaktan yürütme protokolüdür.
SSH servisinde exploit olması ihtimali düşünülerek nmap aracı ile SSH servisinde kullanılan versiyona bakıyoruz.
OpenSSH 8.2p1 versiyonunda çalıştığı bilgisine ulaşıyoruz.
Araştırma sonucunda bu versiyonda bir exploit bilgisine ulaşamıyoruz.
Nmap taraması ile bulduğumuz diğer porta tarayıcı üzerinden erişmeye çalışıyoruz ve bir web sitesi ile karşılaşıyoruz.
Web Sitesinin İncelenmesi
Sitede bizden yeni bir basket oluşturmamızı ve gelen HTTP isteklerini toplamamızı ve incelememizi isteyen yazıyla karşılaşıyoruz.
Create butonuyla testtest adıyla yeni bir basket oluşturuyoruz.
Open Basket butonuyla 10.10.11.224:55555/web/testtest adresine yönlendiriliyoruz.
10.10.11.224:55555/testtest adresine gitmemizi söyleyen yazı görüyoruz.
Siteye gidiyoruz bizi boş bir ekran karşılıyor.
Bir önceki siteye geri döndüğümüzde burada bir GET isteğinin eklendiğini görüyoruz.
Siteyi daha ayrıntılı incelemeye karar veriyoruz.
Response kısmına aşağıdaki kodları eklemeyi deniyoruz.
<h1>Hello</h1>
<script>alert(1)</script>
10.10.11.224:55555/testtest sayfasına gittiğimizde yazdığımız HTML kodlarıyla karşılaşıyoruz.
Burada XSS exploit payload kodunun çalışması bu sitede XSS zafiyeti olabilir mi diye düşündürüyor ama bu basket yani testtest bana özel oluşturulduğu için sisteme ve diğer kullanıcılara zarar verme olasılığı düşüyor.
Böylece bu zafiyetin zararlı olmadığına karar veriyoruz.
10.10.11.224:55555/web/testtest sitesini incelemeye devam ediyoruz.
Forward URL kısmını görünce google.com’a yönlendirebilir mi diye deniyoruz.
Yönlendirmenin başarısız olduğunu ve internete erişemediğini görüyoruz.
Kurban makinenin local’inde çalışan servislere erişip erişemediğimizi kontrol ediyoruz.
10.10.11.224:55555/testtest sayfasına geri döndüğümüzde Maltrail isimli bir web sitesi ile karşılaşıyoruz.
Web sitesini kullanarak kullanıcının localhost’una erişebildiğimiz için burada SSRF zafiyeti olduğunu anlıyoruz.
SSRF sunucu taraflı istek sahteciliği olarak Türkçeye çevrilebilir.
SSRF sadece sunucunun erişebildiği web uygulamasına erişebilmeyi sağlayan bir zafiyettir. Sunucu yetkilerini kullanarak yani sunucu gibi davranarak normalde erişemeyeceğimiz sitelere, uygulamalara erişmek anlamına gelmektedir.
Siteyi ve kodlarını inceliyoruz.
İnternet üzerinde Maltrail v0.53 Exploit diye arama yapıyoruz.
Araştırma sonucunda bu versiyonda OS Command Injection olduğunu ve sömürme yollarını öğreniyoruz.
https://github.com/spookier/Maltrail-v0.53-Exploit
Sitede bulunan exploit.py isimli dosyayı indiriyoruz.
Kullanımına baktığımızda bunun port dinleme komutu olan netcat komutuyla ilişkili olabileceğini düşünüyoruz.
Ressource kısmındaki linki kontrol ediyoruz.
Burada da zafiyetle ilgili açıklamalar görüyoruz.
https://huntr.dev/bounties/be3c5204-fbd9-448d-b97c-96a8d2941e87/
Bu sitede Occurrences kısmındaki github linkini inceliyoruz.
Burada zafiyetin açığa çıktığı kodu görüyoruz.
https://github.com/stamparm/maltrail/blob/master/core/httpd.py#L399
10.10.11.224:55555/testtest web sayfasına geri dönüyoruz.
Log in linkinin diğerlerinden farklı olduğunu görüyoruz.
Bu linke URL üzerinden gitmeyi deniyoruz.
Login Failed yazısı bizi karşılıyor.
Kurban Makinede Shell Erişimi
Netcat komutu ile kendi cihazımızın 1234 portundan web sitesini dinlemeye ve Shell almaya çalışıyoruz
Bu ekran görüntüsünde exploit.py dosyasını ve VPN’in bana verdiği IP adresimi görüyoruz.
Exploit.py dosyasını kullanarak önce 10.10.11.224:55555/testtest sayfasına saldırmayı deniyoruz ama başarısız oluyoruz.
Sonrasında 10.10.11.224:55555/testtest/login sayfasına saldırmayı deniyoruz ve başarılı oluyoruz.
Kurban makinenin shell’ine erişim sağlamış oluyoruz.
Burada
- Hangi kullanıcı olduğumuzu öğrenmek için whoami komutunu,
- Bulunduğumuz dizinde olan dosyaları öğrenmek için ls komutunu,
- Bulunduğumuz dizini öğrenmek için pwd komutunu,
- İşletim sistemini öğrenmek için uname -a komutunu kullanıyoruz.
- /home dizininde önemli bir şey var mı diye kontrol ediyoruz.
- Dizinde puma isimli klasör olduğunu görüyoruz ve içine bakıyoruz.
- Burada bizi user.txt dosyası karşılıyor.
- Dosyayı okuduğumuzda user flag’i bulmuş oluyoruz.
Yetki Yükseltme
Bir sonraki flag için root kullanıcısının terminaline yani yetkisi yüksek bir terminale erişmemiz gerekiyor.
- Kullanıcının şifresini bilmediğimiz için sudo su komutunu kullanamıyoruz.
- Böyle durumlarda çoğunlukla tercih edilen linpeas tool’unu kullanıyoruz.
- Curl komutu ile tool’u indirmeyi deniyoruz ama komutun çalışmadığını görüyoruz.
- Tool’un komutlarını kopyalayıp nano editörüne yapıştırma metodunu kullanmayı deniyoruz ama editörün de çalışmadığını görüyoruz.
- Kendi sanal makinemizde nano editörü ile linpeas.sh dosyasını oluşturuyoruz.
- Bu dosyayı linpeas isimli klasöre aktarıyoruz.
- Aynı klasörün içindeyken Python yardımıyla bir web server ayağa kaldırıyoruz.
- Kurban makine ile sanal makinemiz arasında VPN sayesinde bir bağlantı olduğu için linpeas dosyasını kurban makineye indirebiliyoruz.
Kurban makinede wget komutu ile kendi IP adresimizden linpeas.sh dosyasını indiriyoruz.
Permission denied hatasıyla karşılaşıyoruz ve geçici dosyaların olduğu /tmp dizinine giderek burada indirmeyi deniyoruz.
Aşağıdaki ekran görüntüsü ise bizim web servisimizde meydana gelen değişiklikleri göstermektedir.
Linpeas.sh dosyasını başarıyla indirdikten sonra dosyanın izinlerini kontrol etmek için ls -la komutu kullanıyoruz ve bu dosyanın execute izni olmadığını görüyoruz.
Chmod +x komutu ile bu dosyaya gerekli izni veriyoruz.
.sh uzantılı dosyayı çalıştırmak için “./” kullanıyoruz
Tool’u çalıştırdığımızda Kırmızı/Sarı işaretli alanı kullanarak %99 ihtimalle Yetki Yükseltme yapabileceğimizi görüyoruz.
Tool çalışıyorken sonuçları inceliyoruz Kırmızı/Sarı işaretli bir alan görüyoruz.
Herhangi bir kullanıcının /usr/bin/systemctl status trail.service komutunu kullanarak root yetkisine erişebildiğini görüyoruz ve bu açığı kullanmaya karar veriyoruz.
Bu komutu denemeden önce oluşacak hataları ekranda görmemek için script komutunu kullanarak hataları /dev/null dizinine aktarıyoruz.
Daha sonra bulduğumuz komutu yüksek yetkide çalıştırabilmek için sudo komutu ile kullanıyoruz.
Whoami komutunu kullanıyoruz ve root kullanıcısına geçebildiğimizi görüyoruz.
User kullanıcısında /home dizinine gittiğimiz gibi burada da root kullanıcısının benzer özellikte olan /root dizinine gidiyoruz.
Burada root.txt dosyayı bizi karşılıyor ve dosyayı okuduğumuzda bizden istenen son flag’i de bulmuş oluyoruz.
Muğla Sıtkı Koçman Üniversitesi Bilişim Sistemleri Mühendisliği bölümü öğrencisiyim. Okul bünyesinde bulunan OWASP MUGLA UNIVERSITY öğrenci topluluğunda lider olarak görev yapmaktayım. Siber güvenlik ile ilgili çeşitli eğitimlere, etkinliklere katılmaya çalışıyorum ve bu alanda kariyer yapmayı hedefliyorum.