SQL Injection vulnerability သည်စမ်းသပ်ခြင်း

SQL Injection ယနေ့တိုက်ခိုက်မှုတခုအပျေါမှာမူတည်ကြောင်းကို web applications များဖို့ကြီးမားတဲ့အန္တရာယ်များ ဒေတာဘေ့စ dynamic content ကို generate မှ backend ။ တိုက်ခိုက်မှု၏ဤအမျိုးအစားများတွင်ဟက်ကာများမိမိတို့ကိုယ်ပိုင် SQL injection ဖို့ကြိုးစားမှုအတွက် web application ကို database ကိုထုတ်ပေးသောသူတို့အားသို့ပညတ်တော်မူ၏ manipulate ။ ဥပမာတစ်ခုအဘို့, Databases များကိုပေါ်ဆောင်းပါး SQL Injection ယနေ့တိုက်ခိုက်မှုများကိုကြည့်ပါ။ ဤဆောင်းပါး၌, ငါတို့သည်သင်တို့သူတို့ SQL Injection ယနေ့တိုက်ခိုက်မှုမှအားနည်းချက်ပါပဲရှိမရှိဆုံးဖြတ်ရန်သင်၏ဝဘ် applications များစမ်းသပ်နိုင်သည်နည်းလမ်းများစွာမှာကြည့်ယူပါ။

automated SQL Injection ကိုစကင်

တဦးတည်းဖြစ်နိုင်ခြေထိုကဲ့သို့သော HP ရဲ့ WebInspect, IBM ၏ AppScan သို့မဟုတ် Cenzic ရဲ့မုနျတိုငျးကွီးအဖြစ်တစ်ဦးအလိုအလျောက် web application ကိုကို Vulnerability Scanner အသုံးပြုနေသည်။ ဤကိရိယာများအားလုံးအလားအလာ SQL Injection ယနေ့အားနည်းချက်များအဘို့သင့်ကို web applications တွေကိုခွဲခြမ်းစိတ်ဖြာရန်လွယ်ကူ, အလိုအလျောက်နည်းလမ်းတွေကိုဆက်ကပ်။ သို့သော်သူတို့ကထိုင်ခုံနှုန်းအထိ $ 25000 မှာ running, အတော်လေးစျေးကြီးပါတယ်။

manual SQL Injection ယနေ့စမ်းသပ်မှု

လုပ်ဖို့ဆင်းရဲသား application ကိုဆော့ဖ်ဝဲရေးသူကဘာလဲ? သင်အမှန်တကယ်ဝဘ်ဘရောက်ဇာထက်ပိုဘာမျှသုံးပြီး SQL Injection ယနေ့အားနည်းချက်များအဘို့သင့်ကို web applications များအကဲဖြတ်ရန်တချို့အခြေခံစမ်းသပ်မှု run နိုင်ပါတယ်။ ပထမဦးစွာသတိထားတစ်ဦးစကားလုံး: ငါကိုဖော်ပြရန်စစ်ဆေးမှုများသာအခြေခံ SQL Injection ယနေ့အားနည်းချက်တွေကိုရှာဖွေပါ။ သူတို့ကအဆင့်မြင့်နည်းပညာတွေကိုရှာဖွေပြီးသုံးစွဲဖို့အတန်ငယ်ငွီးငှေ့ဖှယျများမှာမည်မဟုတ်။ သင်ကမတတ်နိုင်နိုင်လျှင်တစ်ဦး automated ကင်နာနှင့်အတူသွားပါ။ သင်သည်ထိုစျေးနှုန်း tag ကိုမကိုင်တွယ်နိုင်လျှင်မည်သို့ပင်ဆို, လက်စွဲစာအုပ်စမ်းသပ်ခြင်းကိုကြီးစွာသောပထမဦးဆုံးခြေလှမ်းဖြစ်ပါတယ်။

