OverTheWire Bandit: Seviye 23 → Seviye 24
Bağlam
Yine bir Cron görevi, ama bu sefer çok daha eğlenceli. /etc/cron.d/cronjob_bandit24 dosyasını incelerseniz, /usr/bin/cronjob_bandit24.sh scriptini çalıştırdığını göreceksiniz.
Bu scripti okuduğunuzda (cat ...) şunu fark edeceksiniz:
/var/spool/bandit24/foo klasöründeki her dosyayı çalıştırıyor ve sonra siliyor.
Bu demek oluyor ki: Biz oraya bir script koyarsak, sistem (bandit24 yetkisiyle) o scripti çalıştıracak!
Hedef
bandit24 şifresini okuyup, bizim okuyabileceğimiz bir yere (/tmp altında) kopyalayan bir script yazmak ve bunu Cron’un çalıştırmasını sağlamak.
Çözüm
Adım 1: Çalışma Alanı Oluştur
Önce kendi geçici klasörümüzü yapalım, ortalık karışmasın:
mkdir -p /tmp/benim_scriptim
chmod 777 /tmp/benim_scriptim
cd /tmp/benim_scriptim
Önemli: Klasöre
777izni veriyoruz kibandit24kullanıcısı buraya dosya yazabilsin. Aksi takdirde “Permission denied” hatası alır ve dosya oluşmaz.
Adım 2: Scripti Yaz
Şimdi gorev.sh adında bir dosya oluşturup içine yapmasını istediğimiz işi yazalım:
nano gorev.sh
Script İçeriği:
Not: Nano açılırken “Unable to create directory … No such file or directory” hatası verebilir. Bu önemsizdir, görmezden gelin. Yazmaya devam edebilirsiniz.
#!/bin/bash
cat /etc/bandit_pass/bandit24 > /tmp/benim_scriptim/sifre.txt
chmod 666 /tmp/benim_scriptim/sifre.txt
(Not: Dosyanın herkes tarafından okunabilmesi için chmod 666 ekledim)
Dosyayı kaydedip çıkın (Ctrl+O, Enter, Ctrl+X).
Adım 3: İzinleri Ver
Scriptin çalıştırılabilir olması lazım:
chmod 777 gorev.sh
Adım 4: Scripti Hedefe Kopyala
Şimdi bu scripti Cron’un kontrol ettiği klasöre kopyalayalım:
cp gorev.sh /var/spool/bandit24/foo/
Adım 5: Bekle ve Kazan
Cron her dakika çalışıyor. En fazla 60 saniye bekleyin. Sonra oluşturduğumuz dosyayı kontrol edin:
cat /tmp/benim_scriptim/sifre.txt
Tebrikler! İlk sistem otomasyon hack’inizi yaptınız.
Öğrendiklerimiz
- Shell Scripting:
#!/bin/bashile başlayan ve sistem komutlarını sırayla çalıştıran metin dosyalarıdır. - Yazma İzinleri: Bir sisteme dosya yazabildiğiniz (upload edebildiğiniz) her nokta, potansiyel bir “Remote Code Execution” (Uzaktan Kod Çalıştırma) açığıdır.
- Otomatik Temizlik: Bir script çalıştıktan sonra kendini silebilir veya sistem tarafından silinebilir. Kopyasını saklamak iyidir.