Bir makineye düşük yetkili bir kabuk (shell) aldınız, sonra ne olacak? Pentest'te asıl iş çoğu zaman o andan sonra başlar. Yetki yükseltme (privilege escalation) yeni başlayanların en çok zorlandığı konu, çünkü ezberlenecek komut değil, geliştirilecek bir bakış açısı. Bu rehberde Linux tarafında en sık karşılaşılan yol yükseltme yollarını kendi lab'ınızda deneyebileceğiniz şekilde topladım.
Konuda anlatılacaklar
- Yetki yükseltme nedir, neden önemli?
- İlk keşif (enumeration) mantığı
- SUID binary'ler
- sudo yanlış yapılandırmaları
- Cron job'lar
- Linux capabilities
- Otomasyon araçları
- Savunma ve yasal uyarı
Yetki Yükseltme Nedir?
Yetki yükseltme, sistemde sahip olduğunuz sınırlı yetkiyi (ör. www-data veya normal kullanıcı) daha yüksek bir yetkiye (çoğunlukla root) çıkarma işlemidir. Pentest raporunda "düşük yetkili erişim" ile "root erişim" arasındaki fark, müşteri için risk seviyesini tamamen değiştirir.
Temel felsefe: sistem, yanlış yapılandırma veya güncel olmayan bileşen barındırıyorsa, normal kullanıcının yetkisi genişletilebilir.
İlk Keşif (Enumeration)
Yetki yükseltmenin yüzde 80'i doğru keşiftir. Elle bakılacak temel yerler:
id # mevcut kullanıcı ve gruplar
sudo -l # sudo ile neler çalıştırabiliyoruz
uname -a # kernel sürümü
cat /etc/os-release
ps aux # çalışan süreçler
ls -la /etc/cron* # zamanlanmış görevler
find / -perm -4000 -type f 2>/dev/null # SUID dosyalar
getcap -r / 2>/dev/null # capabilitiesSUID Binary'ler
SUID (Set User ID) biti olan bir program, çalıştıran kişinin değil, dosya sahibinin yetkisiyle çalışır. Sahibi root olan ve SUID'li bir binary, kötü tasarlanmışsa root yetkisiyle komut çalıştırmanıza yol açabilir.
find / -perm -4000 -type f 2>/dev/nullÇıkan listede standart dışı veya bilinen suistimal edilebilir binary'ler (ör. find, vim, nano, cp bazı sürümlerde) varsa, GTFOBins sitesi hangi binary'nin nasıl suistimal edildiğini gösterir. Örnek fikir (find SUID ise):
# find SUID ise root shell
find . -exec /bin/sh -p \; -quitsudo Yanlış Yapılandırmaları
sudo -lÇıktı, parolasız çalıştırabileceğiniz komutları gösterebilir. Örneğin bir kullanıcı (ALL) NOPASSWD ile bir metin editörü ya da betik dili çalıştırabiliyorsa, bu çoğu zaman root'a giden kapıdır (yine GTFOBins referansı). Eski sudo sürümlerindeki bilinen CVE'ler de (ör. Baron Samedit) kontrol edilmelidir.
Cron Job'lar
Zamanlanmış görevler root olarak çalışıyor olabilir. Eğer root'un çalıştırdığı bir script'e yazma yetkiniz varsa veya script güvensiz bir PATH kullanıyorsa, oraya kendi komutunuzu ekleyebilirsiniz.
cat /etc/crontab
ls -la /etc/cron.d/ /etc/cron.daily/
# root'un çalıştırdığı, herkese yazılabilir bir script var mı?
find / -writable -name "*.sh" 2>/dev/nullLinux Capabilities
Capabilities, root yetkisini küçük parçalara böler. Bir binary'ye tehlikeli bir capability (ör. cap_setuid) atanmışsa, SUID olmasa bile yetki yükseltmeye yarayabilir.
getcap -r / 2>/dev/nullÖrneğin bir Python binary'sinde cap_setuid+ep görürseniz, bu genelde root'a giden bir yoldur.
Otomasyon Araçları
Elle keşfi öğrendikten sonra hız için:
- LinPEAS - en kapsamlı otomatik keşif script'i
- linux-smart-enumeration (lse.sh)
- pspy - root yetkisi olmadan çalışan süreçleri/cron'ları izler
Önerim: önce elle keşfi kavrayın, araçları sonra kullanın. Yoksa LinPEAS çıktısı sizin için anlamsız bir duvar olur.
Savunma Tarafı
- Gereksiz SUID bitlerini kaldırın, SUID envanteri çıkarın.
- sudo kurallarını daraltın; NOPASSWD'i kabuk/editör çalıştıran komutlara vermeyin.
- Cron script'lerini root'a özel, yalnızca root yazabilir yapın; tam yol kullanın.
- Capabilities'i düzenli denetleyin.
- Kernel ve paketleri güncel tutun.
Lab Önerisi
Pratik için TryHackMe "Linux PrivEsc", HackTheBox retired makineleri ve bilerek zafiyetli VM'ler birebir. Hepsi kendi hesabınızda, izinli ortamlardır.
Yasal Uyarı
Yetki yükseltme teknikleri yalnızca kendi sistemlerinizde veya yazılı izin/eğitim platformu kapsamında denenmelidir. İzinsiz sistemlerde uygulanması TCK 243-245 kapsamında suçtur.
Görsel: TurkTeam özgün kapak görseli
