ဥပမာအားဖြင့် Broken အရာဝတ္ထုအဆင့်ခွင့်ပြုချက်

ဤစာမူတွင်ကျွန်ုပ်တို့သည်ချိုးဖောက်သောအရာဝတ္ထုအဆင့်အခွင့်အာဏာပျက်ကွက်မှုကိုလေ့လာပြီးဆွေးနွေးသည်။

ကျိုးပဲ့တဲ့အရာဝတ္ထုအဆင့်ခွင့်ပြုချက်ကဘာကိုဆိုလိုသလဲဆိုတာကိုစပြီးရှင်းပြတော့မယ်။ ထိုအခါကျွန်ုပ်တို့သည်ဆက်စပ်အန္တရာယ်အချက်များရှင်းပြတိုက်ခိုက်မှုမှတဆင့်သွားပါလိမ့်မယ်။

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




Broken Object Level Authorization ဆိုတာဘာလဲ

အတိုချုပ်ဆိုရလျှင်၊ ဤတိုက်ခိုက်မှုအမျိုးအစားသည်ဒေတာအတွက်အသုံးပြုခွင့်ကိုအသုံးပြုသင့်သည်အတိုင်းလုပ်ခြင်းမဟုတ်ဟုဆိုလိုသည်။ ၎င်းသည်အရင်းအမြစ်များနှင့်ဒေတာများကိုခွင့်ပြုချက်မရရှိသည့်အခါဝင်ရောက်ခွင့်ရရှိစေသည်။

ချိုးဖောက်သောအရာဝတ္ထုအဆင့်သတ်မှတ်ချက်ကိုယခင်ကမလုံခြုံသောတိုက်ရိုက်အရာဝတ္ထုရည်ညွှန်းခြင်း (IDOR) ဟုလူသိများသည်။


ကျနော်တို့စကားလုံးပြောတဲ့အခါ အရာဝတ္ထု Broken Object Level Authorization မှာကျွန်တော်တို့ဆိုလိုတာကတန်ဖိုးတစ်ခုသို့မဟုတ်တန်ဖိုးအုပ်စုတစ်ခုဖြစ်သည်။ အကြောင်းအရာတစ်ခုသည်စာရေးသူ၊ ပါ ၀ င်သည့်အကြောင်းအရာနှင့်ရေးသားထားသောရက်စွဲပါ ၀ င်သည့်ဆိုရှယ်မီဒီယာတစ်ခုဖြစ်နိုင်သည်။

ခွင့်ပြုချက် အသုံးပြုသူသည်ခွင့်ပြုထားသည့်အရာများအားလုံးနှင့်သက်ဆိုင်သည်။ ထို့ကြောင့်၊ ကျွန်ုပ်တို့သည် log in ပြုလုပ်ပြီးသောအသုံးပြုသူအကြောင်းပြောနေခြင်းဖြစ်သည်။

အသုံးပြုသူတစ် ဦး သည် API သို့တောင်းဆိုမှုတစ်ခုကိုပြုလုပ်သောအခါ၎င်းသည်အရာဝတ္ထုများကိုရယူရန်အသုံးပြုသည်။ ခွင့်ပြုချက်နှင့် ပတ်သက်၍ ဆုံးဖြတ်ချက်ချသင့်သည်။ အသုံးပြုသူသည်၎င်းတို့ရရှိထားသည့်အရာဝတ္ထုများကိုသာ ၀ င်ရောက်ပိုင်ခွင့်ရှိသင့်သည်။ ဤသည်မှန်ကန်စွာအလုပ်လုပ်ခွင့်ပြုချက်ဖြစ်ပါတယ်။


ခွင့်ပြုချက်ပြတ်တောက်သွားသောအခါအသုံးပြုသူများသည်၎င်းတို့ခွင့်မပြုသင့်သောအချက်အလက်များနှင့်အရင်းအမြစ်များကိုဝင်ရောက်ခွင့်ပြုသည်။

API တစ်ခုသည်အရာဝတ္ထုများပေါ်တွင်အမျိုးမျိုးသောလုပ်ဆောင်မှုများကိုလွယ်ကူချောမွေ့စေသည် ကျွန်ုပ်တို့သည်အရာဝတ္ထုများကိုရယူနိုင်သည်၊ ဖန်တီးနိုင်သည်၊ မွမ်းမံနိုင်သည်သို့မဟုတ်ဖျက်နိုင်သည်။

