Demak, veb-xavfsizlik tadqiqotchisi bo'lmoqchimisiz?

Hacking usullarini hozirgi eng ilg'or darajadan ham nariga surish va topilmalaringizni infosec hamjamiyati bilan bo'lishish sizni qiziqtiradimi? Bu postda men veb-xavfsizlik tadqiqotchisi bo'lish haqida ba'zi maslahatlarni bo'lishaman — bular shu yo'lni o'zim bosib o'tayotganimda uchratgan imkoniyatlar va tuzoqlar asosida shakllangan.
Veb-xavfsizlik tadqiqotchisi kim?
Veb-xavfsizlik tadqiqotchilari — SQLi va XSS kabi ma'lum hacking usullaridan foydalanishdan nariga o'tib, veb-saytlarga qarshi yangi tahdidlarni topadigan odamlar. Bular mavjud usullarni kuchliroq qiladigan yangiliklar (masalan, lokal+ko'r XXE ekspluatatsiyasiga bunday yondashuv) yoki butunlay yangi tahdid sinflari (masalan, Web Cache Deception) bo'lishi mumkin.
Veb-saytlarni noma'lum hujum usullaridan himoya qilish nihoyatda qiyin, shuning uchun ular ko'pincha aks holda xavfsiz bo'lgan juda ko'p saytni ekspluatatsiya qilishda ishlatilishi mumkin. Ya'ni bunday kashfiyotlarni e'lon qilib, saytlarga tuzatish imkonini berish xavfsizlik ekotizimi salomatligi uchun hal qiluvchi ahamiyatga ega.
E'tibor bering, ba'zi odamlar 'xavfsizlik tadqiqotchisi' atamasini kengroq ma'noda ishlatadi — hujumkor xavfsizlik sohasida ishlaydigan har qanday kishiga nisbatan, hatto ular faqat tayyor vosita va usullarni qo'llasa ham.
Buzish evaziga tirikchilik qilish
Ko'p tadqiqot mavjud usullarni bir oz nariga surish haqida, shuning uchun birinchi qadam — hozirgi eng ilg'or daraja bilan yaxshi tanishish. Bunga erishishning eng tez yo'li — vaqtingizning ko'p qismini veb-hacking usullarini qo'llashga sarflaydigan ish topish. Ko'p yaxshi odamlar xavfsizlik sohasiga kirish haqida batafsil maslahat bergan, shuning uchun bu qismni qisqa qilaman.
Men amaliyotga yo'naltirilgan yondashuvni tavsiya qilaman: bizning Web Security Academy'dan boshlang, so'ng hackxor.net kabi ochiqroq masalalarga o'ting, HackerOne va BugCrowd'dagi yumshoq, kam mukofotli maqsadlar orqali rivojlaning va nihoyat yaxshi tanilgan, yuqori to'lovli bounty dasturlariga yeting. Bir nechta ommaga oshkor qilingan zaifligingiz bo'lgach, xavfsizlik konsalting kompaniyasiga qo'shilib, har kuni hacking bilan shug'ullanish ancha oson bo'ladi. Shunga qaramay, bug bounty ovi hammaga ham mos kelmaydi — shuning uchun biz ko'nikmalaringizni isbotlash va to'liq stavkali hacking ishiga kirishning muqobil yo'li sifatida Burp Suite Certified Practitioner sertifikatini ishga tushirdik.
Yo'lda sizga yordam beradigan bepul onlayn manbalar ko'p: bizning Web Security Academy, HackerOne'ning Hacker101 va OWASP testing guide. Kitoblardan esa WebApp Hacker's Handbook va The Tangled Web'ni o'qishni tavsiya qilaman. Yuqorida eslatilgan Web Security Academy WebApp Hacker's Handbook'ning faol yuritiladigan, interaktiv o'rinbosari bo'lishi ko'zda tutilgan, ammo barcha tegishli mavzularni qamrab olishimizga biroz vaqt kerak — shuning uchun hozircha ikkalasidan ham foydalanishni maslahat beraman.
Ma'lum usullardan nariga o'tish
To'liq stavkada narsalarni buzishni boshlaganingizda dastlab juda ko'p narsa o'rganasiz, ammo bir muddatdan keyin, agar o'rganishni davom ettirish uchun ongli harakat qilmasangiz, texnik tajribangiz to'xtab qoladi. O'zingizga shu to'siqda to'xtashga yo'l qo'ymaslik — veb-xavfsizlik tadqiqotchisi bo'lish yo'lidagi eng muhim qadam.
Unutilgan bilimni ovlang
Hamma biladi: soha mutaxassislarini, yangiliklar to'plamlarini va xavfsizlik konferensiyalarini kuzatib, yangiliklardan xabardor bo'lib turish kerak. Men hatto shu maqsadda subreddit ham yuritaman: r/websecurityresearch. Biroq faqat yangiliklarni kuzatish — unutilgan va e'tibordan chetda qolgan tadqiqotlar xazinasini o'tkazib yuborish demakdir.
Har safar sifatli blog post o'qiganingizda, butun arxivni o'qing. Bu ko'pincha bebaho, unutilgan ma'lumot parchalarini ochib beradi. Masalan, RSnake'ning 2009-yilda yozilgan DNS rebinding haqidagi postini oling. DNS rebinding veb-saytlardagi IP/faervolga asoslangan kirish nazoratini butunlay chetlab o'tadi va uni yumshatishning yagona samarali yo'li — ilovangiz HTTP Host sarlavhasini oq ro'yxatga olishi. Shunga qaramay, o'sha paytda odamlar buni brauzerlar yumshatgan deb tez xulosa qilishdi; bu unutilgan zaiflik faqat to'qqiz yil o'tib bir qator ekspluatatsiyalar bilan yana ommaviy e'tiborga qaytdi.
Arxivlarni ko'rib chiqish, shuningdek, kimdir allaqachon qilgan ishni takrorlab vaqt sarflashdan saqlaydi — masalan, CSS hujumini o'n yildan keyin qayta ixtiro qilishdan. Shunga qaramay, ba'zi tadqiqotlarni topish haqiqatan qiyin, shuning uchun vaqti-vaqti bilan takrorlanish muqarrar. Mening bir tadqiqotchi bilan e'lon qilingan usulda to'qnashuvim bo'lgan, keyin ikkalamiz ham kuza55 xuddi shu ishni besh yil oldin qilganini bilib qoldik. Demak, tadqiqotni takrorlamaslikka harakat qiling, lekin baribir shunday bo'lsa — vahima qilmang, bu hammamiz bilan sodir bo'ladi.
Xilma-xillik to'plang
Boshqalar o'tkazib yuboradigan bog'lanishlarni ulash va imkoniyatlarni ilg'ash uchun turli manbalardan ma'lumot to'plash hal qiluvchi ahamiyatga ega. Boshlash uchun: o'zingizni faqat xavfsizlik kontentini o'qish bilan cheklamang — hujjatlar ham ekspluatatsiya qurish qo'llanmasi bo'la olishini tezda bilib olasiz. Yana, bu ancha ravshan bo'lishi mumkin, lekin muammolarni Google'da qidirish va X/Reddit/StackOverflow'ga yaxshi shakllantirilgan savollar berish bilan bir qatorda, hamkasblardan ham so'rang — hamjamiyatda odamlar ommaga oshkor qilishni tanlamagan juda katta bilim aylanib yuribdi.
Bundan tashqari, o'z tajribangiz ham xilma-xil bo'lishiga harakat qiling.
Xavfsizlik konsalting kompaniyasi uchun qora quti pentestlarini bajarish sizni tashqi va ichki veb-ilovalarning keng doirasi bilan tanishtiradi — bug bounty dasturida bunday ilovalarni kamdan-kam uchratasiz. Ammo vaqt cheklovlari sizni bitta maqsad bilan oylab bug bounty ovi qilishdan keladigan yaqinlik bilan ilovani tushunish imkonidan mahrum qiladi. Va garchi u ko'pincha sekin va cheklangan bo'lsa-da, oq quti manba kodini ko'rib chiqish o'rnini bosib bo'lmaydigan muqobil nuqtai nazar berib, qora quti testeri hech qachon o'ylab topa olmaydigan hujumlarni taklif qiladi. Tadqiqotni oziqlantirish uchun ideal holda uchalasining sog'lom aralashmasi kerak. CTF o'ynash va veb-ilovalar kodlash kabi qo'shimcha tajribalar ham foydali nuqtai nazarlar qo'shishi mumkin.
Hech bir g'oya juda ahmoqona emas
Tushib qolish mumkin bo'lgan eng yomon tuzoqlardan biri — ajoyib g'oyani "kimdir buni allaqachon payqagan bo'lardi" yoki "bu ishlash uchun juda ahmoqona" deb o'ylab, sinab ko'rmasdan halok qilish. Men ham bunga aniq tushib qolganman — bitta tadqiqot shunday xato tufayli bo'lishi kerak bo'lganidan ikki yil kech keldi. Bir xil parolni qayta-qayta kiritib autentifikatsiyani chetlab o'tishmi yoki noutbukdan telefonga o'tib Google boshqaruv sahifasiga kirishmi — keyingi ajoyib ekspluatatsiyangizga yo'l juda ahmoqona g'oyani talab qilishi mumkin.
Qulaylikdan voz keching
Agar biror usul qiyin, mashaqqatli yoki xavfli degan nomga ega bo'lsa — bu qo'shimcha tadqiqotga o'ta muhtoj mavzu. Qulaylik zonamdan ancha tashqarida bo'lgan mavzularni o'rganishga majbur bo'lganim tufayli qayta-qayta yutuqlarga erishganimdan keyin, yangi topilmalarga eng tez yo'l — sizni noqulay his qildiradigan mavzularni faol izlash degan qarorga keldim. Ehtimol, bu mavzulardan boshqa hakerlar ham qochadi va bu ularga jiddiy tadqiqot salohiyatini beradi. Menimcha, 2005-yilda birinchi marta hujjatlashtirilgan va 2016-yilda DEF CON'da yana taqdim etilgan usulni olib, 2019-yilda undan $70 000 mukofot ishlab olganimning yagona mantiqiy izohi shu.
Takrorlang, ixtiro qiling, ulashing
Takrorlang
Boshlashning eng oson yo'li — kimningdir istiqbolli tadqiqotini topish, unga boshqa usullarni qo'shib rivojlantirish, so'ng yangi yondashuvingizni jonli maqsadlarga qo'llab, biror qiziq narsa yuz beradimi-yo'qmi ko'rish.
Masalan, CORS noto'g'ri sozlanishi haqidagi bu post qiziq xatti-harakatni ko'rsatdi va bu xatti-harakat keng tarqalganini aytdi, lekin uning alohida saytlarga ta'sirini o'rganishgacha yetmadi.
Men bu tushunchani olib, uni bug bounty saytlariga qo'lladim — u yerda ta'sirni qonuniy o'rganishim va ular qo'llagan yumshatishlarni chetlab o'tishga urinib ko'rishim mumkin edi. Yo'l davomida keng tarqalgan ochiq yo'naltirish ekspluatatsiya usullaridan foydalanib bir necha yaxshilanish kiritdim, CORS spetsifikatsiyasini o'qib 'null' origin usulini topdim va kesh zaharlash imkoniyatlarini o'rgandim.
Bu jarayonning hech bir qismi kutilmagan sezgi sakrashlari yoki g'ayrioddiy texnik bilim talab qilmadi, shunga qaramay yakuniy mahsulot — 'Exploiting CORS misconfigurations for Bitcoins and bounties' — yaltiroqroq ishlar bilan bir xil darajada yaxshi qabul qilindi.
Ixtiro qiling
Boshqalarning ishi ustida takrorlash ajoyib, lekin eng yaxshi tadqiqot ko'pincha yo'qdan paydo bo'lganday tuyuladi — Relative Path Overwrite yoki Web Cache Deception kabi. Mening qarashimcha, bunday kashfiyotlar ipuchi vazifasini bajaradigan shaxsiy tajribalar tufayli yuzaga keladi. Men ularni izlar yoki non ushoqlari deb atayman, chunki ular ko'pincha sirli bo'ladi va foydali kashfiyotga yetaklashi uchun ancha ko'p ushoq kerak bo'lishi mumkin.
Masalan, 2011-yilda men addons.mozilla.org ishlatgan CSRF himoyasini yorishga urinardim. Token tekshiruvini chetlab o'tgan edim, lekin ular Referer sarlavhasidagi host joriy saytga mos kelishini ham tekshirardi. Men sla.ckers forumida yordam so'radim va 'barbarianbob' Django joriy sayt hostini HTTP Host sarlavhasiga qarab aniqlashini, buni esa X-Forwarded-Host sarlavhasi bilan almashtirish mumkinligini payqadi. Buni Flash sarlavha inyeksiyasi zaifligi bilan birlashtirib CSRF tekshiruvini chetlab o'tish mumkin edi, lekin eng muhimi — bu birinchi non ushog'i edi: u ilovalar o'z joriy manzilini bilish uchun host sarlavhasiga tayanishi mumkinligini ishora qildi.
Bir muddat o'tgach men Piwik'ning parolni tiklash funksiyasi manba kodiga qaradim va taxminan bunday ko'rinishdagi qatorni topdim:
$passwordResetLink = getCurrentUrlWithoutQueryString() + $secretTokenAha, deb o'yladim. Piwik PHP ishlatadi, uning yo'l bilan ishlashi esa kulgili — demak men http://piwik.com/reset.php/foo;http://evil.com manzilida parolni tiklashni so'rashim mumkin, natijada ikkita havolali xat keladi va maxfiy token evil.com'ga yuboriladi. Bu g'oya ishladi, menga mukofot keltirdi va keyingi topilma uchun poydevor qo'ydi.
Uchinchi va oxirgi ushoq — Piwik bu zaiflikni qanday tuzatishga urinishi bo'ldi: ular getCurrentUrlWithoutQueryString() ni getCurrentUrlWithoutFileName() bilan almashtirishdi. Bu men endi ekspluatatsiya uchun yo'ldan foydalana olmasligimni anglatardi. Django bilan oldingi uchrashuv tufayli men kodga chuqurroq kirib, Piwik joriy host nomini qanday aniqlashini topishga qaror qildim va Django kabi ular ham HTTP host sarlavhasidan foydalanishini bilib oldim — ya'ni zaharlangan parol tiklash xatlarini osongina yarata olardim. Ma'lum bo'lishicha, bu usul addons.mozilla.org'da ham, Gallery'da ham, Symfony'da ham, Drupal'da ham va boshqa bir talay saytda ishladi — bu esa nihoyat 'Practical HTTP Host Header Attacks'ga olib keldi.
Kashfiyot jarayonini shunday batafsil bayon qilib, umid qilamanki, tadqiqotni sirdan xoli qildim va uni yo'qdan o'z-o'zidan paydo bo'lgan g'oyaga kamroq o'xshatdim. Shu nuqtai nazardan qaralganda, asosiy mahorat (mavjud bilim va tajriba kengligidan tashqari) bu non ushoqlarini tanib olish va ularning ortidan qat'iyat bilan quvishda ekan. Buni qanday qilishni hali aniq ifodalab bera olmayman, lekin sizni "bu hech qanday mantiqqa to'g'ri kelmaydi" deyishga majbur qiladigan har qanday narsani iz sifatida qabul qilishni bilaman.
Ulashing
Nihoyat, tadqiqotingizni hamjamiyat bilan bo'lishish hal qiluvchi ahamiyatga ega. Bu obro'yingizni oshirishga yordam beradi va, ehtimol, ish beruvchingizni sizga ko'proq tadqiqot vaqti ajratishga ko'ndiradi. Bundan tashqari, bu vaqtni behuda sarflashdan saqlaydi va keyingi tadqiqotni rag'batlantiradi — izoh yozuvchilar siz bilmagan oldingi ishlarni ko'rsatishda juda yaxshi, boshqa tadqiqotchi sizning g'oyalaringiz ustida qurayotganini ko'rishdan qoniqarliroq narsa esa yo'q.
Iltimos, tub burilish yasovchi kashfiyot, ikkita logotip va taqdimotingiz yo'qligi uchun usul yoki g'oya ulashishga arzimaydi deb o'ylamang — bor narsangizni shunchaki e'lon qiling (ideal holda blogda, X/Twitter kabi yomon indekslanadigan yopiq platformada emas). X tadqiqotni targ'ib qilish uchun yaxshi, lekin hamma ham u yerda emas — r/websecurityresearch kabi muqobil kanallardan ham foydalanishni tavsiya qilaman.
Tadqiqotni ulashayotganda usulingiz haqiqiy ilovani ekspluatatsiya qilishda qo'llanganiga kamida bitta misol ko'rsatish doim foydali. Bu bo'lmasa, odamlar muqarrar ravishda uni tushunishda qiynaladi va uning amaliy qiymati borligiga shubha qilishi mumkin.
Nihoyat, taqdimotlar kengroq auditoriyaga yetish uchun ajoyib, lekin infosec sirkiga tushib qolib, kunlaringizni o'tgan taqdimotlarni takrorlash bilan o'tkazishdan ehtiyot bo'ling.
Xulosa
Men o'zim ham veb-xavfsizlik tadqiqoti haqida hali ko'p narsa o'rganishim kerak, shuning uchun bir necha yildan keyin bu mavzuga ancha ko'proq tushuncha bilan qaytishga umid qilaman. Shuningdek, boshqa tadqiqotchilarda boshqacha qarashlar borligini kutaman va ular ulashishga qaror qilgan har qanday tushunchadan o'rganishni intiqlik bilan kutaman.
- Arxivlarni o'qib, unutilgan bilimni ovlang
- Iloji boricha ko'proq turli manbadan ma'lumot iste'mol qiling
- Qiyin/qo'rqinchli mavzularni afzal ko'ring
- Takrorlang, ixtiro qiling va ulashing
- Hech bir g'oya juda ahmoqona emas
Agar bu post foydali bo'lgan bo'lsa, 'Hunting Evasive Vulnerabilities' taqdimotim ham yoqishi mumkin — unda odamlar nega zaifliklarni o'tkazib yuborishi va ularni qanday topish mumkinligi chuqur ko'rib chiqilgan; shuningdek 'How I choose a security research topic'. Nihoyat, boshlash uchun o'qiydigan narsa izlayotgan bo'lsangiz, yillik 'Top 10 Web Hacking Techniques' to'plamimizdan tashqari men yillar davomida meni ilhomlantirgan turli bloglar ro'yxatini tuzganman. Omad va zavq bilan!