Privilege escalation (uyğun olmayan icazələrlə daha yüksək səviyyəyə yüksəlmə) Linux təhlükəsizliyi üçün ən çox rastlanan risklərdən biridir.
Privilege escalation-in iki əsas tipi var: horizontal (başqa istifadəçinin imzasını almaq) və vertical (normal istifadəçidən administrativ/root icazələrə keçmək). Ümumi vektorlar: SUID/SGID faylları, zəif sudo konfiqurasiyaları, yazıla bilən konfiqurasiya və skriptlər (cron), zəif fayl icazələri, konteyner və ya xidmət parametrlərindəki səhvlər, köhnəlmiş nüvə və ya tətbiq zəiflikləri.
1) SUID/SGID bitləri: SUID bitli icra olunan fayllar root hüquqları ilə işləyə bilər. Bu binarlarda giriş yoxlanışının zəif olması PrivEsc-ə səbəb ola bilər.

Gördüyünüz kimi daxil oluğumuz sistemdə find / -perm -u=s -type f 2>/dev/null bu əmr sətrində find əmri vasitəsilə / kök qovluğundan başlayaraq bütün sistemdə permission dəyəri user biti setuid olanları seçib göstər. Bu ona imkan verir ki bizim s parametri ile teyin etdiyimiz (s=executable kimi götürülür ) find əmri user bitinin aktiv olub olmadığını yoxlayır.
Bu əmrə uyğun olaraq find / -user root -perm 4000 -exec ls -ldb {} ;\ 2>/dev/null ilə də əvəz etmək olar.
- -user root — Bu seçim
find-ə bildirir ki, yalnız sahibi (owner) root olan faylları seçsin. Yəni faylın sahibinin UID-si 0 (root) olmalıdır. - -perm 4000 — faylın icazə modunun tam olaraq
4000ilə eyni olmasını tələb edir bu evvelki əmr də yazdığımız -perm -u=s ilə ekvivalentlik təşkil edir. - -exec ls -ldb {} ;\ — burada exec icra olunabilən əmri deməkdir. ls əmri bildiyimiz kimi list edir yəni -ldb parametri ile sırası ilə fayl və ya qovluq adını uzun formatda sırası ilə olduğu kimi çap edir.
2)Sudo konfiqurasiyası: Sudoers faylında geniş icazələr və ya parametr nəzarətinin olmaması müəyyən komandaların root kimi icrasını mümkün edir.
Sudo imtiyazları bir istifadəçiyə verilə bilər və sudo imtiyazlarına malik istifadəçi root istifadəçisinin hüquqları ilə əmrləri işlədə bilər. sudo ilə bir əmr işlədildikdə sistem, əmri verən istifadəçinin /etc/sudoers faylında konfiqurasiya edildiyi kimi uyğun hüquqlara malik olub-olmadığını yoxlayacaq. Bir sistemə daxil olduqda, cari istifadəçinin hər hansı sudo imtiyazına malik olub-olmadığını yoxlamaq üçün sudo -l yazmalıyıq. Bəzi hallarda sudo hüquqlarını siyahılamaq üçün istifadəçinin parolunu bilməyimiz tələb olunur; lakin əgər imtiyaz NOPASSWD seçimi ilə təyin edilibsə, həmin imtiyaz parolsuz şəkildə görünə bilər.