object တစ်ခုနှင့်အပြန်အလှန်ဆက်သွယ်ခြင်းသည် API တစ်ခုလုံး၏အမှတ်တစ်ခုဖြစ်သည်။ ထို့ကြောင့်ထိုအရာဝတ္ထုများပတ် ၀ န်းကျင်မှခွင့်ပြုချက်ထိန်းချုပ်မှုများကျိုးပဲ့သွားပါကကျွန်ုပ်တို့တွင် Broken Object Level Access အားနည်းချက်ရှိသည်။



Broken Object Level ကိုအသုံးပြုခြင်းအားနည်းခြင်းအားနည်းခြင်း

ယေဘူယျအားဖြင့်ဤအားနည်းချက်ကိုတွေ့ရှိပြီးသောအခါတွင်အမြတ်ထုတ်ရန်လွယ်ကူသည်။ တိုက်ခိုက်သူတစ် ဦး လုပ်ရန်လိုအပ်သည်မှာတောင်းဆိုမှုတစ်ခုတွင်အမှတ်အသားတစ်ခုပြောင်းရန်ဖြစ်သည်။ သူတို့ခွင့်မပြုသင့်သည့်အရာဝတ္ထုများကိုရရှိနိုင်သည်။


ဥပမာတစ်ခုကြည့်ရအောင်။

ဒီမှာ API ကိုခေါ်ဖို့သုံးတဲ့ URL ရှိတယ်။

https://myemail.com/messages/12345

ဤ API ခေါ်ဆိုမှုသည်အသုံးပြုသူ၏သီးသန့်စာများကိုပြန်လည်ရယူရန်ဖြစ်သည်။ အသုံးပြုလျက်ရှိသည့်အရင်းအမြစ်ဖြစ်သည် မက်ဆေ့ခ်ျများ

အဆိုပါမက်ဆေ့ခ်ျကိုငါတို့ Broken Object ကိုအဆင့်သတ်မှတ်ချက်အတွက်ရည်ညွှန်းသောအရာဝတ္ထုဖြစ်ပါတယ်။ အဆိုပါယူဆချက်ပုဂ္ဂလိကမက်ဆေ့ခ်ျကိုရည်ရွယ်ထားလက်ခံရရှိသူကသာဖတ်ရှုနိုင်သည်။


ထို့နောက်ကျွန်ုပ်တို့သည် message ၏ _ id _ | ရှိသည်။ ၎င်းသည်တိုက်ခိုက်သူအတွက်အရေးကြီးသောအစိတ်အပိုင်းဖြစ်သည်။

အိုင်ဒီသည်မည်သည့်မှတ်တမ်းကိုပြန်သွားရမည်ကိုဝန်ဆောင်မှုကိုပြောပြသည်။ API သည်ထိုမှတ်တမ်းကိုဒေတာသိုလှောင်ရာမှပြန်လည်ရယူပြီးပြန်လည်ဖြေကြားသည်။

12345 မှ ID ကိုပြောင်းလျှင်ယခုဘာဖြစ်မည်နည်း 12345 သို့ | ဥပမာ -

12346

အိုင်ဒီနှင့်အတူမက်ဆေ့ခ်ျကို https://myemail.com/messages/12346 ကျွန်ုပ်တို့၏အသုံးပြုသူအတွက်ရည်ရွယ်သည်၊ ၎င်းကိုပြန်လည်ရယူနိုင်သည်။


မက်ဆေ့ခ်ျသည်အခြားအသုံးပြုသူတစ် ဦး နှင့်သက်ဆိုင်ပါက API သည်၎င်းကိုဘယ်တော့မှပြန်ပို့ခြင်းမပြုသင့်ပါ။ မက်ဆေ့ခ်ျအားပြန်လည်ရယူရန်ကျွန်ုပ်တို့စီမံခဲ့ပါကကျွန်ုပ်တို့သည်ပျက်စီးနေသောအရာဝတ္ထုအခွင့်အာဏာပျက်ကွက်ခြင်းဖြစ်သည်။

နောက်ထပ်ဥပမာတစ်ခုမှာအရင်းအမြစ်တစ်ခုအားအသစ်ပြောင်းရန် POST တောင်းဆိုမှုကိုပို့ခြင်းဖြစ်သည်။ JSON ၏ payload တွင်အိုင်ဒီနှင့်ကစားနိုင်သည်။

12346

အကယ်၍ ကျွန်ုပ်တို့သည်အလားအလာကောင်းများကိုထည့်သွင်းရန်ဖြစ်ပါက။ _ + _ | တောင်းဆိုမှုအတွက်နှင့်အခြားအသုံးပြုသူရဲ့အသေးစိတ်အချက်အလက်များကိုမွမ်းမံနိုင်ခဲ့ကြတယ်, ထို့နောက်ကျွန်တော်အကြီးအကျယ်ပြproblemနာရှိသည်။

