OverTheWire Bandit: Seviye 26 → Seviye 27
Bağlam
Bir önceki seviyede kısıtlı kabuktan kaçmayı başardık ve artık bandit26 kullanıcısıyız. Ancak bu seviyenin talimatları kasıtlı olarak belirsiz:
“Shell aldığın için tebrikler! Şimdi acele et ve bandit27’nin şifresini kap!”
Önerilen tek komut ise: ls.
Bu seviye bize Enumeration (Keşif/Numaralandırma) dersi veriyor: Ne aradığınızı tam olarak bilmediğinizde, sistemdeki araçları ve açıkları bulmak için ortamı nasıl analiz edersiniz?
Çözüm
Adım 1: Etrafa Bakının (Enumeration)
İpucu ls olduğuna göre, ev dizinimizde ne var bir bakalım:
ls -l
Burada bandit27-do adında bir dosya göreceksiniz. İzinlerini dikkatlice inceleyelim:
-rwsr-x--- 1 bandit27 bandit27 7268 May 7 2024 bandit27-do
İzinlerdeki s harfine dikkat edin (rws). Bu SetUID (SUID) anlamına gelir.
Sistemde bu bit ayarlandığında, programı kim çalıştırırsa çalıştırsın, program dosya sahibinin (bandit27) yetkileriyle çalışır.
Yani bu programı kullanarak bandit27 kullanıcısıymış gibi işlem yapabiliriz!
Adım 2: SUID Programını Kullanma
Programı çalıştırıp ne yaptığını görelim:
./bandit27-do
# Çıktı: Run a command as another user.
# Example: ./bandit27-do id
Bize tam olarak ne yapmamız gerektiğini söylüyor: Ona verdiğimiz herhangi bir komutu, bandit27 yetkileriyle çalıştıracak.
Şifreyi almak için yapmamız gereken tek şey, bandit27’nin şifre dosyasını okumak:
./bandit27-do cat /etc/bandit_pass/bandit27
Bu komut, bir sonraki seviyenin şifresini ekrana basacaktır.
Öğrendiklerimiz
- Enumeration (Keşif): Tıkandığınızda veya talimat yoksa etrafınıza bakın. Dosyaları, izinleri, çalışan işlemleri kontrol edin. “Sorunu bilmeden çözüm bulmak” aslında “elindeki malzemeye bakıp ne yapabileceğini görmek”tir.
- SUID (Set User ID): Linux’ta güçlü bir izin özelliğidir. Eğer bir dosyada SUID biti varsa, o dosya sahibinin yetkileriyle çalışır. Yanlış yapılandırılmış SUID dosyaları, Yetki Yükseltme (Privilege Escalation) saldırıları için yaygın bir hedeftir.