1-Amaliy: Mamlakatimizda axborot xavfsizligiga oid qonunlar bilan tanishish


Download 0.57 Mb.
bet21/26
Sana13.01.2023
Hajmi0.57 Mb.
#1090020
1   ...   18   19   20   21   22   23   24   25   26
10-Amaliy: SQL injection.
SQL in'ektsiyasi - bu ma'lumotlar bazasiga ruxsatsiz kirish yoki manipulyatsiya qilish uchun SQL bayonotiga zararli kodni kiritishni o'z ichiga olgan hujum turi. Bu yerda SQL in'ektsiya hujumlari qanday amalga oshirilishi mumkinligiga bir nechta misollar:
Kirish tekshiruvi: tajovuzkor dastur tomonidan toʻgʻri tekshirilmagan kirish formasi kabi ariza maydoniga zararli kodni kiritishi mumkin.
URL parametrlari orqali in'ektsiya: Buzg'unchi SQL bayonotida ishlatiladigan URL parametriga zararli kodni kiritishi mumkin, bu ularga ma'lumotlar bazasiga kirish yoki manipulyatsiya qilish imkonini beradi.
Cookie-fayllar orqali yuborish: Buzg'unchi SQL bayonotida ishlatiladigan cookie-faylga zararli kodni kiritishi mumkin, bu ularga ma'lumotlar bazasiga kirish yoki manipulyatsiya qilish imkonini beradi.
Foydalanuvchi-agent orqali in'ektsiya: Buzg'unchi zararli kodni SQL bayonotida ishlatiladigan foydalanuvchi-agent qatoriga kiritishi mumkin, bu ularga ma'lumotlar bazasiga kirish yoki manipulyatsiya qilish imkonini beradi.
Ko'r-ko'rona SQL in'ektsiyasi: Buzg'unchi hech qanday ko'rinadigan xato xabarlarisiz shakl maydoni yoki parametriga zararli kodni kiritishi mumkin, bu ma'lumotlar bazasidan ma'lumotlarni olish uchun ishlatilishi mumkin.
Ittifoqqa asoslangan SQL in'ektsiyasi: Buzg'unchi UNION operatori yordamida SQL bayonotiga zararli kodni kiritishi mumkin, bu ikki yoki undan ortiq SELECT bayonotlarining natijalarini birlashtirish va ma'lumotlar bazasidan ma'lumotlarni chiqarish uchun ishlatilishi mumkin.
Xatoga asoslangan SQL in'ektsiyasi: tajovuzkor SQL bayonotiga zararli kodni kiritishi mumkin, bu esa jadval va ustun nomlari kabi ma'lumotlar bazasi tuzilishi haqidagi ma'lumotlarni ochib berishi mumkin.
SQL inyeksion hujumlarining oldini olish uchun foydalanuvchi kiritgan ma'lumotlarni to'g'ri tekshirish va foydalanuvchi kiritgan ma'lumotlar ilova tomonidan to'g'ri ishlanishi va SQL kodi sifatida talqin qilinmasligiga ishonch hosil qilish uchun tayyorlangan bayonotlar yoki parametrlangan so'rovlardan foydalanish muhim ahamiyatga ega. Bundan tashqari, eng kam imtiyozlardan foydalanish muhim, boshqacha qilib aytganda, foydalanuvchiga ma'lumotlar bazasiga minimal kirish huquqini berish kerak, bu bilan tajovuzkor unga kirsa ham, zarar etkazish uchun katta kuchga ega bo'lmaydi.
SQL inyeksion - bu ma'lumotlar bazasini yo'q qilishi mumkin bo'lgan kod kiritish usuli.
SQL inyeksion veb-buzg'unchilikning eng keng tarqalgan usullaridan biridir.
SQL inyeksion - bu zararli kodni SQL bayonotlarida veb-sahifa kiritish orqali joylashtirish.
SQL in'ektsiyasi odatda foydalanuvchidan foydalanuvchi nomi/foydalanuvchi identifikatori kabi ma'lumotlarni so'raganingizda sodir bo'ladi va ism/id o'rniga foydalanuvchi sizga ma'lumotlar bazasida bilmagan holda ishga tushadigan SQL bayonotini beradi.
Tanlangan satrga o'zgaruvchini (txtUserId) qo'shish orqali SELECT iborasini yaratadigan quyidagi misolga qarang. O'zgaruvchi foydalanuvchi kiritishidan olinadi (getRequestString):
txtUserId = getRequestString("UserId");
txtSQL = "SELECT * FROM Users WHERE UserId = " + txtUserId;
1=1 ga asoslangan SQL in'ektsiyasi har doim to'g'ri
Yuqoridagi misolga yana qarang. Kodning asl maqsadi foydalanuvchi identifikatori bilan foydalanuvchi tanlash uchun SQL bayonotini yaratish edi.
Agar foydalanuvchining "noto'g'ri" kiritishiga to'sqinlik qiladigan hech narsa bo'lmasa, foydalanuvchi quyidagi kabi "aqlli" kiritishni kiritishi mumkin:
Foydalanuvchi IDsi: 105 YOKI 1=1
Keyin, SQL bayonoti quyidagicha ko'rinadi:
Hisoblashda SQL injection - bu ma'lumotlarga asoslangan ilovalarga hujum qilish uchun ishlatiladigan kodni kiritish usuli bo'lib, unda zararli SQL bayonotlari bajarish uchun kirish maydoniga kiritiladi (masalan, ma'lumotlar bazasi tarkibini tajovuzkorga tashlash uchun). SQL in'ektsiyasi ilovaning dasturiy ta'minotidagi xavfsizlik zaifligidan foydalanishi kerak, masalan, foydalanuvchi kiritgan ma'lumotlar SQL bayonotlariga o'rnatilgan satrli chiqish belgilari uchun noto'g'ri filtrlangan yoki foydalanuvchi kiritgan ma'lumotlar kuchli kiritilmagan va kutilmagan tarzda bajarilgan bo'lsa. SQL in'ektsiyasi asosan veb-saytlar uchun hujum vektori sifatida tanilgan, ammo har qanday turdagi SQL ma'lumotlar bazasiga hujum qilish uchun ishlatilishi mumkin.
SQL injection hujumlari tajovuzkorlarga identifikatorni soxtalashtirish, mavjud ma'lumotlarni buzish, tranzaktsiyalarni bekor qilish yoki balanslarni o'zgartirish kabi rad etish muammolarini keltirib chiqarishi, tizimdagi barcha ma'lumotlarni to'liq oshkor qilish imkonini beradi, ma'lumotlarni yo'q qiladi yoki boshqa yo'l bilan mavjud bo'lmaydi va ma'murga aylanadi. ma'lumotlar bazasi serveri.
2012 yilgi tadqiqotda o'rtacha veb-ilova oyiga to'rtta hujum kampaniyasini qabul qilgani va chakana sotuvchilar boshqa sohalarga qaraganda ikki baravar ko'p hujumlar olgani kuzatildi.
Bizning kunimizni chindan ham buzishi mumkin bo'lgan son-sanoqsiz hujumlarda SQL Injection juda alohida o'ringa loyiqdir. Bu eng ko'p ishlatiladigan veb-tizimlarni buzish usullaridan biridir. Ular ko'plab xakerlik vositalarida (masalan, sqlmap) qurollangan. Shu qadar ko'pki, bu vositalar hatto malakali bo'lmagan xakerlarga ham o'ta halokatli hujumlarni amalga oshirishga yordam beradi.
Muxtasar qilib aytganda, inyeksiya hujumchilari dastur mantig'iga o'zboshimchalik bilan kod kiritishga intilishadi. Agar ular muvaffaqiyatli bo'lsa, ushbu kod dastur ruxsatnomalari va xavfsizlik rollari yordamida bajariladi. Ushbu hujumlar masofaviy kodni bajarish hujumlarining (RCE) kengroq toifasiga kiradi. Ya'ni, kodni yuklash (ikkilik yoki skript) va keyin uni bajarish uchun serverni aldash.
Inyeksiya hujumlari uzoq vaqtdan beri OWASP-ning birinchi o'ntaligida xavfli bo'lgan va shunday bo'lishi kerak. Yaxshi ishlab chiqilgan hujumlar dastur ma'lumotlarini osongina o'zgartirishi va hatto ularning izlarini o'chirishi mumkin. SQL in'ektsiyasi bu tajovuzkor dastur tomonidan ishlatiladigan SQL bandlarini o'zgartirishga va buzishga harakat qilganda.
Bizda allaqachon Java dasturlashda uning ba'zi jihatlarini o'z ichiga olgan o'quv qo'llanma mavjud. Ushbu qo'llanmada biz SQL Injection nima ekanligini biroz ko'proq o'rganamiz. Bu qanday ishlaydi va nima uni juda xavfli qiladi. Biz uning toifalari va chalkashlik usullarini ko'rib chiqamiz va uni qanday tuzatishni ko'rsatamiz.
SQL Injection haqida
Hackerlarga tashkilotlardan ma'lumotlarni o'g'irlash imkonini beruvchi ko'plab zaifliklar mavjud va SQL Injection ulardan biri. Bu, ehtimol, bugungi kunda qo'llaniladigan eng keng tarqalgan amaliy qatlam hujum usullaridan biridir. Agar veb-ilovani noto'g'ri kodlash amalga oshirilsa, xaker SQL buyruqlarini kiritishi mumkin. SQL buyruqlaridan foydalangan holda xaker ma'lumotlaringizni o'g'irlashi, ma'lumotlaringizni o'zgartirishi va ma'lumotlaringizni butunlay o'chirib tashlashi mumkin.
Oddiy so'zlar bilan aytganda, SQL in'ektsiyasi zararli foydalanuvchilar SQL buyruqlarini veb-sahifa kiritish orqali SQL bayonotiga kiritishi mumkin bo'lgan texnikadan boshqa narsa emas va bu kirish veb-ilovaning xavfsizligini buzishi mumkin.
Endi biz ASP .NET veb-saytlarida SQL Injection qanday amalga oshirilishi mumkinligini tushunamiz.
Keling, bir misol keltiraylik. Aytaylik, sizning ma'lumotlar bazangizda quyidagi kabi kirish jadvali mavjud:


  1. Download 0.57 Mb.

    Do'stlaringiz bilan baham:
1   ...   18   19   20   21   22   23   24   25   26




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling