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 dosyaları makinenizde aynı klasörde oluşturun
Kütüphaneyi derleyin:
gcc -shared -o libcustom.so -fPIC libcustom.c
libcustom.so
'yu/usr/lib
'ye kopyalayın:sudo cp libcustom.so /usr/lib
(root yetkileri)Çalıştırılabilir dosyayı derleyin:
gcc sharedvuln.c -o sharedvuln -lcustom
Ortamı kontrol et
libcustom.so'nun /usr/lib'den yüklenip yüklenmediğini ve ikili dosyayı çalıştırıp çalıştıramadığınızı kontrol edin.
Exploit
Bu senaryoda birinin /etc/ld.so.conf/ içinde savunmasız bir giriş oluşturduğunu varsayacağız:
Kırılgan klasör /home/ubuntu/lib (yazılabilir erişimimizin olduğu yer). Aşağıdaki kodu o yolun içinde indirin ve derleyin:
Artık yanlış yapılandırılmış yol içinde kötü niyetli libcustom kütüphanesini oluşturduğumuza göre, bir yeniden başlatma veya root kullanıcısının ldconfig
komutunu çalıştırmasını beklememiz gerekiyor (eğer bu ikiliyi sudo olarak çalıştırabiliyorsanız veya suid biti varsa, bunu kendiniz çalıştırabileceksiniz).
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üklüyor ve eğer herhangi bir kullanıcı bunu çalıştırırsa, bir shell çalıştırılacaktır:
Bu örnekte ayrıcalıkları yükseltmediğimizi, ancak yürütülen komutları değiştirerek ve kök veya diğer ayrıcalıklı kullanıcıların savunmasız ikili dosyayı yürütmesini bekleyerek ayrıcalıkları yükseltebileceğimizi unutmayın.
Diğer yanlış yapılandırmalar - Aynı zafiyet
Önceki örnekte, bir yöneticinin /etc/ld.so.conf.d/
içindeki bir yapılandırma dosyasına ayrıcalıksız bir klasör ayarladığı bir yanlış yapılandırmayı taklit ettik.
Ancak, /etc/ld.so.conf.d
içindeki bazı yapılandırma dosyalarında yazma izinleriniz varsa, /etc/ld.so.conf.d
klasöründe veya /etc/ld.so.conf
dosyasında aynı zafiyeti yapılandırabilir ve bunu istismar edebilirsiniz.
İstismar 2
ldconfig
üzerinde sudo ayrıcalıklarınız olduğunu varsayalım.
ldconfig
'e konfigürasyon dosyalarının nereden yükleneceğini belirtebilirsiniz, bu nedenle ldconfig
'in keyfi klasörleri yüklemesini sağlamak için bunu avantaja çevirebiliriz.
Şimdi, "/tmp" yüklemek için gereken dosya ve klasörleri oluşturalım:
Şimdi, önceki istismarda belirtildiği gibi, kötü niyetli kütüphaneyi /tmp
içinde oluşturun.
Ve sonunda, yolu yükleyelim ve ikili dosyanın kütüphaneyi nereden yüklediğini kontrol edelim:
Gördüğünüz gibi, ldconfig
üzerinde sudo ayrıcalıklarına sahip olduğunuzda aynı güvenlik açığını istismar edebilirsiniz.
Last updated