Ushbu modulning keyingi qismlarida duch keladigan zaifliklardan muvaffaqiyatli foydalanishimiz uchun biz ko‘rsatmoqchi bo‘lgan, yuklamoqchi bo‘lgan, kiritmoqchi bo‘lgan yoki ishga tushirmoqchi bo‘lgan fayllarning yo‘lini aniq ko‘rsatishimiz kerak bo‘ladi. Veb-ilovaning turiga va zaiflikka qarab, biz mutlaq yoki nisbiy yo‘llardan foydalanamiz. Shu sababli, ularning orasidagi farqni tushunish va fayl yo‘llarini ko‘rsatishda ularni qanday ishlatish mumkinligini bilish muhimdir.
Mutlaq yo‘lga murojaat qilish uchun biz fayl tizimidagi to‘liq yo‘lni, barcha ichki kataloglar bilan birga ko‘rsatamiz. Mutlaq yo‘lni fayl tizimidagi istalgan joydan ko‘rsatishimiz mumkin. Linux tizimida mutlaq yo‘llar oldida / belgisi bilan boshlanadi va bu belgi ildiz (root) fayl tizimini bildiradi.1 Shundan boshlab, biz fayl tizimi bo‘ylab harakatlana olamiz.
Keling, bir fayl mazmunini ko‘rsatishda mutlaq yo‘ldan foydalanamiz. /home/kali/ yo‘li bilan boshlab, /etc/passwd faylining tarkibini ko‘rsatamiz.
Biz kali foydalanuvchisining bosh katalogidan boshlaymiz va pwd buyrug‘i bilan hozirgi yo‘limizni tekshiramiz. Ikkinchi buyruq ls / esa ildiz fayl tizimidagi barcha fayl va kataloglarni ko‘rsatadi. Natijada ko‘rinib turibdi: etc katalogi shu yerda joylashgan. Uchinchi buyruqda etc dan oldin / belgisi ishlatilgani sababli biz mutlaq yo‘ldan foydalanayapmiz. Bu shuni anglatadiki, biz fayl tizimidagi istalgan joydan /etc/passwd yo‘li orqali ushbu faylga murojaat qila olamiz. Agar boshlanishidagi / belgisi bo‘lmaganida, terminal ushbu etc katalogini kali foydalanuvchisining bosh katalogida qidirgan bo‘lardi, chunki biz terminalda aynan shu katalogdamiz.
kali@kali:~$ **pwd**
**/home/kali**
kali@kali:~$ **ls /**
bin home lib32 media root sys vmlinuz
boot initrd.img lib64 mnt run tmp vmlinuz.old
dev initrd.img.old libx32 opt sbin usr
**etc** lib lost+found proc srv var
kali@kali:~$ **cat /etc/passwd**
root:x:0:0:root:/root:/usr/bin/zsh
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
...
king-phisher:x:133:141::/var/lib/king-phisher:/usr/sbin/nologin
kali:x:1000:1000:Kali,,,:/home/kali:/usr/bin/zsh
Ro‘yxat 1 – /etc/passwd faylining mazmunini mutlaq yo‘l orqali ko‘rsatish
Endi esa shu natijaga nisbiy yo‘l orqali erishamiz. Ya’ni, kali foydalanuvchisining bosh katalogidan turib, /etc/passwd faylining mazmunini ko‘rsatamiz. Bir katalog orqaga qaytish uchun ../ dan foydalanamiz. Bir necha katalog orqaga harakatlanish uchun esa bir nechta ../ ketma-ketligini birlashtiramiz.
Masalan, ls buyrug‘ini bitta ../ bilan birga ishlatib, /home katalogini ko‘rishimiz mumkin. Chunki ../ – bu bir daraja yuqoriga chiqish demak. Keyin esa ikki marta ../ yozib ildiz fayl tizimiga chiqamiz, u yerda etc katalogi mavjud.
kali@kali:~$ **pwd**
**/home/kali**
kali@kali:~$ **ls ../**
kali
kali@kali:~$ **ls ../../**
bin home lib32 media root sys vmlinuz
boot initrd.img lib64 mnt run tmp vmlinuz.old
dev initrd.img.old libx32 opt sbin usr
**etc** lib lost+found proc srv var
Ro‘yxat 2 – "../" orqali ildiz fayl tizimiga chiqish
Bu nuqtadan boshlab fayl tizimi bo‘ylab odatdagidek harakatlana olamiz. Masalan, ikki marta ../ va etc ni qo‘shib, /etc katalogidagi fayl va kataloglarni ko‘rsatamiz. Oxirgi buyruqda esa biz cat buyrug‘i orqali passwd faylining mazmunini ko‘rsatamiz. Bu safar nisbiy yo‘l orqali: ../../etc/passwd
kali@kali:~$ **ls ../../etc**
adduser.conf debian_version hostname logrotate.d **passwd**
...
logrotate.conf pam.d rmt sudoers zsh
kali@kali:~$ **cat ../../etc/passwd**
root:x:0:0:root:/root:/usr/bin/zsh
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
...
king-phisher:x:133:141::/var/lib/king-phisher:/usr/sbin/nologin
kali:x:1000:1000:Kali,,,:/home/kali:/usr/bin/zsh
Ro‘yxat 3 – /etc/passwd faylini nisbiy yo‘l orqali ko‘rsatish
Keling, yana bir misolni tahlil qilaylik. Garchi biz yuqorida ko‘rgan cat ../../etc/passwd buyrug‘i bilan /etc/passwd faylini ko‘rishimiz mumkin bo‘lsa ham, bu natijaga ortiqcha ../ ketma-ketliklari orqali ham erishishimiz mumkin.
kali@kali:~$ **cat ../../../../../../../../../../../etc/passwd**
root:x:0:0:root:/root:/usr/bin/zsh
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
...
king-phisher:x:133:141::/var/lib/king-phisher:/usr/sbin/nologin
kali:x:1000:1000:Kali,,,:/home/kali:/usr/bin/zsh
Ro‘yxat 4 – Nisbiy yo‘lga ko‘proq "../" qo‘shish orqali faylga murojaat qilish