လျှောက်လွှာအားနည်းချက်ရှိမရှိအကဲဖြတ်ဖို့အလွယ်ကူဆုံးလမ်းကိုသူတို့အောင်မြင်လျှင်အမှန်တကယ်သင့်ရဲ့ဒေတာဘေ့စထိခိုက်နစ်နာစေမည်မဟုတ်ပေမယ့်သင်ပြဿနာတစ်ခုပြင်ပေးဖို့လိုအပ်ကြောင်းသက်သေအထောက်အထားများနှင့်အတူပေးမညျဖွစျကွောငျးဗလာဆေးထိုးတိုက်ခိုက်မှုများနှင့်အတူစမ်းသပ်ဖို့ဖြစ်ပါတယ်။ ဥပမာအားဖြင့်, သငျသညျ database ထဲတွင်တစ်ဦးချင်းတက်ကြည့်ပြီးရလဒ်အဖြစ်ဆက်သွယ်ရန်အချက်အလက်ကိုထောက်ပံ့ပေးကြောင်းရိုးရှင်းသော web application ကိုခဲ့ရသည်ဆိုပါစို့။ အဲဒီစာမျက်နှာကိုအောက်ပါ URL ကို format ကိုအသုံးပွုနိုငျ:

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

ကျနော်တို့ကဒီစာမျက်နှာတစ်ခုကဒေတာဘေ့စ lookup ပြုလုပ်နေလုပ်ဆောင်ယူဆနိုင်ပါတယ် တဲ့ query ကို အသုံးပြု. အောက်ပါဆင်တူ:

နေရာ lastname = 'chapple' နှင့် FIRSTNAME = 'mike' 'directory ကို FROM မှဖုန်းက SELECT

ဒီနှင့်အတူနည်းနည်းစမ်းသပ်ကြပါစို့။ အထက်ကျွန်တော်တို့ရဲ့ယူဆချက်နှင့်အတူကျနော်တို့ SQL injection တိုက်ခိုက်မှုများဘို့စမ်းသပ်သော URL ကိုတစ်ဦးရိုးရှင်းသောပြောင်းလဲမှုဖြစ်စေနိုင်ပါတယ်:

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

အဆိုပါ web application ကိုစနစ်တကျ SQL injection ဆန့်ကျင်ကာကွယ်စောင့်ရှောက်နိုင်ခြင်းမရှိသေးပေလျှင်၎င်းသည်ရိုးရှင်းစွာအထဲတွင်ရရှိလာတဲ့, ထိုဒေတာဘေ့စဆန့်ကျင် ပေး. စီရင်သည့် SQL ကြေညာချက်သို့ဤအတုပထမအမည်ကိုပလပ်ထိုးပေးရ:

နေရာ lastname = 'chapple' 'directory ကို FROM မှဖုန်းက SELECT နှင့် FIRSTNAME =' mike '' AND (အတုကနေရေတွက် (*) ကို select)> 0 င် OR '' 1 '=' 1 '

သငျသညျအထကျအထားအသိုမူလ URL ကိုအတွက်ထက်အနည်းငယ်ကွဲပြားခြားနားကြောင်းကိုသတိထားမိပါလိမ့်မယ်။ ငါကပိုမိုလွယ်ကူစံနမူနာအတိုင်းလိုက်နာစေရန်သူတို့၏ ASCII equivalents များအတွက် URL ကို-encoded variable ကိုပြောင်းလဲများ၏လွတ်လပ်ခွင့်ကိုယူ။ ဥပမာအားဖြင့်,% 3d ကို '=' ဇာတ်ကောင်များအတွက် URL ကို-encoding ဖြစ်ပါတယ်။ ငါသည်လည်းအလားတူရည်ရွယ်ချက်များအတွက်အချို့သောလိုင်းအားလပ်ချိန်ကဆက်ပြောသည်။

အဆိုပါရလဒ်များသုံးသပ်စိစစ်

