logo
ProfessionalCommunity Edition

Burp Suite'da HTTP/2 bilan ishlash

Oxirgi yangilanish: 23-iyul, 2026O'qish vaqti: 1 daqiqa

Hozirda ko'plab serverlar HTTP/2 ni qo'llab-quvvatlaydi. Bu ularni faqat HTTP/1 tilida gaplashadigan vositalar yordamida sinab ko'rish imkonsiz bo'lgan potentsial zaifliklarga ochiq qoldiradi. Burp Suite HTTP/2 asosidagi testlash uchun tengsiz qo'llab-quvvatlashni taqdim etadi va sizga HTTP/2 so'rovlari bilan boshqa hech qanday vosita qila olmaydigan usullarda ishlash imkonini beradi. Siz quyidagilardan birini tanlashingiz mumkin:

  • Xabar muharririda so'rovning HTTP/1 uslubidagi ko'rinishi bilan ishlash Burp siz kiritgan har qanday o'zgarishlarni normallashtiradi va serverga ekvivalent HTTP/2 so'rovini yuboradi. Bu siz foydalanayotgan protokol muhim bo'lmagan hollarda umumiy testlash uchun juda qulay.
  • Inspector'da HTTP/2 ko'rinishi bilan ishlash Bu serverga yuboriladigan sarlavhalar (header) va psevdo-sarlavhalarning aniqroq ko'rinishini beradi. Bu ko'rinish hech qanday HTTP/1 sintaksisiga tayanmagani uchun, u sizga bir qator faqat HTTP/2 ga xos vektorlar yordamida hujumlar qurish imkonini ham beradi.

Burp'ning noyob HTTP/2 imkoniyatlari sizga shu paytgacha mos vositalar butunlay yo'qligi sababli deyarli tekshirilmagan mutlaqo yangi hujum yuzasini o'rganish imkonini beradi. Nimalar mumkinligiga oid real misollar bilan tanishish uchun tadqiqotchilarimizdan biri bu imkoniyatlardan foydalanib request smuggling uchun keng tarqalgan yangi vektorni qanday aniqlagani va undan qanday foydalanganini ko'rib chiqing.

Asosiy tushunchalar

Ichki tuzilishi jihatidan HTTP/2 HTTP/1 dan juda farq qiladi. Ushbu imkoniyatlardan maksimal darajada foydalanishingizga yordam berish uchun biz tegishli asosiy tushunchalarning qisqacha sharhini taqdim etdik.

Standart protokol

Sukut bo'yicha Burp TLS qo'l siqishi (handshake) davomida ALPN orqali HTTP/2 ni qo'llab-quvvatlashini e'lon qilgan barcha serverlar bilan HTTP/2 tilida gaplashadi. Bu siz hech qanday protokolga xos testlash o'tkazmayotgan bo'lsangiz ham, imkoni bo'lgan joyda HTTP/2 beradigan unumdorlik yaxshilanishlaridan foydalana olishingizni ta'minlaydi.

Bundan tashqari, siz loyiha uchun standart protokolni o'zgartirish orqali bu xatti-harakatni joriy ehtiyojlaringizga moslashtirishingiz mumkin. Bu doimo HTTP/1 dan foydalanish zarur bo'lgan testlashni o'tkazayotganingizda foydali. Zarur bo'lsa, Inspector'da protokolni almashtirish orqali alohida HTTP/2 so'rovlarini yuborishingiz mumkin.

Qaysi protokoldan foydalanayotganingizni kuzatib borish

