Linux İşletim Sisteminde SUID Biti Zafiyeti İstismar Edilerek Çevresel Değişkenlerin Değiştirilmesi ve root Yetkilerine Hak Yükseltilmesi

Sızma testleri sırasında standart haklar ile erişim sağlanabilmiş bir bilgisayarda, hak yükseltilerek yönetici hakları elde edilmeye çalışılır. Hak yükseltmek için kullanılan yöntemlerden birisi de SUID biti uygun olarak yapılandırılmamış dosyaların yetkisizce çalıştırılmasıdır. Bu yazıda, SUID biti aktif olarak ayarlanmış “procwatch” aracına sahip Nullbyte:1 sanal makinesi üzerinde PATH çevresel değişkenine ekleme yapılacak ve “root” kullanıcısı hakkı ile komut satırı / kabuk elde edilecektir.

Yazıda kullanılan Nullbyte:1 sanal makinesi Vulnhub sitesinden indirilebilir.

https://www.vulnhub.com/entry/nullbyte-1,126/

İşletim sisteminin komut satırına erişim için TCP/777 portuna SSH ile bağlantı kurularak aşağıdaki kimlik bilgileri ile kullanılabilir.

Kullanıcı Adı: ramses
Parola: omega

Linux işletim sistemine standart yetkilerle elde edilen erişimde bir kullanıcı (ramses) haklarına sahip olunduğu görülmektedir.

id
head -3 /etc/passwd
head -3 /etc/shadow

 

procwatch” dosyasının/aracının çalıştırılabilir bir dosya olduğu, SUID bitinin etkin olduğu görülmektedir.

cd /var/www/backup/
ls -la
file procwatch

 

Araç çalıştırıldığında proses hakkında bilgi verdiği görülmektedir. Bu yapısı ile “ps” aracına benzemektedir. Üstelik SUID biti etkin olduğu için “ps” aracı “root” yetkisi ile çalışmaktadır.

./procwatch
ps

 

“procwatch” aracının arka planda çalıştırdığı “ps” aracı normalde “/bin” dizini altındadır. “procwatch” aracı çalıştığında çağıracağı “ps” aracını (çalıştırılabilir dosyaların aranacağı dizinlerin listelendiği) PATH adlı çevresel değişkendeki dizinlerde aranır. Bu dizinler içerisinde “/bin” dizini de olduğu için “ps” aracı çalıştırılabilmektedir.

which ps
echo $PATH

 

Eğer “ps” dosyası yerine Linux kabuğu (/bin/sh) çalıştırılabilirse “root” yetkisi ile komut satırı erişimi elde edilebilir. Bu amaçla “/bin/sh” kabuğunun kopyası “/tmp” dizinine “ps” olarak alınır ve PATH değişkeninin ilk elemanına da “/tmp” dizini eklenir. Böylece “/bin” altındaki “ps” değil, “/tmp” altındaki “ps” (“/bin/sh” kabuğunun kopyası) çalışacaktır.

cp /bin/sh /tmp/ps
export PATH=/tmp:$PATH
echo $PATH

 

“procwatch” aracı çalıştırıldığında “root” yetkileri ile “sh” kabuğuna erişim sağlandığı görülmektedir.

./procwatch
id
cat /etc/shadow

 

Kaynak:

https://www.nuharborsecurity.com/nullbyte-1-walkthrough/
https://blog.techorganic.com/2015/08/06/nullbyte-0x01-hacking-challenge/

 

 

Yazarın Bilgileri

Ertuğrul BAŞARANOĞLU
Ertuğrul BAŞARANOĞLU

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Kullanabileceğiniz HTLM etiketleri ve özellikleri: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

Bu sayfada incelenen konulardan doğacak sorunlar kişinin kendi sorumluluğundadır.