API-larni kashf qilish va ulardan foydalanish (O‘zbek tilida)
Ko‘pgina hollarda, bizning penetratsion test maqsadimiz ichki tashkilot tomonidan ishlab chiqilgan, yopiq kodli veb-ilova bo‘lib, unda bir qator Ilova dasturlash interfeyslari (API) mavjud. Bu API-lar orqa-end logikasi bilan ishlash va veb-ilovaga mustahkam funksiyalar asosini taqdim etish uchun javobgardir.
Representational State Transfer (REST) deb nomlangan maxsus API turi turli maqsadlarda, jumladan autentifikatsiya uchun ishlatiladi.
Odatda, oq-quti sinovi stsenariysida biz hujum yuzasini to‘liq xaritalashga yordam beradigan to‘liq API hujjatlarini olamiz. Biroq, qora-quti sinovi o‘tkazilganda, biz maqsadli API-ni o‘zimiz kashf qilishimiz kerak.
API nuqtalarini topish uchun Gobuster xususiyatlaridan foydalanib, qo‘pol kuch (brute force) hujumini amalga oshirishimiz mumkin. Ushbu sinov stsenariysida, bizning API shlyuz veb-serverimiz 192.168.50.16 manzilida 5001-portda ishlamoqda, shuning uchun biz kataloglar bo‘yicha qo‘pol kuch hujumini sinab ko‘rishimiz mumkin.
API yo‘llari ko‘pincha versiya raqami bilan birga keladi, bu quyidagi naqsh shaklida bo‘ladi:
/api_nomi/v1
8-ro‘yxat - API yo‘l nomlash qoidasi
API nomi ko‘pincha u ishlatadigan xususiyat yoki ma’lumotlarni tasvirlaydi va undan keyin darhol versiya raqami keladi.
Ushbu ma’lumotlardan foydalanib, so‘zlar ro‘yxatidan (wordlist) foydalanib, Gobusterning naqsh xususiyati yordamida API yo‘llarini qo‘pol kuch bilan aniqlashga harakat qilamiz. Ushbu xususiyatni -p opsiyasi orqali chaqirishimiz va naqshlarni o‘z ichiga olgan faylni taqdim etishimiz mumkin. Sinovimizni soddalashtirish uchun quyidagi matnni o‘z ichiga olgan oddiy naqsh faylini Kali tizimimizda yaratamiz:
{GOBUSTER}/v1
{GOBUSTER}/v2
9-ro‘yxat - Gobuster naqshi
Bu misolda biz "{GOBUSTER}" o‘rnini bosuvchi belgilarni ishlatmoqdamiz, bu so‘zlar ro‘yxatidagi har qanday so‘zni versiya raqami bilan birlashtiradi. Sinovimizni soddalashtirish uchun faqat ikkita versiyani sinab ko‘ramiz.
Endi quyidagi buyruq yordamida gobuster bilan API-ni aniqlashga tayyormiz:
kali@kali:~$ **gobuster dir -u <http://192.168.50.16:5001> -w /usr/share/wordlists/dirb/big.txt -p pattern**
===============================================================
Gobuster v3.1.0
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart)
===============================================================
[+] Url: <http://192.168.50.16:5001>
[+] Method: GET
[+] Threads: 10
[+] Wordlist: /usr/share/wordlists/dirb/big.txt
[+] Patterns: pattern (1 entries)
[+] Negative Status codes: 404
[+] User Agent: gobuster/3.1.0
[+] Timeout: 10s
===============================================================
2022/04/06 04:19:46 Starting gobuster in directory enumeration mode
===============================================================
**/books/v1** (Status: 200) [Size: 235]
/console (Status: 200) [Size: 1985]
/ui (Status: 308) [Size: 265] [--> <http://192.168.50.16:5001/ui/>]
**/users/v1** (Status: 200) [Size: 241]
10-ro‘yxat - API yo‘llarini qo‘pol kuch bilan aniqlash
Biz bir nechta natijalarni topdik, jumladan ikkita qiziqarli kirish nuqtasi, ya’ni /books/v1 va /users/v1 API nuqtalari.
<aside> 💡
Agar biz /ui yo‘liga kirsak, butun API hujjatlarini topamiz. Bu oq-quti sinovlarida odatiy hol bo‘lsa-da, qora-quti sinovida bunday imkoniyat odatda mavjud emas.
</aside>