Protokol darajasidagi zaifliklarni sinab ko'rayotganda, har bir so'rov uchun qaysi protokol ishlatilayotganini bilishingiz muhim. Bu ma'lumot bir qancha joylarda ko'rsatiladi:

  • Xabar muharririda so'rov qatori va holat qatori protokol versiyasini o'z ichiga oladi. Bu HTTP/1 xabarlari uchun odatiy hol, ammo muharrirdagi HTTP/2 xabarlari ko'rinishiga ham taalluqli.
  • Burp Repeater'da joriy protokol ekranning yuqori o'ng burchagida, maqsadli host yonida ko'rsatiladi.
  • Inspector'da Request Attributes bo'limi protokol versiyasini ko'rsatadi. Tahrirlab bo'lmaydigan kontekstlarda, masalan proxy tarixida, ajratib ko'rsatilgan protokol faqat ma'lumot uchun xizmat qiladi. Burp Proxy'da ushlab qolgan yoki Burp Repeater'ga yuborgan so'rovlaringiz uchun so'rovni yuborishda qaysi protokoldan foydalanmoqchi ekanligingizni almashtirishingiz mumkin.

So'rov uchun protokolni o'zgartirish

Standart protokol sozlamalaringizdan qat'i nazar, har bir so'rovni yuborish uchun qaysi protokol ishlatilishini qo'lda tanlashingiz mumkin. Buning uchun Inspector > Request Attributes ostidagi almashtirish tugmasidan foydalaning.

Protokolni o'zgartirganingizda, Burp yangi protokol uchun to'g'ri formatda ekvivalent so'rov yaratish uchun zarur o'zgartirishlarni amalga oshiradi. Bu shuni anglatadiki, siz alohida so'rovlarni ehtiyojga qarab osongina yuqoriroq yoki pastroq protokolga o'tkazishingiz mumkin.

Sukut bo'yicha, so'rovlarni HTTP/2 ga faqat server TLS qo'l siqishi davomida ALPN orqali buni qo'llab-quvvatlashini aniq e'lon qilgan taqdirdagina o'tkaza olasiz. Agar yashirin HTTP/2 qo'llab-quvvatlashini tekshirish uchun baribir HTTP/2 so'rovlarini yuborib ko'rmoqchi bo'lsangiz, avval Repeater menyusidan Allow HTTP/2 ALPN override parametrini yoqishingiz kerak.

Eslatma

Inspector'da ishlaganda, HTTP/1 sintaksisi yordamida ma'lumot yo'qotmasdan aniq ifodalab bo'lmaydigan HTTP/2 so'rovini yaratish mumkin. Burp bunday so'rovni "kettled" so'rov deb ataydi. Agar bunday so'rovni pastroq protokolga o'tkazmoqchi bo'lsangiz, Burp sizni so'rov muharrirda ko'rsatilishi uchun normallashtirilishi kerakligi haqida ogohlantiradi.

Kettled so'rovlar

Inspector sizga HTTP/1 sintaksisi yordamida ma'lumot yo'qotmasdan aniq ifodalab bo'lmaydigan HTTP/2 so'rovlarini yaratish imkonini beradi. Mashhur tadqiqotlar direktorimiz James Kettle sharafiga biz bunday so'rovlarni tavsiflash uchun "kettled" atamasini o'ylab topdik.

Masalan, HTTP/2 da sarlavha qiymatining ichiga yangi qator belgisini qo'shish texnik jihatdan mumkin. Buni HTTP/1 da ko'rsatishning iloji yo'q, chunki yangi qator sarlavhaning tugaganini bildiradi, shuning uchun undan keyingi hamma narsa keyingi sarlavha nomining boshlanishi kabi ko'rinar edi.

So'rov bir marta kettled bo'lgach, xabar muharriri uning HTTP/1 ekvivalentini ko'rsatishga urinmaydi. Siz hamon xabarning tanasini ko'ra olasiz, ammo sarlavhalar o'rniga Burp so'rov nima uchun kettled deb hisoblanishini tushuntiruvchi bildirishnomani ko'rsatadi. Agar kettled so'rovning sarlavhalariga qo'shimcha o'zgartirishlar kiritmoqchi bo'lsangiz, Inspector'dan foydalanishingiz kerak.

Eslatma

Burp Proxy, Repeater, Logger va Scanner ayni paytda kettled so'rovlarni qo'llab-quvvatlaydi. Agar kettled so'rovni ularni qo'llab-quvvatlamaydigan vositaga, masalan Intruder'ga yuborsangiz, u muharrirda ko'rsatilishi uchun normallashtiriladi.

