logo
Professional

Faol skan tekshiruvi: ishlangan misol

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

Burp Scanner'ni o'zingizning skanerlash tekshiruvlaringizni yozish orqali kengaytirishingiz mumkin. Maxsus skanerlash tekshiruvi Burp o'zi aniqlay olmaydigan yangi xavfsizlik muammolari haqida xabar berishi mumkin.

Bu amaliy misolda biz faol maxsus skanerlash tekshiruvini yozish uchun Java'dan foydalanamiz. Faol tekshiruvlar zaifliklarni izlash maqsadida qo'shimcha, o'zgartirilgan so'rovlarni yuboradi. Ulardan faqat so'rovlar o'zgartirilganda namoyon bo'ladigan muammolarni aniqlash uchun foydalaning, masalan:

  • SQL injection.
  • Server tomonidagi shablon injeksiyasi (SSTI).
  • Buyruq injeksiyasi.

Aloqador sahifalar

Bu misol soxtalashtirilgan Origin sarlavhasi bilan ikkita keyingi so'rov yuboradi. Agar server bu sarlavhani Access-Control-Allow-Origin da aks ettirsa, u muammo haqida xabar beradi. Agar Access-Control-Allow-Credentials: true ham mavjud bo'lsa, muammoning jiddiyligi oshiriladi, Vary: Origin yo'q bo'lsa esa izoh yaratiladi:

1-qadam: Javob mavjudligiga ishonch hosil qiling

Har qanday ishni boshlashdan oldin tekshiruv ishlash uchun javob mavjudligini tasdiqlaydi. Agar javob mavjud bo'lmasa, u toza tarzda ishni yakunlaydi.

Kodning tahlili

  • requestResponse Burp sizning skriptingizga uzatadigan so'rov/javob juftligini ifodalaydi.
  • hasResponse javob qabul qilinganini tekshiradi.
  • Agar hech qanday javob qabul qilinmasa, AuditResult.auditResult() bo'sh natija qaytaradi va hech qanday muammo haqida xabar berilmaydi.

2-qadam: Tasodifiy origin'lar yarating

Bu keshlash artefaktlaridan qochish va ilova ularni allowlist'ga qo'sha olmasligini ta'minlash uchun ikkita tasodifiy domen yaratadi.

Kodning tahlili

  • randomUtils().randomString(n) q1w2e3 kabi qisqa tasodifiy yorliqlar yaratadi.
  • Ham https, ham http sinovdan o'tkaziladi, chunki ba'zi serverlar ularni turlicha qayta ishlaydi.

3-qadam: Har bir origin bo'ylab aylanib chiqing

Bu quyidagi kod blokini ikki marta, tasodifiy hosil qilingan har bir origin uchun bir martadan ishga tushiradi.

Kodning tahlili

  • new String[]{evilHttps, evilHttp} ikkita soxta origin'ni saqlovchi yangi massiv yaratadi.
  • for (var origin : ...) har bir origin'ni navbat bilan tayinlaydigan for-each sikli hisoblanadi.

4-qadam: O'zgartirilgan so'rovlarni yuboring

Bu so'rovni ikki marta, har safar soxtalashtirilgan Origin sarlavhasi bilan yuboradi. Agar server javob bermasa, sikl keyingi origin'ga o'tadi.

Kodning tahlili

  • requestResponse.request() HTTP so'rov obyektini oladi.
  • withRemovedHeader("Origin") asl Origin sarlavhasini olib tashlaydi.
  • withAddedHeader("Origin", origin) so'rovga soxta qiymatli Origin sarlavhasini qo'shadi.
  • http.sendRequest(...) o'zgartirilgan so'rovni yuboradi va yangi so'rov-javob obyektini (rr) qaytaradi.
  • if (!rr.hasResponse()) server javob berganini tekshiradi.
  • continue javob bo'lmagan taqdirda siklning qolgan qismini o'tkazib yuboradi va keyingi origin'ga o'tadi.

5-qadam: Javob sarlavhalarini tekshiring

Bu server soxtalashtirilgan Origin sarlavhasini qanday qayta ishlaganini ko'rish uchun javob sarlavhalarini o'rganadi.

Kodning tahlili

  • rr.response().headers barcha javob sarlavhalarini oladi.
  • toString().toLowerCase() sarlavhalarni bitta kichik harfli satrga aylantiradi, shunda registrga sezgir bo'lmagan holda qidirishingiz mumkin.
  • Agar server soxtalashtirilgan origin'ni Access-Control-Allow-Origin da takrorlasa, reflect true bo'ladi.
  • Agar javob Access-Control-Allow-Credentials: true ni ham o'z ichiga olsa, creds true bo'ladi.
  • Agar javob Vary: Origin ni o'z ichiga olsa, vary true bo'ladi.

6-qadam: Origin aks ettirilgan bo'lsa, muammo qaytaring

Bu server hisob ma'lumotlariga ruxsat berishiga qarab topilmaning jiddiyligini belgilaydigan o'zgaruvchilarni yaratadi va Vary: Origin sarlavhasi yo'q bo'lsa izoh qo'shadi. So'ngra u muammo o'zgaruvchilarini AuditIssue ichiga o'raydi va o'sha muammoni saqlovchi AuditResult ni qaytaradi.

Kodning tahlili

  • if (reflect) server tasodifiy origin'ni Access-Control-Allow-Origin da aks ettirganini tekshiradi.
  • creds ? AuditIssueSeverity.HIGH : AuditIssueSeverity.MEDIUM hisob ma'lumotlariga ruxsat berilgan bo'lsa jiddiylikni HIGH ga, aks holda MEDIUM ga o'rnatadi.
  • var note = vary ? "" : " (missing Vary: Origin)" Vary: Origin sarlavhasi yo'q bo'lganda ogohlantiruvchi izoh qo'shadi.
  • AuditIssue.auditIssue(...) zaiflik hisobotini quradi. auditIssue ni tashkil qiluvchi elementlarning tahlili uchun Natijalar haqida xabar berish sahifasiga qarang.

7-qadam: Sarlavha mavjud bo'lganda muammo qaytarmang

Agar tekshiruv aks ettirishni aniqlamagan bo'lsa yoki 1-qadamda erta yakunlangan bo'lsa, u bo'sh natija qaytaradi va hech qanday muammo haqida xabar berilmaydi.

Ushbu maqola foydali bo'ldimi?