နည်းပညာဆိုင်ရာသက်ရောက်မှု

အားနည်းချက်ရှိနေပြီဆိုတာကိုငါတို့သိပြီဆိုရင်အဲဒါကိုအမျိုးမျိုးသောနည်းဖြင့်အသုံးချနိုင်သည်။ အထက်တွင်ဖော်ပြခဲ့သည့်အတိုင်း API တစ်ခုပေါ်တွင် HTTP နည်းလမ်းများစွာသုံးနိုင်သည်။ ကျွန်ုပ်တို့သည် Id ကို သုံး၍ မက်ဆေ့ခ်ျများကိုအဆင့်မြှင့်ခြင်းသို့မဟုတ်ဖျက်ပစ်နိုင်သည်။

Ids အားလုံးဖြတ်သန်းနိုင်ခဲ့လျှင်ဘာဖြစ်မည်နည်း။ ကျွန်ုပ်တို့သိမ်းထားသောစာများအားလုံးကိုဖျက်ပစ်နိုင်သည်။ ဒါကကြီးမားတဲ့သက်ရောက်မှုပါပဲ။



ဘုံအားနည်းချက်

၎င်းသည်အလွန်အသုံးများသောအားနည်းချက်ဖြစ်သည်။ အထက်တွင်ဖော်ပြခဲ့သည့်အတိုင်း APIs များသည်အရာဝတ္ထုများကိုအသုံးပြုရန်အသုံးပြုသည်။ အများအားဖြင့်ကျွန်ုပ်တို့သည်အရင်းအမြစ်များကိုခွဲခြားသတ်မှတ်ရန်တောင်းဆိုမှုတွင် Ids ကိုအသုံးပြုသည်။ မေးစရာမေးခွန်းမှာ၊ ထိုဝင်ရောက်ခွင့်အတွက်ခွင့်ပြုမိန့်စစ်ဆေးခြင်းရှိပါသလား။

အဓိကအားဖြင့်ကျွန်ုပ်တို့သည် code တွင် Broken Object Level Authorization အားနည်းချက်များရှိခြင်းကြောင့်အဆုံးသတ်ရခြင်းအကြောင်းအရင်းနှစ်ရပ်ရှိသည်။

ပထမတစ်ခုမှာလုံခြုံရေးထိန်းချုပ်မှုကိုအကောင်အထည်မဖော်နိုင်ခြင်းဖြစ်သည်။ တောင်းဆိုမှုများအပေါ်ခွင့်ပြုချက်စစ်ဆေးမှုများလုပ်ဆောင်ရန်ကုဒ်ရေးသားထားခြင်းမရှိပါ။

ဒုတိယအချက်မှာလူ့အမှားဖြစ်သည်။ လူတွေအမှားလုပ်မိတယ်။ ဥပမာကောင်းတစ်ခုသည်အထိခိုက်မခံသောဒေတာနှစ်ခုလုံးအပေါ်အထိခိုက်မခံသော API ကိုကိုင်တွယ်သည်။ အချို့တောင်းဆိုမှုများတွင်ခွင့်ပြုချက်ကိုစစ်ဆေးသင့်ပြီးအခြားသူများကမူမရသင့်ပါ။ ကုဒ်ရေးတဲ့အခါချက်လက်မှတ်ကိုလက်လွတ်ဖို့လွယ်ကူနိုင်တယ်။



Detect လုပ်နည်း

အနည်းဆုံး ဦး နှောက်စွမ်းအားအနည်းငယ်ယူလိုသောကြောင့်အလိုအလျောက်သုံးသောကိရိယာများသည်ပုံမှန်အားဖြင့်ဤအားနည်းချက်ကိုရှာမတွေ့ပါ။

လူသားတစ် ဦး အနေဖြင့်ဤအားနည်းချက်ကိုသိရှိရန်အလွန်လွယ်ကူသည်။ အရာဝတ္ထုများကိုပြန်လည်ရယူရန်အသုံးပြုသော Identifier ကိုကျွန်ုပ်တို့ရှာဖွေရန်လိုအပ်သည်။

မှတ်ပုံတင်အမှတ်အသားသည် Url၊ request body သို့မဟုတ် header ထဲတွင်ရှိနိုင်သည်ကိုသတိပြုပါ။