So'rov nima sababdan kettled bo'lib qolishi mumkin?

Inspector yordamida quyidagi o'zgartirishlarni kiritganingizda so'rovlar kettled bo'lib qoladi:

  • Sarlavha nomiga bosh harf yoki ikki nuqta qo'shish.
  • Sarlavha nomi yoki qiymatiga yangi qator belgisini qo'shish.
  • :scheme psevdo-sarlavhasining qiymatini o'zgartirish.
  • :path yoki :method psevdo-sarlavhasiga bo'sh joy belgisini qo'shish.
  • Takrorlanuvchi psevdo-sarlavha qo'shish.
  • Cookie qiymatiga nuqtali vergul va bo'sh joy belgisini qo'shish.

So'rovni kettled holatidan chiqarish

Agar tasodifan so'rovni kettled qilib qo'ysangiz, uni bu holatdan chiqarishning bir necha yo'li bor. Siz quyidagilarni qilishingiz mumkin:

  • Ctrl/Cmd + Z tugmalari yordamida o'zgarishlaringizni bekor qiling.
  • Inspector yordamida so'rovning kettled bo'lishiga sabab bo'lgan aniq o'zgarishlarni qo'lda qaytaring. Qanday o'zgartirishlar kiritish kerakligini bilish uchun muharrirdagi bildirishnomani tekshiring.
  • Inspector'dagi almashtirish tugmasi yordamida so'rovni HTTP/1 ga tushiring va o'zgarishlaringiz yo'qolishi haqidagi ogohlantirishni rad eting. Burp so'rovni normallashtiradi va HTTP/1 ga mos kelmaydigan barcha o'zgarishlarni amalda bekor qiladi.

Kettled so'rovlar va kengaytmalar

Kengaytmalar yangi kettled so'rovlarni yaratishi va yuborishi mumkin, shuning uchun siz allaqachon HTTP/2 asosidagi testlash uchun o'z kengaytmalaringizni ishlab chiqishingiz mumkin. Biroq, kengaytmalar ayni paytda Burp tomonidan yuborilgan kettled so'rovlarni o'zgartira olmaydi. Buning sababi ular Burp so'rovlarining faqat normallashtirilgan, HTTP/1 uslubidagi ko'rinishiga kirish huquqiga ega.

HTTP/2 sozlamalari

Burp bo'ylab HTTP/2 bilan ishlashda uning xatti-harakatini sozlash imkonini beruvchi bir qator sozlamalar mavjud.

Standart protokolni o'zgartirish

Sukut bo'yicha Burp TLS qo'l siqishi davomida ALPN orqali qo'llab-quvvatlashni e'lon qilgan barcha serverlar bilan HTTP/2 tilida gaplashadi. Biroq siz standart protokolni o'zgartirib, siz aniq HTTP/2 so'rovini yuborishni aytmaguningizcha HTTP/1 dan foydalanishiga erishishingiz mumkin. Buning uchun Settings > Network > HTTP ga o'ting va Default to HTTP/2 if the server supports it parametridan belgini olib tashlang.

Agar siz aynan HTTP/1 ni talab qiladigan zaiflikka, masalan klassik CL.TE yoki TE.CL request smuggling ga e'tibor qaratayotgan bo'lsangiz, buni qilishni xohlashingiz mumkin.

Siz hamon bu global sozlamani alohida so'rovlar uchun Inspector > Request Attributes ostidagi Protocol almashtirgichi yordamida bekor qilishingiz mumkin.

HTTP/2 uchun Repeater parametrlari

Ekranning yuqori qismidagi Repeater menyusi orqali HTTP/2 so'rovlarini qayta ishlashda Burp Repeater'ning xatti-harakatini boshqaruvchi quyidagi parametrlarga kirishingiz mumkin.

Enforce protocol choice on cross-domain redirections

