LoveTok Writeup

Bu yazımda Hack The Box platformundaki LoveTok makinesinin çözümünü adım adım açıkladım. Yazıda, Command Injection zafiyetinin nasıl keşfedildiği ve bu zafiyetle flag elde edilmesi süreci anlattım. Nmap, Dirb, Burp Suite, SQLMap ve Commix gibi araçlar kullanılarak, web uygulamasındaki güvenlik açıkları tespit etmeye çalıştım. Son olarak, zafiyetin nasıl giderileceği ve güvenlik önlemleri hakkında naçizane önerilerde bulunuldum.

LoveTok Writeup

HTB Kategorisi: Web

Challenge Bilgisi: Web Application-Based Challenge

Zorluk Seviyesi: Easy

Bu yazıda, Hack The Box platformunda bulunan LoveTok adlı makinenin çözümünü anlatacağım. Hedefim, web uygulamasındaki güvenlik açıklarını tespit ederek flag elde etmek.

  1. Keşif Aşaması

İlk adım olarak, hedef makinedeki açık portları belirlemek amacıyla Nmap aracıyla bir tarama gerçekleştirdim. Tarama çıktısı şu şekildeydi:

Ancak, bu tarama pek işe yaramadı ve daha fazla bilgi edinmek için farklı yöntemlere başvurmam gerekti.

  1. Dizin Keşfi

Nmap taramasından yeterli bilgi edinemediğim için, hedef web uygulamasında gizli veya erişilebilir dizinleri bulmak amacıyla Dirb aracıyla bir dizin taraması gerçekleştirdim.

Ancak, bu tarama sonucunda kayda değer bir dizin veya dosya bulamadım. Bu yüzden farklı yöntemler denemem gerekti.

  1. Kaynak Kodu Analizi

Dizin taramasında kayda değer bir sonuç elde edemeyince, doğrudan web sitesinin kaynak kodunu inceledim. Burada dikkatimi çeken ilk şey crossorigin parametresiydi.

Bu durumun bir Origin zafiyetine işaret edip etmediğini anlamak için testler gerçekleştirdim. Ancak, detaylı incelemeler sonucunda herhangi bir Origin zafiyeti bulunmadığını tespit ettim.

Kaynak kodunda yaptığım analizler sırasında, web sitesinin URL bölümünde format parametresi kullandığını fark ettim. Bu parametrenin nasıl çalıştığını ve olası güvenlik açıklarını incelemeye karar verdim.

  1. LFI Testi

Format parametresinin potansiyel bir güvenlik açığı barındırıp barındırmadığını anlamak için Yerel Dosya Kapsama (LFI - Local File Inclusion) testi yaptım. Bu kapsamda, sistemde bulunan /etc/passwd dosyasını okuyarak bir zafiyet olup olmadığını kontrol ettim.

Ancak, yaptığım denemeler sonucunda LFI açığı olmadığını tespit ettim.

  1. SQL Injection Testi

LFI açığı olmadığını gördükten sonra, SQL Injection (SQLi) zafiyeti olup olmadığını araştırmaya başladım. Bunun için Burp Suite aracılığıyla web sitesine gönderilen HTTP isteklerini inceledim.

Potansiyel bir SQL Injection açığını tespit etmek amacıyla, Burp Suite’ten aldığım HTTP isteğini bir dosyaya kaydettim ve daha detaylı analiz etmek için farklı testler gerçekleştirdim.

Web uygulamasında SQL Injection (SQLi) zafiyeti olup olmadığını anlamak için SQLMap aracını kullandım. Burp Suite’ten aldığım HTTP isteğini kullanarak SQLMap ile adım adım ilerledim ve sistem üzerinde kontrol sağlamaya çalıştım.

Hedefim, veritabanı üzerindeki hassas verilere erişmek ve mümkünse sistemde kod çalıştırarak bir ters shell (reverse shell) elde etmekti.

SQLMap aracılığıyla gerçekleştirdiğim testler sonucunda, shell erişimi elde etmenin mümkün olmayacağını düşündüm. Bu nedenle SQL Injection üzerinden ilerlemeyi bıraktım ve farklı bir saldırı vektörü araştırmaya başladım.

  1. Command Injection Testi

SQL Injection yönteminin sonuç vermeyeceğini anladıktan sonra, sistemin komut enjeksiyonuna (Command Injection) karşı savunmasız olup olmadığını test etmeye karar verdim.

Bu kapsamda yaptığım araştırmalar sonucunda, URL üzerinden PHP bilgisi almayı başardım. Bu, sistemde potansiyel bir komut enjeksiyon açığının olabileceğini gösteriyordu.

URL üzerinden PHP bilgisi almayı başardıktan sonra, sistemin komut enjeksiyonuna karşı savunmasız olup olmadığını kesinleştirmek için bazı testler gerçekleştirdim.

İlk olarak, "ls", "whoami" gibi temel komutları denedim. Ancak, bu komutlar çalıştırıldığında 500 hata kodu döndüğünü gözlemledim. Bu, sistemin belirli komutları engellemiş olabileceğini düşündürdü.

Daha sonra, "${Sleep(20)}" komutunu çalıştırarak sunucunun tepki süresini ölçmeye karar verdim. Sunucunun 20 saniye boyunca beklediğini fark ettim. Bu, sistemin zafiyete açık olduğunu ve komut enjeksiyonunun mümkün olabileceğini doğrulamış oldu.

  1. Commix ile Command Injection Otomatikleştirme

Manuel testlerle elde ettiğim bulguları doğrulamak ve süreci hızlandırmak için, Command Injection tespiti ve exploit edilmesi için kullanılan Commix aracını kullanmaya karar verdim.

Commix ile gerçekleştirdiğim testler sonucunda, zafiyetin kesinleştiğini gördüm ve shell almayı başardım.

Başarılı bir şekilde shell aldıktan sonra, "ls /" komutunu kullanarak kök dizini görüntüledim. Burada, "flagnSRvX" adında bir dosya olduğunu fark ettim.

Dosyayı okumak için "cat /flagnSRvX" komutunu çalıştırdım ve bayrağı elde etmeyi başardım.

Flag: HTB{wh3n_l0v3_g3ts_eval3d_sh3lls_st4rt_p0pp1ng}

Command enjection zafiyeti, girdilerin doğru bir şekilde filtrelenmediği durumlarda olur. Girdiler doğru bir şekilde filtrelenmediği zaman kötü niyetli kişiler tarafından sunucuyu sızma gerçekleştirilebilir. Zafiyeti gidermek için; kullanıcılara yeterli şekilde kısıtlı izinler verilmeli, girdiler filtrelenmeli, sadece istenen karakterde girdilerin girilmesine izin verilmelidir.

 

Muhammed Enes, Fırat üniversitesi Adli bilişim Mühendisliği öğrencisidir. Siber güvenlikte önemli bir yere sahip olan offensive tarafta çalışmalarını yürütüyor. Farklı sınıf aralıklarında oluşan 25 kişilik ekibin takım kaptanlığını yapıyor. Onlara çeşitli eğitimler veriyor. Kariyer hedeflerini belirleyip yol haritası çizmelerine yardımcı oluyor.