ld.so privesc exploit example
Ortamı hazırlayın
Aşağıdaki bölümde, ortamı hazırlamak için kullanacağımız dosyaların kodunu bulabilirsiniz
Bu dosya, özel bir kütüphane olan libcustom'un başlık dosyasıdır. Bu kütüphane, özel işlevler ve özellikler sağlamak için kullanılır.
Bu başlık dosyası, libcustom kütüphanesini kullanacak olan diğer programlar tarafından dahil edilir. Bu sayede, libcustom'un sağladığı işlevler ve yapılar kullanılabilir hale gelir.
Bu örnek, bir özel kütüphanenin nasıl yüklenip kullanılacağını göstermektedir. Aşağıdaki adımları izleyerek bu örneği uygulayabilirsiniz:
Öncelikle,
libcustom.c
adında bir C dosyası oluşturun.Ardından, aşağıdaki kodu
libcustom.c
dosyasına yapıştırın:
Daha sonra,
libcustom.c
dosyasını derlemek için aşağıdaki komutu kullanın:
Bu komut,
libcustom.c
dosyasınılibcustom.so
adında bir paylaşılan nesne dosyasına derleyecektir.Son olarak,
ld.so.conf
dosyasına aşağıdaki satırı ekleyin:
Bu satır, /usr/local/lib
dizinini paylaşılan kütüphane arama yoluna ekleyecektir.
Artık
libcustom.so
dosyasını/usr/local/lib
dizinine taşıyabilirsiniz.
Bu adımları tamamladıktan sonra, libcustom.so
dosyasını kullanarak özel bir işlevi çağırabilirsiniz.
Bu dosyaları aynı klasöre oluşturun
Kütüphaneyi derleyin:
gcc -shared -o libcustom.so -fPIC libcustom.c
libcustom.so
dosyasını/usr/lib
dizinine kopyalayın:sudo cp libcustom.so /usr/lib
(root yetkisi gerektirir)Yürütülebilir dosyayı derleyin:
gcc sharedvuln.c -o sharedvuln -lcustom
Ortamı kontrol edin
libcustom.so'nun /usr/lib dizininden yüklenip yüklenmediğini ve ikili dosyayı çalıştırabildiğinizi kontrol edin.
Sızma
Bu senaryoda, /etc/ld.so.conf/ içinde bir dosyada birisi zafiyetli bir giriş oluşturduğunu varsayacağız:
Zararlı klasör /home/ubuntu/lib (yazma erişimine sahip olduğumuz yer) içindedir. Aşağıdaki kodu indirin ve o yolu içinde derleyin:
Şimdi, hatalı yapılandırılmış yolun içine zararlı libcustom kütüphanesini oluşturduğumuza göre, bir yeniden başlatma veya kök kullanıcının ldconfig
'u çalıştırmasını beklememiz gerekiyor (bu ikiliyi sudo olarak çalıştırabilir veya suid bit'e sahipse kendiniz çalıştırabilirsiniz).
Bu gerçekleştiğinde, sharevuln
yürütülebilir dosyasının libcustom.so
kütüphanesini nereden yüklediğini yeniden kontrol edin:
Gördüğünüz gibi, /home/ubuntu/lib
'den yükleniyor ve herhangi bir kullanıcı tarafından çalıştırılırsa bir kabuk çalıştırılacak:
Bu örnekte ayrıcalıkları yükseltmedik, ancak komutları değiştirerek ve kök veya diğer ayrıcalıklı kullanıcının zafiyetli ikiliyi çalıştırmasını bekleyerek ayrıcalıkları yükseltebiliriz.
Diğer yanlış yapılandırmalar - Aynı zafiyet
Önceki örnekte, bir yönetici /etc/ld.so.conf.d/
içindeki bir yapılandırma dosyasında ayrıcalıklı olmayan bir klasör ayarladığımızı taklit ettik.
Ancak, aynı zafiyeti oluşturabilecek diğer yanlış yapılandırmalar da vardır, eğer /etc/ld.so.conf.d
klasörü içinde veya /etc/ld.so.conf
dosyasında bazı yazma izinleriniz varsa veya /etc/ld.so.conf.d
içindeki bir yapılandırma dosyasında, aynı zafiyeti yapılandırabilir ve sömürebilirsiniz.
Sömürü 2
ldconfig
üzerinde sudo ayrıcalıklarınız olduğunu varsayalım.
ldconfig
'a hangi yapılandırma dosyalarını yükleyeceğini belirtebilirsiniz, bu nedenle ldconfig
'un keyfi klasörleri yüklemesinden yararlanmak için "/tmp" klasörünü yüklemek için gerekli dosya ve klasörleri oluşturalım:
Şimdi, önceki saldırıda belirtildiği gibi, /tmp
içinde zararlı bir kütüphane oluşturun.
Ve son olarak, yolu yükleyelim ve binary'nin kütüphaneyi nereden yüklediğini kontrol edelim:
Görüldüğü gibi, ldconfig
üzerinde sudo yetkilerine sahip olmak aynı zafiyeti sömürmenizi sağlar.
Eğer ldconfig
suid bitiyle yapılandırılmışsa, bu zafiyeti sömürmek için güvenilir bir yol bulamadım. Aşağıdaki hata görüntülenir: /sbin/ldconfig.real: Can't create temporary cache file /etc/ld.so.cache~: Permission denied
Referanslar
HTB'deki Dab makinesi
Last updated