Sukut bo'yicha Repeater domenlararo yo'naltirishlarda protokolni odatdagidek muzokara qiladi. Agar bu parametrni yoqsangiz, u har qanday domenlararo yo'naltirishni Inspector > Request Attributes ostida tanlangan protokol yordamida kuzatib boradi. Bu domenlararo so'rovlarni keltirib chiqaradigan HTTP/2 ga xos zaifliklarni sinab ko'rishda muhim.

Enable HTTP/2 connection reuse

Sukut bo'yicha Repeater bir nechta HTTP/2 so'rovlari uchun bir xil ulanishdan qayta foydalanadi. Ba'zi serverlar har bir ulanishdagi birinchi so'rovga keyingi so'rovlardan farqli munosabatda bo'ladi, bu esa zaifliklar goh paydo bo'lib, goh yo'qolib turgandek ko'rinishiga yoki umuman sezilmay qolishiga olib kelishi mumkin. Boshqa serverlarda esa ba'zan so'rov ulanishni buzadi, lekin server uni uzmaydi va bu barcha keyingi so'rovlar qanday qayta ishlanishiga sezdirmasdan ta'sir qiladi.

Agar shu muammolardan biriga duch kelsangiz, bu parametrni o'chirib, yuborayotgan so'rovingiz doimo ulanishdagi birinchi so'rov bo'lishini ta'minlash orqali ularni yumshatishingiz mumkin.

Strip Connection header over HTTP/2

Sukut bo'yicha, HTTP/2 so'rovi Connection sarlavhasini o'z ichiga olganda, Burp so'rovni serverga yuborishdan oldin uni olib tashlaydi. Buning sababi ko'plab HTTP/2 serverlari ushbu sarlavhani o'z ichiga olgan so'rovlarni rad etadi.

Agar baribir Connection sarlavhasini yuborib tajriba o'tkazmoqchi bo'lsangiz, bu parametrni o'chirib qo'yishingiz mumkin.

Allow HTTP/2 ALPN override

Bu sozlamani yoqish server ALPN orqali HTTP/2 qo'llab-quvvatlashini e'lon qilmagan taqdirda ham Burp Repeater'dan HTTP/2 so'rovlarini yuborish imkonini beradi. Bu sizga Burp Scanner tomonidan xabar qilingan har qanday "yashirin HTTP/2" hujum yuzasini o'rganish yoki yashirin HTTP/2 qo'llab-quvvatlashini qo'lda sinab ko'rish imkonini beradi.

Proxy tinglovchilari uchun HTTP/2 ni o'chirish

Ba'zi kamdan-kam hollarda, masalan mijozda o'zining HTTP/2 amalga oshirilishi bilan bog'liq muammolar bo'lganda, siz mijoz va Burp proxy tinglovchisi o'rtasidagi ulanishda HTTP/2 ni o'chirib qo'yishni xohlashingiz mumkin. Buning uchun Settings dialogini ochish uchun Settings tugmasini bosing. Tools > Proxy ga o'ting va Proxy listeners ostidan tegishli tinglovchini tanlang, so'ng Edit tugmasini bosing. Dialogda HTTP/2 yorlig'iga o'ting va Support HTTP/2 belgilash katagidan belgini olib tashlang. Shundan so'ng Burp bu ulanishda mijoz HTTP/2 dan foydalanmoqchi bo'lsa ham faqat HTTP/1 ni qabul qiladi.

E'tibor bering, bu Burp va server o'rtasidagi ulanishga ta'sir qilmaydi.

Burp'da HTTP/2 uchun kutilayotgan yaxshilanishlar

Burp'ning HTTP/2 qo'llab-quvvatlashida ba'zi cheklovlar mavjud. Biz ayni paytda quyidagi yaxshilanishlar ustida ishlayapmiz.

Kettled so'rovlarni yanada kengroq qo'llab-quvvatlash

Ayni paytda Burp'ning ba'zi vositalari, eng muhimi Burp Intruder, kettled so'rovlarni qayta ishlay olmaydi. Biz kelgusi versiyalarda Burp'ning barcha vositalarida kettled so'rovlar bilan ishlash imkonini berishni maqsad qilganmiz.

Ushbu maqola foydali bo'ldimi?