Asosiy kontentga o‘tish

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.

security backend

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:

Sxema
Brauzer  ─────────────────────────────►  Server

Burp ishga tushgach, zanjir uziladi va o'rtaga tushadi:

Sxema
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.

Python
# 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.

Python
# 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#

  1. Burp Suite serverga qanday hujum qiladi? (Savolda tuzoq bor — javobni diqqat bilan yozing.)
  2. Intercept va HTTP history orasidagi farq nima? Qaysi biri kundalik ishda yoqiq turadi?
  3. Nega Burp HTTPS trafikni o'qishi uchun brauzerga sertifikat o'rnatish kerak? Bu TLS buzilganini bildiradimi?
  4. Forward va Drop tugmalari nima qiladi?
  5. Repeater'da bir vaqtda ikkita qiymatni o'zgartirish nega yomon fikr?
  6. <input type="hidden"> maydoniga yozilgan qiymat foydalanuvchi uchun ko'rinmaydi. U o'zgartira oladimi? Sababini tushuntiring.
  7. Formada maxlength="10" bo'lsa, serverga 500 belgilik qiymat kela oladimi?
  8. Yuqoridagi checkout misolida product_id ni ham tekshirish kerakmi? Nimani tekshirish kerak?
  9. Burp sertifikatini shaxsiy brauzeringizda doimiy qoldirish nega yomon?
  10. "Mijozdan kelgan ma'lumot — niyat, fakt emas" degani nima? O'z so'zingiz bilan, misol bilan.

Report uchun talablar#

  1. Skrinshot: Repeater oynasi — chap tomonda o'zgartirgan so'rovingiz, o'ngda serverning javobi.
  2. Nimani o'zgartirdingiz va javob o'zgardimi? Nega shunday bo'ldi?
  3. Yuqoridagi sozlash tuzoqlaridan qaysi biriga tushdingiz va qanday chiqdingiz. Hech biriga tushmagan bo'lsangiz — shuni yozing.
  4. 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 checkout misolini 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".

9 daqiqa 51 marta o‘qildi