သငျသညျအထကျစာရင်း URL ကိုအတူဝက်ဘ်စာမျက်နှာ load ရန်ကြိုးစားသောအခါအဆိုပါစမ်းသပ်မှုလာပါတယ်။ ဝဘ်ပလီကေးရှင်းကိုကောင်းစွာလိမ္မာသည်ဆိုပါကကဒေတာဘေ့စဖို့စုံစမ်းမှုဖြတ်သန်းရှေ့တော်၌ထို input ကိုကနေတစ်ခုတည်းကိုးကားထွက်အဝတ်တန်ဆာကိုချွတ်ပါလိမ့်မယ်။ ဒါကရိုးရိုး SQL တစည်းပါဝငျသောပထမဦးဆုံးနာမည်တစ်စုံတစ်ဦးကိုတစ်ဦးလိုက်တယ် lookup ပြုလုပ်နေမှုမည်! သငျသညျအောကျဖျောပွတဦးတည်းဆင်တူလျှောက်လွှာကနေ error message ကိုမြင်ရပါလိမ့်မယ်:

အမှား: နာမကိုအမှီ mike + နှင့် + (ရေတွက် + ကို select (*) + အတုကနေ) +% 3e0 + OR + 1% 3d1 Chapple အတူမျှမတွေ့အသုံးပြုသူ!

လျှောက်လွှာ SQL injection မှအားနည်းချက်လျှင်အခြားတစ်ဖက်တွင်, ကနှစ်ခုဖြစ်နိုင်ခြေတရရှိလာတဲ့, ထိုဒေတာဘေ့စမှတိုက်ရိုက်ကြေညာချက်လွန်သွားပါလိမ့်မယ်။ ပထမဦးစွာသင့်ရဲ့ server ကိုအမှားမက်ဆေ့ခ်ျအသေးစိတ်မူလျှင် (! ရသောသငျသညျမရသင့်ပါတယ်) enabled, သင်သည်ဤကဲ့သို့အရာတစ်ခုခုကိုမြင်ရပါလိမ့်မယ်:

ODBC ယာဉ်မောင်းအမှား '' 80040e37 '[Microsoft က] [ODBC SQL Server ကိုယာဉ်မောင်း] [SQL Server] မှားနေသောအရာဝတ္ထုနာမအဘို့ကို Microsoft OLE DB ပေးသူ' 'အတု' '။ /directory.asp လိုင်း 13

သင့်ရဲ့ web server ကိုအသေးစိတ်အမှားမက်ဆေ့ခ်ျများမပြပါဘူးဆိုရင်အခြားတစ်ဖက်တွင်, သင်တစ်ဦးထက်ပိုသောယေဘုယျအမှားပါလိမ့်မယ်, ကဲ့သို့သော:

ပြည်တွင်းဆာဗာမှားယွင်းမှုဆာဗာတစ်ခုအတွင်းပိုင်းအမှားသို့မဟုတ်ဖွဲ့မှုလွဲမှား နေ. ကြုံတွေ့နှင့်သင့်တောင်းဆိုမှုကိုဖြည့်စွက်နိုင်ခြင်းမရှိခဲ့ပေ။ အမှားဖြစ်ပွားခဲ့သည်အချိန်နှင့်သင်အမှားစေပြီစေခြင်းငှါပြုမိပါပြီစေခြင်းငှါ, ဘာမှ၏အကြောင်းကြားရန်ဆာဗာစီမံခန့်ခွဲသူကိုဆက်သွယ်ပါ။ ဒီအမှားအကြောင်းပိုမိုအချက်အလက်များအားဆာဗာအမှားမှတ်တမ်းအတွက်ရရှိနိုင်ပေမည်။

သငျသညျအထကျနှစျယောကျအမှားအယွင်းများ၏တဦးတည်းဖြစ်ဖြစ်ခံလျှင်, သင်၏လျှောက်လွှာ SQL injection တိုက်ခိုက်မှုမှအားနည်းချက်ပါ! သငျသညျ SQL Injection ယနေ့တိုက်ခိုက်မှုဆန့်ကျင်သင့်ရဲ့ applications များကာကွယ်စောင့်ရှောက်ဖို့ယူနိုငျကွောငျးအခြို့သောခြေလှမ်းများပါဝင်သည်: