Linux izinleri alanında SUID (Set User ID), SGID (Set Group ID) ve Sticky Bit, standart dosya izinlerinin ötesinde, geçici ayrıcalıklar verme, grup erişimini kontrol etme ve veri bütünlüğünü koruma gibi güçlü işlevlere sahip özel bitlerdir.
Bu yazıda sızma testlerinde oldukça işimize yarayan, linux dosya sistemindeki bu üç özel izini inceleyeceğiz. Her bir izinin ayrıntılarına inmeye çalışacağım. Bu özel bitlerin ne olduklarını ve nasıl kullanıldıklarını ele alacağız.
Keyifli okumalar dilerim.

Linux’ta SUID Bit, SGID Bit ve Sticky Bit Nedir? Nasıl Çalışır?
SUID (Set User ID) İzni
Kullanıcı Kimliğini Ayarla (Set User ID) anlamına gelen SUID, yürütülebilir (executable) dosyalara atanabilen özel bir izindir. Yürütülebilir bir dosyada SUID izni etkinleştirilmiş ise dosyayı yürüten kullanıcıların, geçici olarak dosya sahibi yetkilerini üstlenmesine olanak tanır. Yani bir kullanıcının gerekli izinleri yoksa bile, SUID iznine sahip bir dosyada o izinlere sahip olabileceği anlamına gelir.
Sızma testlerinde yetki yükseltme aşamasında kullanılan yöntemlerden biri de SUID biti düzgün yapılandırılmamış dosyaların sömürülmesidir.
Örneğin, /etc/shadow dosyasında parolalar ve geçerlilik süreleri saklanır. Bu dosyaya sıradan kullanıcıların erişimi bulunmamaktadır. Ancak sıradan bir kullanıcı, passwd komutu ile kendi parolasını değiştirdiğinde bu dosyada kendi parola özetini değiştirmiş oluyor. Yani SUID biti sayesinde erişim hakkının bulunmadığı bu dosya üzerine erişim sağlayabiliyor.
Bir dosyanın SUID iznine sahip olup olmadığını görmek için ls -l komutunu kullanabiliriz.

ls -l komutu ile dosya izinlerini görme
Görselde de görüleceği gibi “s” harfi bulunmakta, yani SUID biti aktif.
SUID Biti Nasıl Ayarlanır?
İki şekilde yapabiliriz:
chmod u+s <dosya_adi>
veya
chmod 4xxx <dosya_adi>
Sayısal yöntemde SUID bitinin değeri 4′tür. Kalan x harfleri diğer izinler anlamına gelir.

SUID biti ayarlama
Yukarıdaki görselde görüleceği üzere text1.txt adlı dosyada SUID biti ayarlandığında, dosya sahibi izinlerine bakılacak olursa s harfini görebiliriz.
Bu s harfi yerine büyük s (S) harfi de bulunabilir. Bunu açıklayalım:

ls -l komutu ile dosya izinlerini görme
Öncelikle gördüğünüz gibi text1.txt üzerinde dosya sahibinin okuma (r), yazma (w) ve yürütme (x) izinleri varken text2.txt üzerinde yürütme (x) izni yok. Bu dosyalara SUID izni ayarladıktan sonra ls -l komutu çalıştıralım.

ls -l komutu ile dosya izinlerini görme
Görebileceğiniz gibi dosya sahibi dosyayı çalıştıramıyorken büyük s (S) harfi oluyor.
Bu izinlerin ayarlanmasında kafa karışıklığı yaşıyorsanız, chmod komutu kullanımı ile ilgili yazıma buradan ulaşabilirsiniz.
Bir sistemde SUID veya SGID biti aktif olan dosyaları bulmak için aşağıdaki komut kullanılır:
find / \( -perm -u+s -or -perm -g+s \) -type f -exec ls -l {} \;
SGID (Set Group ID) İzni
SUID biti ile aynı mantıktadır. Grup Kimliğini Ayarla (Set Group ID) anlamına gelen SGID, yürütülebilir dosya ve dizinlere atanabilen özel bir izindir. Yürütülebilir bir dosyada SGID izni etkinleştirilmiş ise dosyayı yürüten kullanıcıların, geçici olarak dosyanın grup sahipliğini üstlenmesine olanak tanır.
SGID Biti Nasıl Ayarlanır?
chmod 2xxx <dosya_adi>
Sayısal yöntemde SGID bitinin değeri 2’dir. Kalan x harfleri diğer izinler anlamına gelir.

SGID biti ayarlama
Yukarıdaki görselde görüleceği üzere text1.txt adlı dosyada SGID biti ayarlandığında, grup izinlerine bakılacak olursa s harfini görebiliriz.
Sticky İzni
Sticky bit, yalnızca dizinlerde ayarlanabilen, dosya silme işlemlerini kısıtlayan bir bittir. Ayarlandığında yalnızca dizinin sahibi olan kullanıcı ve root kullanıcısı dizin içindeki dosyaları silebilir.
Sticky bitin yaygın kullanım örneğinden biri dosya depolama için kullanılan /tmp dizinidir. Kullanıcıların burada sticky bitini aktif etmesinin sebebi, diğer kullanıcıların yanlışlıkla veya kötü niyetle dosyalara müdahale etmesinin önüne geçmektir.
Sticky Bit Nasıl Ayarlanır?
chmod o+t <dizin_adi>
veya
chmod 1xxx <dizin_adi>
şeklinde ayarlanabilir. Sayısal yöntemde Sticky bitinin değeri 1‘dir.

ls -ld komutu ile dizin izinleri görme
Yukarıdaki görseldeki gibi ls -ld komutunu çalıştırdığımzda, dizinlerin sahip olduğu izinleri görmekteyiz. Sondaki t harfi, o dizinin sticky bitine sahip olduğunu gösterir.
SUID, SGID ve Sticky bitleri dikkat edilmediği durumlarda tehlike oluşturabilmektedir. Hedef sistem üzerinde erişim sağlandıktan sonra SUID biti aktif dosyalar ile yetki yükseltmesi yapılabilir. Bu nedenle gereksiz şekilde SUID biti aktif olan dosyaların düzenlenmesi daha güvenli olacaktır.
Böylece SUID, SGID ve Sticky özel bitlerinin ne olduğunu ele almış olduk. Vakit ayırıp okuduğunuz için teşekkür ederim. Umarım faydalı olmuştur. Eğer eksik gördüğünüz ya da eklenmesi gerektiğini düşündüğünüz bir nokta varsa, yorumlarda paylaşabilirsiniz. Bir sonraki yazıda yeniden görüşmek üzere!
Kaynakça:
https://www.scaler.com/topics/special-permissions-in-linux/?source=post_page—–5d9e6ffc73da————————————— http://www.siberguvenlikportali.com/linuxsistemlerdesuidbitsgidbitvestickybitkavramlari-5?source=post_page—–5d9e6ffc73da————————————— https://canyoupwn.me/tr-suid-bit-istismari/?source=post_page—–5d9e6ffc73da—————————————#:~:text=SUID%20%28Set%20owner%20User%20ID,%C3%BCzerinde%20de%C4%9Fi%C5%9Fiklik%20yapabilir%20hale%20gelmekteyiz. https://www.cbtnuggets.com/blog/technology/system-admin/linux-file-permissions-understanding-setuid-setgid-and-the-sticky-bit?source=post_page—–5d9e6ffc73da—————————————