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
Paylaşım müəllifi: Valida Babayeva ( https://medium.com/@validababayeva222 )
Paylaşıma istinad: https://medium.com/@validababayeva222/rootme-ctf-3d0329ae3951
Əgər CTF-i öz kali’nizdə işləmək istəyirsinizsə, VPN-i açmalısınız (Lian_Yu CTF-inin həllini yazdığım məqalədə VPN-i necə öz kali-nizdə açacağınız haqqında yazmışam).Bu CTF-də isə AttackBox-la işləyəcəm. Bunun üçün ‘Deploy the Machine’ hissəsində olan ‘Start Machine’ sözünə klikləyirsiniz.

Daha sonra CTF-in adının yazıldığı hissənin aşağısında ‘Start AttackBox’ hissəsinə klikləyirsiniz və 2–3 dəqiqədən sonra maşınınız işləmək üçün hazır olacaq:

Indi isə CTF-in həllinə keçə bilərik:
İlk Enumeration-la başlayacıq (“Enumeration” sistematik şəkildə məlumat toplamaq və ya problemin həlli və ya zəiflikdən istifadə etmək üçün faydalı ola biləcək potensial hədəflərin və ya resursların müəyyən edilməsi prosesinə aiddir.)
Nmap tool-undan istifadə edərək, hansı portların açıq olduğunu, portlarda hansı servislərin işlədiyini görməyə çalışaq:

22 və 80 portlarının açıq olduğunu, 22-ci portda ssh servisinin işlədiyini, 80 portunda çalışan Apachenin 2.4.29 versiyası olduğunu sadəcə bir kommand vasitəsilə aşkar etdik.İndi 80 portumuz açıq olduğuna görə sayta daxil olub baxaq (http://10.10.188.249):

Bu şəkildə bir səhifə qarşılayır bizi.İndi source code-una baxaq, ola bilsin ki, CTF-in həllinə kömək edəcək məlumat tapa bildik source code-dan:

Source code-da CTF-in həllinə kömək edə biləcək hər hansı bir məlumatla qarşılaşmadıq.
Hansı assetlərə giriş edə biləcəyimizi görmək üçün gobuster tool-unu çalışdıraq indi:

u-dan sonra assetlərini müəyyən etmək istədiyimiz URL-i yazırıq, -w-dən sonra isə wordlist təyin etməliyik. Wordlist üçün medim.txt idealdır, çünki böyük olmadığından daha tez vaxtda nəticə almağımıza kömək edir.Yuxarıda gördüyümüz kimi 5 asset açıqdır (4-ünə giriş icazəmiz var(status code-u 301 olanlara), 1-inə yoxdur (status code-u 403 olana (forbidden)).Bu assetlərdən /panel olan daha diqqət çəkici görünür, daxil olaq:

Bu şəkildə bir səhifə qarşılayır bizi.Bura hər hansı bir faylı yükləyib shell ala bilərik:

Bu kataloqa keçid etsək burda ‘php-reverse-shell.php’ adlı bir faylın olduğunu görəcəyik.Bu fayldan istifadə edərək reverse shell ala bilərik.

Sadəcə ‘PUT_THM_ATTACKBOX_IP_HERE’ hissəsinə öz İP-mizi yazırıq(dırnaqları silməyin!), port hissəsini istəyinizə görə dəyişə də bilərsiniz, dəyişməyə də (mən 1234 olaraq saxladım) və daha sonra bu php faylını sayta yükləyək.Browse hissəsinə klik edib faylı seçin və Upload klikləyin:

Yükləməyə icazəmiz yoxdur.phpfaylı yaradarkən adətən .php uzantısından istifadə edirik, amma bundan başqa .php3, .php4, .php5, .php7, .phtml və s. bu kimi uzantılardan da istifadə edə bilərik.Təxmin edirik ki, faylın uzantısının .php olduğu aşkar edildi və ona görə yükləmə icazəmiz olmadı.Ona görə də faylın uzantısını dəyişək:

mv kommandından istifadə edərək faylın adını dəyişərkən mv (dəyişmək istədiyimiz ad) (yeni ad) kimi yazırıq.İndi yenidən faylı yükləməyə çalışaq:

Və budur, uğurla faylı yükləyə bildik.İndi netcat tool-u vasitəsilə təyin etdiyimiz 1234 portunu dinləyək:

-v (verbose mode (daha geniş məlumat əldə etmək üçün))
-l (listen (dinləmə rejimi))
-p (port (portu təyin etmək üçün yazırıq))
İndi 1234 portunu dinləyirik, amma shell almaq üçün sayta yüklədiyimiz php faylının hara yükləndiyini tapıb onu işə salmalıyıq.
Gobuster tool-u vasitəsilə assetləri taparkən /uploads adlı bir asset çıxardığını xatırlayırsınızmı?
Böyük ehtimal ki, ora yüklənib php faylı.Gəlin baxaq: (http://ip/uploads)

Yüklədiyimiz faylın üzərinə klik edib onu işə salırıq və netcatın bizim üçün nə edəcəyinə baxırıq:

Və budur shell aldıq.İndi istifadəçi flag-ını tapmağa çalışaq:

ls (list) kommandını çalışdırdığımız zaman çox kataloq olduğunu görürük.user.txt-nin harda olduğunu tapmaq üçün ‘find’ kommandından istifadə edək:

/ olduğumuz kataloqu göstərir; 2 isə errorları göstərir; > yönləndirmə deməkdir; /dev/null- a göndərilən məlumatlar isə itir
Yekun olaraq kommandın izahı belədir: Olduğumuz kataloqda user.txt-ni axtar, errorları (permission denied) /dev/null-a göndər və nəticədə user.txt-nin harda olduğunu görürük (/var/www kataloqundadır)

/var/www kataloquna keçid edib user.txt faylını oxuyuruq cat kommandı vasitəsilə və ilk flag-ı əldə etmiş oluruq.İndi isə imtiyazlarımızı yüksəltmək lazımdır ki, root-un flagını əldə edə bilək, bunun üçün axtarırıq ki, hansı faylların SUİD icazəsi var.Bunun üçün find / -user root -perm /4000 2>/dev/null kommandından istifadə edirik və çıxan faylların içində qəribə bir fayl görürük (/usr/bin/python)

İndi isə bu fayldan istifadə edək.Gtfobins(privilege escalation etmək üçün faydalı kommandlar yer alır bu saytda) saytına daxil olub axtarış hissəsinə python yazaq:

pyhton sözünün üstünə klik edib bütün funksiyalara baxa bilərsiniz, lakin bizə SUİD funksiyası lazımdır:

ikinci kodu yazaq ./ olmadan (çünki belə bir faylımız yoxdur)

Lakin kodu icra edə bilmirik.Ona görə də shell-i stabilləşdirməliyik.Shelli stabilləşdirdikdə icra edə bilmədiyimiz kommandları icra edə bilirik.Stabilləşdirmə üçün aşağıdakı kommanddan istifadə edə bilərsiniz (qeyd etməyiniz məsləhətdir, tez-tez istifadə edilir):
python -c ‘import pty;pty.spawn(“/bin/bash”)’

Indi isə bayaqkı kommandı bir də icra edək:

# bu işarə artıq root olduğumuzu göstərir. Təxmin edirik ki, root.txt root kataloqunun içində olacaq:

Və root-un da flag-ını əldə etdik
Ümid edirəm ki, sizin üçün faydalı olmuşdur 🙂