Burda gördüyünüz kimi /usr/bin/python3 faylı sudo əmri ilə parolsuz kimi təyin edilib. Yəni root parolunu bilmədən bu fayl ilə root kimi müəyyən əmrlər yetirib privesc etmək olar.
3)Zamanlanmış Tapşırıqların (Cron Job) Sui-istifadəsi.
Cron job-lar — Linux əməliyyat sistemində müəyyən vaxtlarda avtomatik olaraq icra olunması istənilən əmrlər və ya skriptlər üçün istifadə edilən zamanlama xidmətidir. İstifadəçilər hər hansı prosesi müəyyən aralıqlarla (məsələn, hər gün, hər həftə) və ya müəyyən vaxtlarda (günün konkret saatında) avtomatik işləyəcək şəkildə qura bilərlər. Bu xidmət müntəzəm ehtiyat nüsxələrinin yaradılması, sistem yeniləmələrinin aparılması və ya müəyyən tapşırıqların avtomatlaşdırılması kimi əməliyyatlar üçün çox faydalıdır. Cron job-lar tək dəfəlik də qurula bilər (məsələn, kompüter hər açıldığında icra olunmaq üçün).
crontab əmri vasitəsilə göstərilən zamanlamaya uyğun olaraq cron daemon tərəfindən icra ediləcək bir cron faylı yaradıla bilər. Crontab faylındakı hər qeyd altı elementi özündə birləşdirməlidir: dəqiqə, saat, gün, ay, həftə və əmr.
İstifadəçi səviyyəsində zamanlanmış tapşırıqlar əlavə etmək üçün crontab -e əmri istifadə olunur. Bu halda tapşırıqlar həmin istifadəçinin səlahiyyətləri ilə icra edilir və zamanlanmış tapşırıq əlavə edilərkən istifadəçi adı ayrıca göstərilmir.
Sistem ümumi vəzifələri üçün /etc/crontab faylı istifadə olunur. Bu faylda təyin edilmiş zamanlanmış tapşırıqlarda istifadəçi adı göstərilir, yəni tapşırıq həmin istifadəçi hüquqları ilə icra edilir. Bu faylı yalnız root istifadəçisi və ya tam sudo səlahiyyətlərinə malik olan istifadəçi redaktə edə bilər; lakin yenə də sui-istifadə edilə bilər. Əgər root icazəsi ilə işləyən və hamı tərəfindən yazıla bilən bir skript tapsanız, onun sonuna öz əmrinizi əlavə edə bilərsiniz. Bu skript cron tapşırığı işə düşdükdə, sizin əlavə etdiyiniz əmrlər root hüquqları ilə icra olunacaq.

Yuxarıda göründüyü kimi, /etc/crontab faylını redaktə etmək səlahiyyətimiz yoxdur. Lakin faylın ən altındakı qeydə baxdıqda, backup_log.sh adlı bir skriptin zamanlanmış tapşırıq olaraq hər dəqiqə root hüquqları ilə icra olunduğunu görürük.
3)İmtiyazlar (Capabilities)
Linux Capabilities — əməliyyat sisteminin proseslərə root istifadəçisinin bütün səlahiyyətlərini vermək əvəzinə, yalnız lazım olan icazələri təyin etməsinə imkan yaradan bir girişə nəzarət mexanizmidir. Bu, sistemin təhlükəsizliyini artırır, çünki proseslər yalnız öz funksiyaları üçün zəruri olan hüquqlarla məhdudlaşdırılır.
Məsələn, bir tətbiqin şəbəkə portlarında dinləmə aparması üçün tam root imtiyazına ehtiyacı yoxdur; bunun əvəzinə, yalnız bu əməliyyatı yerinə yetirmək üçün tələb olunan CAP_NET_BIND_SERVICE adlı imtiyaza malik olması kifayətdir. Bu mexanizm sayəsində hansı proseslərin müəyyən səlahiyyətlərə çıxış edə biləcəyinə daha dəqiq nəzarət təmin olunur və bu da ənənəvi UNIX modelindən (istifadəçi və qrup əsaslı icazə sistemi) daha təhlükəsiz yanaşma təqdim edir.
Lakin digər təhlükəsizlik xüsusiyyətləri kimi, Linux imtiyazları da hücumçular tərəfindən sui-istifadə edilə bilər. İmtiyazların səhv və ya həddindən artıq təyin olunması proseslərin lazım olduğundan artıq hüquqlara malik olmasına gətirib çıxara bilər. Bu isə potensial olaraq həssas məlumatlara çıxış əldə etmək və ya icazəsiz əməliyyatlar icra etmək üçün istifadə oluna bilər.
Ümumilikdə, Linux imtiyazları praktik və güclü bir təhlükəsizlik xüsusiyyətidir, lakin onların düzgün və diqqətli şəkildə idarə olunması vacibdir. Əks halda bu mexanizm təhlükəsizlik zəifliyinə çevrilə bilər.
Set Capability
İmtiyazları təyin etmək üçün setcap əmri istifadə olunur. Bu əmrlə icra olunan fayllara və ya proqramlara konkret imtiyazlar verilə bilər.
Əmr nümunəsi belədir:

Burada:
cap_net_bind_service→ proqramın 1024-dən kiçik portlarda dinləmə icazəsini təmin edir,+ep→ bu imtiyazın fayl üzərində effektiv (e) və permitted (p) rejimdə aktivləşdirildiyini göstərir.
Beləliklə, proqram root icazəsinə sahib olmadan müəyyən əməliyyatları yerinə yetirə bilir, bu da həm təhlükəsiz, həm də idarəolunan mühit yaradır.
Ümid edirəm faydalı olmuşdur! Təşəkkürlər!
Bizi izləyin:
Telegram (Kanal): https://t.me/xakeraz_official
Paylaşımların səliqəli yığılmış halı: https://t.me/xakerazgroup
Fikir və şərhləriniz : https://t.me/xakerazchat