SQL injection zaifliklari uchun test

SQL qarshi hujumlari dinamik tarkib hosil qilish uchun ma'lumotlar bazasi orkide bog'liq veb-ilovalar uchun katta xavf tug'diradi. Ushbu turdagi hujumda, hackerlar o'zlarining SQL buyruqlarini ma'lumotlar bazasi orqali chiqarilganlar ichiga joylashtirishga urinishdagi veb-ilovani boshqaradi. Misol uchun, ma'lumotlar bazalarida SQL Injection Attacks maqolasiga qarang. Ushbu maqolada, sizning veb-ilovalaringizni SQL inyeksiya hujumlariga nisbatan zaif yoki yo'qligini aniqlash uchun bir necha usullarni ko'rib chiqamiz.

Avtomatlashtirilgan SQL in'ektsiyasi

HP ning WebInspect, IBM AppScan yoki Cenzic's Hailstorm kabi avtomatlashtirilgan veb-ilovalar xavfsizlik kamomadi brauzerlaridan foydalanish mumkin. Ushbu vositalar potentsial SQL Injection zaifliklar uchun veb-ilovalaringizni tahlil qilishning oson, avtomatlashtirilgan usullarini taklif etadi. Biroq ular juda qimmatga tushib, har bir o'rindiq uchun 25 ming dollargacha ishlaydi.

Manual SQL injection testlari

Dasturni ishlab chiquvchining kamchiligi nima? Veb-ilovalaringizni veb-brauzerdan boshqa hech narsa foydalanmayotgan SQL Injection zaifliklari uchun baholash uchun ba'zi bir asosiy testlarni bajarishingiz mumkin. Birinchidan, ehtiyotkorlikning bir so'zi: Men ta'rif qilayotgan testlar faqat asosiy SQL in'yuntsiya kamchiliklarini qidiradi. Ular ilg'or metodlarni aniqlay olmaydilar va ishlatish uchun biroz zerikarli. Agar siz uni to'lashga qodir bo'lsangiz, avtomatik skaner bilan boring. Ammo, agar siz ushbu narx yorlig'ini ishlasa, qo'lda test qilish - bu birinchi qadamdir.

Agar ilovaning zaifligini aniqlashning eng oson usuli, agar ular muvaffaqiyatli bo'lsa, ma'lumotlar bazasiga zarar yetkazmaydi, ammo sizni muammoni to'g'irlashingiz kerakligi haqida dalillarni keltirib chiqaradigan zararli inyeksiya hujumlari bilan tajriba qilishdir. Misol uchun, sizda ma'lumotlar bazasida shaxsni ko'rib chiqadigan va natijada kontakt ma'lumotlarini taqdim qiluvchi oddiy veb-ilovasi bo'lgan deb taxmin qiling. Ushbu sahifa quyidagi URL formatini ishlatishi mumkin:

http://myfakewebsite.com/directory.asp?lastname=chapple&firstname=mike

Quyidagi ma'lumotlarga o'xshash so'rovlar yordamida ushbu sahifada ma'lumotlar bazasini qidirishni amalga oshirishi mumkin:

Telefonni qaerdan tanlaysiz? WHERE lastname = 'chapple' va firstname = 'mike'

Keling, biroz tajriba qilaylik. Yuqoridagi taxminimiz bilan, SQL in'ektsiyalarini tekshiradigan URLga sodda o'zgarishlar qilishimiz mumkin:

http://myfakewebsite.com/directory.asp?lastname=chapple&firstname=mike'+AND+(select+count(* )+from+fake)+%3e0+OR+'1'%3d'1

Agar veb-ilovasi SQL in'ektsiyasiga qarshi to'g'ri himoya qilinmasa, bu soxta ismni ma'lumotlar bazasiga qarshi amalga oshiradigan SQL iborasiga kiritadi, natijada:

KOMPYUTERDAN FOYDALANUVCHISI tanlang QANDAY familiya = "shpal" va birinchi ism = "mayka" VA (soxta hisoblagichni tanlang (*))> 0 OR '1' = '1'

Yuqoridagi sintaksikning original URLdan bir oz boshqacha ekanligini farqga keltirasiz. URL-kodlangan o'zgarmaydiganni o'zlarining ASCII ekvivalentlariga moslashtirishga harakat qildim. Masalan,% 3d "=" belgisi uchun URL-kodlashdir. Men shunga o'xshash maqsadlar uchun qator tanaffuslarni qo'shdim.

Natijalarni baholash

Sinov, veb-sahifani yuqorida sanab o'tilgan URL bilan yuklashga harakat qilinganda keladi. Agar veb-dastur yaxshi ish yuritayotgan bo'lsa, so'rovni ma'lumotlar bazasiga yuborishdan oldin u bitta tirnoqlarni ajratadi. Bu shunchaki, bir guruh SQLni o'z ichiga olgan ismga ega bo'lgan odam uchun g'aroyib qidirishga olib keladi! Dasturdan quyidagi o'xshash xato xabari paydo bo'ladi:

Xato: Mayk + va + (+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 3% + OR + 1% 3d1 Chapple!

Boshqacha qilib aytganda, agar SQL injection dasturiga nisbatan zaif bo'lsa, u bevosita ma'lumotlar bazasiga murojaat qiladi va natijada ikkita imkoniyatdan biri bo'ladi. Birinchidan, serveringizda batafsil xato xabarlari yoqilgan bo'lsa (siz bunday qilmasligingiz kerak!), Shunday bir narsa ko'rasiz:

ODBC haydovchi uchun Microsoft OLE JB Provayder xatosi '80040e37' [Microsoft] [ODBC SQL Server drayveri] [SQL Server] yaroqsiz ob'ekt nomi "soxta". / Datalogiya.asp, 13-satr

Boshqa tomondan, agar veb-serveringiz batafsil xato xabarlarni ko'rsatmasa, quyidagi kabi umumiy xatoga ega bo'lasiz:

Ichki server xatosi Server ichki xato yoki noto'g'ri konfiguratsiya bilan duch keldi va so'rovingizni bajarib bo'lmadi. Xatolik yuz berganligi va xatoga olib kelishi mumkin bo'lgan har qanday ish haqida xabar qilish uchun server boshqaruvchisiga murojaat qiling. Ushbu xato haqida batafsil ma'lumot serverdagi xato jurnalida mavjud bo'lishi mumkin.

Yuqoridagi ikki xatolikdan birini qabul qilsangiz, sizning ilovangiz SQL qarshi hujumiga qarshi himoyasizdir! SQL Injection hujumlariga qarshi ilovalaringizni himoya qilish uchun qanday qadamlar qo'yilishi mumkin: