HackTheBox-SAU WriteUp

Web Uygulama Güvenliği

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.

ekran görüntüsü, metin, multimedya yazılımı, yazılım içeren bir resim Açıklama otomatik olarak oluşturuldu

HTB VPN’e Bağlanma

Openvpn aracı kullanılarak hem kendi cihazımızda hem de sanal makinemizde HTB VPN’ine bağlanıldı.

metin, ekran görüntüsü içeren bir resim Açıklama otomatik olarak oluşturuldu

Makineye Erişebiliyor Muyum?

Sanal makine üzerinde ping komutu kullanılarak makine erişim sağlanmış mı diye kontrol ediyoruz.

metin, ekran görüntüsü, yazı tipi içeren bir resim Açıklama otomatik olarak oluşturuldu

Nmap ile IP taraması

Aktif bilgi toplama araçlarından olan nmap ile hedef IP adresini analiz ediyoruz.

metin, ekran görüntüsü, yazı tipi içeren bir resim Açıklama otomatik olarak oluşturuldu

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.

metin, ekran görüntüsü, yazı tipi, yazılım içeren bir resim Açıklama otomatik olarak oluşturuldu

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.

metin, ekran görüntüsü, yazılım, bilgisayar simgesi içeren bir resim Açıklama otomatik olarak oluşturuldu

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.

metin, yazılım, multimedya, işletim sistemi içeren bir resim Açıklama otomatik olarak oluşturuldu

Open Basket butonuyla 10.10.11.224:55555/web/testtest adresine yönlendiriliyoruz.

metin, ekran görüntüsü, yazılım, web sayfası içeren bir resim Açıklama otomatik olarak oluşturuldu

10.10.11.224:55555/testtest adresine gitmemizi söyleyen yazı görüyoruz.

Siteye gidiyoruz bizi boş bir ekran karşılıyor.

yazılım, multimedya yazılımı, ekran görüntüsü içeren bir resim Açıklama otomatik olarak oluşturuldu

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.

metin, yazılım, web sayfası, bilgisayar simgesi içeren bir resim Açıklama otomatik olarak oluşturuldu

Response kısmına aşağıdaki kodları eklemeyi deniyoruz.

<h1>Hello</h1>

<script>alert(1)</script>

metin, ekran görüntüsü, yazılım, bilgisayar simgesi içeren bir resim Açıklama otomatik olarak oluşturuldu

10.10.11.224:55555/testtest sayfasına gittiğimizde yazdığımız HTML kodlarıyla karşılaşıyoruz.

metin, yazılım, bilgisayar simgesi, web sayfası içeren bir resim Açıklama otomatik olarak oluşturuldu

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.

metin, yazılım, bilgisayar simgesi, multimedya yazılımı içeren bir resim Açıklama otomatik olarak oluşturuldu

Yönlendirmenin başarısız olduğunu ve internete erişemediğini görüyoruz.

metin, ekran görüntüsü, yazılım içeren bir resim Açıklama otomatik olarak oluşturuldu

Kurban makinenin local’inde çalışan servislere erişip erişemediğimizi kontrol ediyoruz.

metin, ekran görüntüsü, yazılım, bilgisayar simgesi içeren bir resim Açıklama otomatik olarak oluşturuldu

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.

yazılım, metin, bilgisayar simgesi, multimedya yazılımı içeren bir resim Açıklama otomatik olarak oluşturuldu

Siteyi ve kodlarını inceliyoruz.

metin, yazılım, bilgisayar simgesi, web sayfası içeren bir resim Açıklama otomatik olarak oluşturuldu

İ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

metin, yazılım, web sayfası, bilgisayar simgesi içeren bir resim Açıklama otomatik olarak oluşturuldu

metin, ekran görüntüsü, yazılım, web sayfası içeren bir resim Açıklama otomatik olarak oluşturuldu

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/

metin, yazılım, multimedya yazılımı, bilgisayar simgesi içeren bir resim Açıklama otomatik olarak oluşturuldu

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

metin, yazılım, bilgisayar simgesi, web sayfası içeren bir resim Açıklama otomatik olarak oluşturuldu

10.10.11.224:55555/testtest web sayfasına geri dönüyoruz.

Log in linkinin diğerlerinden farklı olduğunu görüyoruz.

metin, yazılım, bilgisayar simgesi, web sayfası içeren bir resim Açıklama otomatik olarak oluşturuldu

Bu linke URL üzerinden gitmeyi deniyoruz.

Login Failed yazısı bizi karşılıyor.

ekran görüntüsü, yazılım, metin içeren bir resim Açıklama otomatik olarak oluşturuldu

Kurban Makinede Shell Erişimi

Netcat komutu ile kendi cihazımızın 1234 portundan web sitesini dinlemeye ve Shell almaya çalışıyoruz

yazı tipi, metin, ekran görüntüsü, el yazısı içeren bir resim Açıklama otomatik olarak oluşturuldu

Bu ekran görüntüsünde exploit.py dosyasını ve VPN’in bana verdiği IP adresimi görüyoruz.

metin, elektronik donanım, ekran görüntüsü, yazılım içeren bir resim Açıklama otomatik olarak oluşturuldu

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.

metin, elektronik donanım, ekran görüntüsü, yazılım içeren bir resim Açıklama otomatik olarak oluşturuldu

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.

metin, ekran görüntüsü, yazılım, multimedya yazılımı içeren bir resim Açıklama otomatik olarak oluşturuldu

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.

metin, ekran görüntüsü, yazı tipi içeren bir resim Açıklama otomatik olarak oluşturuldu

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.

metin, ekran görüntüsü, yazı tipi içeren bir resim Açıklama otomatik olarak oluşturuldu

Aşağıdaki ekran görüntüsü ise bizim web servisimizde meydana gelen değişiklikleri göstermektedir.

metin, ekran görüntüsü, yazı tipi içeren bir resim Açıklama otomatik olarak oluşturuldu

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.

metin, ekran görüntüsü, tasarım içeren bir resim Açıklama otomatik olarak oluşturuldu

.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.

metin, ekran görüntüsü içeren bir resim Açıklama otomatik olarak oluşturuldu

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.

metin, ekran görüntüsü, yazılım, multimedya yazılımı içeren bir resim Açıklama otomatik olarak oluşturuldu

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.

metin, ekran görüntüsü, yazılım içeren bir resim Açıklama otomatik olarak oluşturuldu

 

Bir cevap yazın