Ushbu bo'limda biz Directory Traversal (yo'l o'tish) hujumlari, shuningdek, path traversal hujumlari deb ataladigan hujumlarni o'rganamiz. Bu turdagi hujum veb-serverdagi maxfiy fayllarga kirish uchun ishlatilishi mumkin va odatda veb-ilova foydalanuvchi kiritgan ma'lumotlarni to'g'ri tozalamasa (sanitizing) yuzaga keladi.

Veb-ilova ma'lum bir sahifani ko'rsatishi uchun veb-server fayl tizimidan faylni taqdim etadi. Bu fayllar veb-root direktoriyasida yoki uning ichki direktoriyalarida joylashgan bo'lishi mumkin. Linux tizimlarida /var/www/html/ direktoriyasi ko'pincha veb-root sifatida ishlatiladi. Veb-ilova sahifani ko'rsatganda, masalan, **http://example.com/file.html**, u /var/www/html/file.html faylini olishga harakat qiladi. Http havolada yo'lning bir qismi, faqat fayl nomi kiritiladi, chunki veb-root veb-server uchun asosiy direktoriya sifatida xizmat qiladi. Agar veb-ilova directory traversal zaifligiga ega bo'lsa, foydalanuvchi nisbiy yo'llarni ishlatib, veb-root tashqarisidagi fayllarga, masalan, SSH maxfiy kalitlari yoki konfiguratsiya fayllari kabi maxfiy fayllarga kirishi mumkin.

Directory Traversal zaifliklarini qanday ekspluat qilishni tushunish muhim bo'lsa-da, ularni aniqlashni bilish ham juda muhimdir. Biz har doim zaifliklarni tekshirishimiz kerak: barcha tugmalar ustiga sichqonchani olib borib, barcha havolalarni tekshirib, kirish mumkin bo'lgan barcha sahifalarga o'tib, agar imkon bo'lsa, sahifa manba kodini ko'rib chiqishimiz lozim. Havolalar ayniqsa muhim ma'lumot manbai bo'lib, parametrlarni yoki ilova haqidagi boshqa ma'lumotlarni taqdim etadi.

Masalan, quyidagi havolani topsak, undan muhim ma'lumotlarni olishimiz mumkin:

<https://example.com/cms/login.php?language=en.html>

Ro'yxat 5 - Havola misoli

Birinchidan, login.php veb-ilovaning PHP tilida yozilganligini ko'rsatadi. Bu ma'lumot ekspluatatsiya bosqichida veb-ilova qanday ishlashi haqida taxminlar qilishda yordam beradi.

Ikkinchidan, URLda language parametri mavjud bo'lib, uning qiymati HTML sahifa sifatida berilgan. Bunday holatda, biz faylni to'g'ridan-to'g'ri ochishga harakat qilishimiz kerak (**https://example.com/cms/en.html**). Agar faylni muvaffaqiyatli ochsak, en.html serverda mavjud fayl ekanligini tasdiqlaymiz, ya'ni bu parametr orqali boshqa fayl nomlarini sinab ko'rishimiz mumkin. Fayllarni qiymat sifatida ishlatadigan parametrlarni har doim diqqat bilan tekshirish kerak.

Uchinchidan, URLda cms nomli direktoriya mavjud. Bu veb-ilovaning veb-root ichidagi ichki direktoriyada ishlayotganligini ko'rsatadigan muhim ma'lumot.

Endi bir amaliy misolni ko'rib chiqamiz. Biz Mountain Desserts veb-ilovasini o'rganamiz. Uni ochish uchun Kali mashinamızdagi /etc/hosts faylini DNS nomini ishlatish uchun yangilashimiz kerak. Laboratoriyalarda nishon mashinaning IP manzili o'zgarishi mumkinligini yodda tutish lozim.

127.0.0.1       localhost
127.0.1.1       kali
**192.168.50.16   mountaindesserts.com**
...

Ro'yxat 6 - /etc/hosts fayli tarkibi

Biz ushbu hostname-ni joriy va keyingi ko'rsatmalar uchun ishlatamiz. Endi nishon veb-ilovaga **http://mountaindesserts.com/meteor/index.php** manzilida kiramiz.

image.png

1-rasm: Mountain Desserts yagona sahifali ilova

1-rasmda sahifa brauzerda ochilgandan keyingi ko'rinishi keltirilgan. Navigatsiya panelida index.php fayli ko'rsatilgan, shuning uchun veb-ilova PHP tilida yozilgan deb xulosa qilishimiz mumkin. Sahifa tuzilishi haqida ko'proq ma'lumot to'plash uchun barcha tugmalar va havolalar ustiga sichqonchanmetroqni aylantirib, parametrlarni va tashrif buyurilgan turli sahifalar haqida ma'lumot to'playmiz.

image.png

2-rasm: Tugma ustiga sichqonchani olib borish

Sahifani pastga aylantirib, barcha tugmalar va havolalar ustiga sichqonchani olib borsak, ularning aksariyati faqat o'z sahifasiga havola qilishini ko'ramiz, bu 2-rasmda ko'rsatilgan.

Sahifaning pastki qismida "Admin" deb nomlangan havola topamiz.