ထို့အပြင်ကျွန်ုပ်တို့သည်အားနည်းချက်ရှိ၊ မရှိကိုပြန်လည်ကြည့်ရှုရန်ပြန်လာသည့်တုံ့ပြန်မှုကိုခွဲခြမ်းစိတ်ဖြာရန်လိုအပ်သည်။

ကိရိယာများ

HTTP တောင်းဆိုမှုများနှင့်တုံ့ပြန်မှုများကိုစစ်ဆေးသောမည်သည့်ကိရိယာကိုမဆိုကျွန်ုပ်တို့အသုံးပြုနိုင်သည်။ ၎င်းတို့အနက်အချို့မှာ -

  • Google Developer Tools
  • Burp Suite
  • စာပို့

Burp Suite သည်တောင်းဆိုမှုများကိုအလိုအလျောက်ပြုလုပ်ရန်လည်းအသုံးပြုနိုင်သည်။



Broken Object Level Authorization ကိုကာကွယ်ခြင်း

ကျနော်တို့ဒီမှာနှစ်ခုကာကွယ်ရေးရရှိပါသည်။

ပထမကာကွယ်ရေးကိုအသုံးပြုရန်ဖြစ်သည် ထိုကဲ့သို့သော GUIDs အဖြစ်ခန့်မှန်းရခက်အိုင်ဒီစီ ။ ကျွန်တော်ကုဒ်အတွက်ဆက်တိုက်နံပါတ်များကိုအသုံးပြုတဲ့အခါ, ဥပမာ 12345, ဒီအိုင်ဒီအလွန်ကြိုတင်ခန့်မှန်းကြသည်ကိုဆိုလိုသည်။ တိုက်ခိုက်သူတစ် ဦး သည်အရာဝတ္ထုများကိုရှာဖွေရန်နံပါတ်များကိုဖြတ်သန်းရန်အတွက်များစွာကြိုးစားအားထုတ်မှုမလိုအပ်ပါ။

GUID ဥပမာတစ်ခု

{
'userId': '12345678',
'oldPassword': 'My_0ld_Pa$$',
'newPassword': '$uperS3CurE' }

GUID များသည်ရှုပ်ထွေးပြီးခန့်မှန်းရန်အလွန်ခဲယဉ်းသည်။

နောက်ကာကွယ်မှုမှာ code တစ်ခုရှိဖို့ပါ ခွင့်ပြုချက်ကိုစစ်ဆေးပါ ။ ဒီစစ်ဆေးမှုမကြာခဏပဲဖြစ်ပျက်မထားဘူး။

ခွင့်ပြုချက်ကိုစစ်ဆေးခြင်းသည်အသုံးပြုသူတစ် ဦး သည်အသုံးပြုမည့်အကြောင်း Id ထဲတွင် API ကိုတင်ပြသည့်အချိန်တွင်ဖြစ်ပျက်သင့်သည်။ ဤနေရာတွင်အဓိကနိယာမမှာအသုံးပြုသူမှ API ကိုပေးသောဒေတာကိုကျွန်ုပ်တို့အစဉ်မယုံသင့်။

အသုံးပြုသူကအရာဝတ္ထုကိုကြည့်ရှုရန်လုပ်ပိုင်ခွင့်ရှိကြောင်းအတည်ပြုရန်တောင်းဆိုထားသော Id ကိုစစ်ဆေးရန်လိုအပ်သည်။

ဤစစ်ဆေးမှုများသည် software ဖွံ့ဖြိုးတိုးတက်မှုကာလအတွင်းရိုးရှင်းသောကုဒ်ပြန်လည်သုံးသပ်ခြင်းနှင့် / သို့မဟုတ်ဖွံ့ဖြိုးမှုတစ်လျှောက်လုံးခွင့်ပြုချက်မရခြင်းကိုစစ်ဆေးသောအလိုအလျောက်စစ်ဆေးမှုများဖြစ်နိုင်သည်။



နိဂုံး

ငါတို့တွေ့ခဲ့ရသည့်အတိုင်း Broken Object Level Authorization သည်ဘုံအားနည်းချက်ဖြစ်ပြီးရှာဖွေတွေ့ရှိရန်လွယ်ကူသည်။ အလားအလာရှိသောသက်ရောက်မှုများကြီးမားသည်။

ဒီအားနည်းချက်ရဲ့အရင်းအမြစ်က client ဆီမှ API သို့ကူးပြောင်းလိုက်သောအချက်အလက်များကိုယုံကြည်ရန်ဖြစ်သည်။

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

စိတ်ဝင်စားစရာဆောင်းပါးများ