TR | Suid Bit İstismarı
SUID/SGID Bit Nedir
SUID (Set owner User ID) veya SGID (Set owner Group ID) biti herhangi bir programın, herhangi bir kullanıcı tarafından o programın sahibinin yetkilerinde çalıştırılmasını sağlamaktadır. Bu sayede erişim yetkimizin bulunmadığı bir dosya üzerinde değişiklik yapabilir hale gelmekteyiz. Daha anlaşılır olması açısından; sıradan bir kullanıcısı passwd komutunu kullanarak kendi şifresini değiştirdiğinde root kullanıcısına ait olan /etc/shadow dosyası içerisinde kendine ait parola özetini değiştirmiş olur. Böylelikle kendisine ait olmayan bir dosyada düzenleme yapabilmiştir.
Herhangi bir dosyanın SUID bitini görebilmek için dosya izinlerini de gösteren ls -l
komutunu çalıştırabilirsiniz. Herhangi bir dosyanın SUID bitini aktifleştirmek için
chmod u+s dosya.txt
komutunu ya da
chmod 4750 dosya.txt
komutunu kullanabilirsiniz. Burada 4 SUID bitinin aktifleştirildiğini, 7 dosya sahibine tüm yetkilerin, 5 grup için okuma ve çalıştırabilme yetkilerinin verildiğini, 0 ise diğer kullanıcılara hiçbir yetki verilmediğini göstermektedir.
Komutun çalıştırılması sonrası SUID bitini temsil eden s karakterini dosya sahibinin çalıştırma yetkisinin olduğunu gösteren x karakterinin yerine geldiği görülmektedir. Eğer dosya sahibinin çalıştırma yetkisi yok ise bu durumda S karakteri ile gösterilir.
Dosya izinlerini de görüntüleyebilecek bir şekilde ls -l komutu çalıştırıldığında aşağıda uygar kullanıcısına ait iki dosya görülmektedir. Bu iki dosya arasındaki fark bir tanesi çalıştırılabilir dosya iken diğeri çalıştırılamaz haldedir. Bu iki dosya için de suid biti eklenip tekrar ls -l komutu ile görüntülenirse suid bitinin biri s diğeri S ile görüntülenir.
SUID biti yukarıda anlatıldığı gibi her ne kadar kullanışlı olsa da dikkat edilmediği durumlarda tehlike oluşturabilmektedir. Örneğin hedef sistem üzerinde erişim sağlandığında SUID biti aktif dosya ve uygulamalar kullanılarak daha yetkili bir kullanıcının haklarına erişim sağlanabilir veya daha yetkili bir kullanıcıya ait dosyalara erişim sağlanabilir. Bu özellik bir saldırıdan çok yetki yükseltmek amacı ile kullanılmaktadır. Hedef sistemde root kullanıcısının yetkilerine sahip olmayı amaçlamaktadır.
Sistemde SUID biti aktif tüm uygulamaları bulmak için aşağıdaki komutu çalıştırabilirsiniz.
find / \( -perm -u+s -or -perm -g+s \) -type f -exec ls -l {} \;
Bu arama sonrası çıkan uygulamaları düzenli olarak takip etmekte ve gereksiz olanların SUID bitinin kaldırılmasında fayda var. Bu sayede sisteminizi güvende tutabilmeniz için bir adım atmış olursunuz.
Bir örnek ile istismarın işleyişini anlamaya çalışalım:
Kopayalama işlemi gerçekleştiren /bin/cp uygulamasında suid bit aktif olarak unutulmuş durumda.
Yukarıdaki ekran görüntüsünden de anlaşılacağı üzere suid bit etkin. Bu durumda cp komutunu yetkimizin olmadığı yerlere root yetkisinde dosya kopyalamak için kullanabiliriz. Öyleyse /etc/passwd dosyasının içerisini okuyalım, aynı içeriğe sahip yeni bir dosya oluşturup içerisinde kendi kullanıcımıza ait yetkileri (id değeri) root yetkisinin id değeri ile aynı değer (0:0 değerleri) yapalım ve sonra o kullanıcın oturumuna geçmeye çalışalım.
Yukarıdaki ekran görüntüsünde de görüldüğü gibi öncelikle /etc/passwd dosyasının içerisini kendimize ait bir dizin altında yeni bir dosyaya yazdık. Daha sonra kendi dizinimiz içerisindeki passwd dosyasında hacker kullanıcısının yetkisini, yani id değerini root kullanıcısının id değeri ile aynı değer yaptık. Bu işlem sonrasında kendi dizinimizdeki passwd dosyasını /etc/ dizini altına kopyalarsak root kullanıcısına ait olan /etc/passwd dosyasını değiştirmiş oluruz; çünkü cp komutu suid biti aktif olduğundan dolayı root yetkisindeymiş gibi çalışacaktır. /etc/passwd dosyasını tekrar okursak eğer, içerisinde yaptığımız değişikliklerin gerçekleşmiş olduğunu görebiliriz. Bu işlemler sonrası tek yapmamız gereken su hacker komutu ile hacker kullanıcısının görünümüne bürünmek. Ekran görüntüsünden de görülebileceği gibi artık root ($ karakterinden # karakterine) yetkisindeyiz.
Bu tür yetki yükseltme saldırılarına karşı güvende kalabilmek adına, sisteminizde düzenli aralıklarla suid biti aktif dosya ve uygulamaları tarayıp gereksiz olanların suid bitini kaldırın.