Maqolalar 9 daqiqa 51 ko‘rish
Burp Suite: birinchi so'rovni ushlash va o'zgartirish
Web zaifliklarini o'rganishning birinchi qadami — zaiflik emas, tool. Burp Suite'ni o'rnatamiz, brauzer serverga nima yuborayotganini o'z ko'zimiz bilan ko'ramiz va o'sha so'rovni qo'lda o'zgartirib qayta yuboramiz.
Mundarija
Zaiflik qidirishni o'rganish payloaddan boshlanmaydi. U bitta oddiy harakatdan boshlanadi: brauzer serverga nima yuborayotganini ko'rish. Ko'rmaguningizcha, siz sayt bilan emas, uning rasmi bilan ishlaysiz.
Bu darsdan keyin siz istalgan sahifaning so'rovini ushlab, undagi
xohlagan qiymatni o'zgartirib, serverga qayta yubora olasiz. Hali hech
narsa buzmaymiz — toolni qo'lga olamiz.
Bu dars kimga
Oldingi bilim talab qilinmaydi. Kerak bo'ladi: kompyuter, internet va PortSwigger'dagi bepul hisob. Burp Suite ham bepul.
Buzilgan taxmin#
Kursning butun davomida biz dasturchilarning taxminlarini sinaymiz. Birinchisi — eng katta va eng qimmatga tushadigani:
"Brauzerdan kelgan ma'lumot men kutgan ko'rinishda bo'ladi."
Dasturchi formani yozadi, maxlength="10" qo'yadi, <select> da uchta
variant beradi, tugmani disabled qiladi — va shulardan keyin serverda
qayta tekshirmaydi. Chunki uning tasavvurida brauzer — dasturining bir
qismi.
Emas. Brauzer — foydalanuvchining kompyuteridagi dastur, va u serverga nima yuborishini foydalanuvchi hal qiladi. Burp buni isbotlab beradi: so'rov brauzerdan chiqib, serverga yetmasdan oldin sizning qo'lingizda turadi.
Shu bitta jumlani eslab qolsangiz, kursning yarmi tushunarli bo'ladi.
Atamalar#
| Atama | Ma'nosi |
|---|---|
proxy |
brauzer bilan server orasida turib, trafikni ko'rsatadigan vositachi |
intercept |
so'rovni yo'lda to'xtatib turish (siz ruxsat bermaguningizcha ketmaydi) |
forward |
to'xtatilgan so'rovni serverga qo'yib yuborish |
drop |
to'xtatilgan so'rovni umuman yubormay tashlab yuborish |
HTTP history |
o'tgan barcha so'rovlar ro'yxati (to'xtatilmaganlari ham) |
Repeater |
bitta so'rovni qayta-qayta o'zgartirib yuboradigan oyna |
request / response |
so'rov / javob |
header |
so'rov yoki javobning yuqoridagi xizmat qatorlari |
body |
so'rov yoki javobning asosiy mazmuni |
status code |
javob kodi: 200, 302, 403, 500 |
CA certificate |
Burp HTTPS'ni ocha olishi uchun brauzerga o'rnatiladigan sertifikat |
scope |
e'tibor qaratilayotgan saytlar ro'yxati (qolgani shovqin) |
tool |
zaiflikni izlash/tekshirish vositasi (masalan Burp) |
Nazariya: proxy nima qiladi#
Oddiy holatda zanjir shunday:
Brauzer ─────────────────────────────► Server
Burp ishga tushgach, zanjir uziladi va o'rtaga tushadi:
Brauzer ────► Burp (127.0.0.1:8080) ────► Server
▲
│ so'rov shu yerda to'xtaydi,
│ siz uni o'qiysiz va o'zgartirasiz
Burp hech narsani "sindirmaydi". U shunchaki ko'rsatadi. Sindirishni siz qilasiz — so'rovdagi qiymatni o'zgartirib.
HTTPS bu yerda alohida muammo tug'diradi: trafik shifrlangan, ya'ni o'rtadagi hech kim uni o'qiy olmasligi kerak — TLS'ning butun maqsadi shu. Shuning uchun Burp o'zining sertifikatini brauzerga o'rnattiradi va brauzer aynan Burp'ga ishonadigan bo'ladi.
Diqqat
Burp sertifikatini faqat o'zingiz ishlatadigan brauzerga o'rnating va ishingiz tugagach olib tashlang. U o'rnatilgan brauzer uchun Burp har qanday HTTPS ulanishni ocha oladi.
Amaliyot#
1-qadamBurp Suite Community'ni o'rnatish#
Yuklab oling: portswigger.net/burp/communitydownload
Community Edition bepul va bu kurs uchun yetarli. Uning Professional'dan farqi: avtomatik skaner yo'q va Intruder sekinlashtirilgan. Ikkalasi ham bizga kerak emas — biz qo'lda ishlaymiz, aynan shuni o'rganmoqchimiz.
Birinchi ishga tushirish: Temporary project → Use Burp defaults.
Ochilgan oynada yuqorida qator tablar turadi: Dashboard, Target,
Proxy, Repeater, Intruder... Hozircha bizga faqat Proxy va
Repeater kerak.
2-qadamBurp'ning ichki brauzerini ochish#
Proxy → Intercept → Open browser tugmasi.
Nega aynan shu: ichki brauzer allaqachon Burp orqali ishlaydi va sertifikati o'rnatilgan. Ya'ni sozlash umuman kerak emas.
Tekshiruv: ochilgan brauzerda istalgan HTTPS saytni oching. Sahifa ochilsa — proxy ishlayapti.
Ko'pchilik qo'llanmalar bu yerda brauzer sozlash va sertifikat o'rnatishdan boshlaydi, o'quvchilarning yarmi esa o'sha yerda to'xtaydi. Ichki brauzer o'sha bosqichni butunlay chetlab o'tadi. O'z brauzeringizni ulash kerak bo'lsa — dars oxirida, ixtiyoriy qadam sifatida.
3-qadamBirinchi so'rovni ko'rish#
Proxy → HTTP history.
Nimani ko'rasiz: ichki brauzerda ochgan har bir sahifaning so'rovlari
jadvalda turibdi — usul (GET/POST), manzil, javob kodi.
Savol: bitta sahifa ochganingizda nechta so'rov ketdi? Nega bitta emas?
Bajaring: ro'yxatdan HTML sahifaning o'zini (odatda birinchisi) tanlang
va pastdagi Request panelida so'rovni to'liq o'qing. Har qatorini.
Mana shu — brauzer serverga yuborgan narsaning o'zi. User-Agent, Cookie,
Accept-Language — hammasini brauzer qo'shgan, va hammasi o'zgartirilishi
mumkin. Server esa bularning hech birini tekshira olmaydi: u faqat
kelgan matnni ko'radi.
Kuzating
Cookie qatorini toping. Keyingi darslarda biz aynan
shu qatordan boshlaymiz.
4-qadamRepeater: o'zgartirib qayta yuborish#
Bajaring: HTTP history dagi so'rov ustida o'ng tugma → Send to
Repeater (yoki Ctrl+R). Keyin Repeater tabiga o'ting.
Endi: so'rovdagi biror qiymatni o'zgartiring — masalan User-Agent
o'rniga o'z ismingizni yozing — va Send tugmasini bosing.
Savol: javob o'zgardimi? Server o'zgartirishni sezdimi?
Repeater — kursning eng ko'p ishlatiladigan oynasi. Zaiflik izlash aslida shu: so'rovni bir necha marta, har safar bittagina narsani o'zgartirib yuborish va javoblarni solishtirish. Bir vaqtda ikkita narsani o'zgartirsangiz, javob nimadan o'zgarganini bilmaysiz.
5-qadamPortSwigger hisobi va birinchi lab#
Ro'yxatdan o'ting: portswigger.net/web-security — bepul, faqat email kerak.
Bajaring: istalgan APPRENTICE darajali labni oching (hozircha
yechmang). Lab https://<id>.web-security-academy.net manzilida
ochiladi.
Vazifa: lab sahifasining so'rovini Repeater'ga yuboring va javob
kodini o'qing. Shu — tool tayyor degani.
Nima ishlamaydi va nega#
Bu dars zaiflik haqida emas, shuning uchun bu bo'lim sozlash tuzoqlari haqida. Deyarli hamma shularga tushadi:
1. Intercept yoqiq qolgan. Proxy → Intercept is on bo'lsa, har bir
so'rov to'xtaydi va siz Forward bosmaguningizcha sahifa ochilmaydi.
O'quvchi esa "internet buzildi" deb o'ylaydi. Kundalik ishda intercept
o'chiq turadi — HTTP history baribir hammasini yozib boradi. Intercept
faqat so'rovni yo'lda o'zgartirish kerak bo'lgandagina yoqiladi.
2. Burp yopilgan, brauzer sozlamasi qolgan. O'z brauzeringizni Burp'ga ulagan bo'lsangiz va Burp'ni yopsangiz — brauzer umuman ishlamay qoladi, chunki u yo'q proxy'ga urinadi. Sozlamani qaytaring yoki ichki brauzerdan foydalaning.
3. Sertifikat o'rnatilmagan. HTTPS saytlar "xavfsiz emas" ogohlantirishi bilan ochilmaydi. Bu Burp buzilgani emas — TLS aynan shunday ishlashi kerak. Ichki brauzerda bu muammo umuman yo'q.
4. HTTP history shovqinga to'lgan. Brauzer fon so'rovlarini ham
yuboradi (yangilanish tekshiruvi, telemetriya). Target → Scope ga
lab domenini qo'shib, history'ni filtrlash kerak.
Backend tomoni: nega bu sizga ham tegishli#
Siz endi brauzerdan kelgan har qanday qiymatni o'zgartira olasiz. Demak sizning foydalanuvchingiz ham o'zgartira oladi.
# Zaif: miqdor mijozdan keladi va shunchaki ishonib olinadi
def checkout(request):
price = Decimal(request.POST["price"]) # <-- brauzerdan
Order.objects.create(user=request.user, total=price)
Formada price yashirin maydon (<input type="hidden">) bo'lishi mumkin,
JavaScript uni hisoblab qo'ygan bo'lishi mumkin — hech qanday ahamiyati
yo'q. Repeater'da uni bir soniyada o'zgartirasiz.
# To'g'ri: narx serverda, mijoz faqat nimani xohlashini aytadi
def checkout(request):
product = get_object_or_404(Product, pk=request.POST["product_id"])
Order.objects.create(user=request.user, total=product.price)
Qoida bitta jumlada: mijozdan kelgan ma'lumot — niyat, fakt emas. Mijoz "nimani xohlashini" aytadi; "qancha turishini" server hal qiladi.
Nazorat savollari#
- Burp Suite serverga qanday hujum qiladi? (Savolda tuzoq bor — javobni diqqat bilan yozing.)
InterceptvaHTTP historyorasidagi farq nima? Qaysi biri kundalik ishda yoqiq turadi?- Nega Burp HTTPS trafikni o'qishi uchun brauzerga sertifikat o'rnatish kerak? Bu TLS buzilganini bildiradimi?
ForwardvaDroptugmalari nima qiladi?- Repeater'da bir vaqtda ikkita qiymatni o'zgartirish nega yomon fikr?
<input type="hidden">maydoniga yozilgan qiymat foydalanuvchi uchun ko'rinmaydi. U o'zgartira oladimi? Sababini tushuntiring.- Formada
maxlength="10"bo'lsa, serverga 500 belgilik qiymat kela oladimi? - Yuqoridagi
checkoutmisolidaproduct_idni ham tekshirish kerakmi? Nimani tekshirish kerak? - Burp sertifikatini shaxsiy brauzeringizda doimiy qoldirish nega yomon?
- "Mijozdan kelgan ma'lumot — niyat, fakt emas" degani nima? O'z so'zingiz bilan, misol bilan.
Report uchun talablar#
- Skrinshot: Repeater oynasi — chap tomonda o'zgartirgan so'rovingiz, o'ngda serverning javobi.
- Nimani o'zgartirdingiz va javob o'zgardimi? Nega shunday bo'ldi?
- Yuqoridagi sozlash tuzoqlaridan qaysi biriga tushdingiz va qanday chiqdingiz. Hech biriga tushmagan bo'lsangiz — shuni yozing.
- O'z loyihangizdan bitta joy toping, u yerda brauzerdan kelgan
qiymatga ishonilgan bo'lsin. Kodini keltiring va qanday tuzatish
kerakligini yozing. Loyihangiz bo'lmasa — yuqoridagi
checkoutmisolini o'z so'zingiz bilan tushuntiring.
Faqat ruxsat berilgan joyda
Burp'ni faqat PortSwigger laboratoriyasida yoki o'zingizga tegishli tizimda ishlating. Birovning saytiga proxy qo'yib so'rov o'zgartirish — jinoyat, va u hech qanday "o'rganish maqsadi" bilan oqlanmaydi.
Keyingi dars: IDOR — ruxsat tekshiruvi: so'rovdagi ID'ni almashtirib birovning ma'lumotini ochish, va nega "login qilgan — ruxsat berilgan degani emas".