صفحه اول > مقالات

 

حمله به برنامه هاي وبي (5):

حمله به نشست[1]

 

اين گونه حملات برنامه هايي را هدف قرار مي دهند که مديريت ارتباطات کاربران به خوبي در آنها انجام نمي شود و نقاط ضعفي در اين فرايند وجود دارد. پروتکل HTTP ذاتاً براي ارسال گسسته اطلاعات از سرور به سمت سرويس  گيرنده طراحي شده است. در اين شرايط هر برنامه اي که براي ارائه خدمات خود ناچار به نگه داري سابقه فعاليت هايي که کاربر بر روي سايت انجام داده باشد، بايد بر اين چالش غلبه کرده و پيام هاي گسسته را به يک نشست پيوسته تبديل نمايد. راه حل هايي که براي اين مسئله ارائه مي شوند همه در لايه کاربرد هستند و مستقل از وب سرور مي باشند.

 

 

طبعا مشابه همه کد نويسي ها ممکن است مديريت نشست با امنيت بالا پياده سازي شود و يا ضعف هايي در پياده سازي وجود داشته باشد، که اين به معناي وجود نقاط آسيب پذير در برنامه مي باشد. خطراتي که در چنين شرايطي برنامه و سرمايه هاي سايت را تهديد مي کند به دو دسته کلي زير قابل تقسيم بندي هستند:

 

·         افزايش افقي اختيارات

در اين نوع حملات کاربر قادر است به گونه اي نشانه[2] نشست را مورد استفاده قرار دهد که اطلاعات و قابليت هاي کاربر ديگري در دسترسش قرار گيرد. براي انجام اين نوع حملات هکر بايد در گروه کاربر قرباني عضو باشد. در صورت وقوع اين نوع حملات اطلاعات افشا مي شود، ولي ساختار دسترسي مبتني بر نقش[3] در سيستم حفظ مي شود.

 

·         افزايش عمودي اختيارات

هکر با استفاده از نشانه نشست به اطلاعات و مجوزهاي کاربري با حقوق بالاتر دسترسي مي يابد. قرباني در اين نوع حملات حقوقي بالاتر از فرد حمله کننده دارد و بنابراين علاوه بر امکان دسترسي هکر به اطلاعات کاربر امکان تغيير آن ها و انجام اعمالي که مجوز مديريتي لازم دارند نيز فراهم مي آيد.

در نتيجه اين نوع حمله اطلاعات شخصي کاربران فاش شده، امکان دزدي خدمات، اطلاعات کارت هاي اعتباري، ارسال هرزنامه و رد سرويس[4] بوجود مي آيد.

 

 

حمله به مديريت نشست فرايندي ۴ مرحله اي است:

 

·         يافتن حامل حالت[5]

در اين مرحله بايد محل ذخيره سازي نشانه ها شناسايي شود. براي اين کار کوکي هاي Stateful، کوکي هاي نشست، پارامتر هاي URL  و فيلد هاي مخفي بررسي شوند.

 

·         رمزگشايي اطلاعات حالت

پس از يافتن حامل حالت (نشانه نشست) بايد مشخصات آن استخراج شوند. با استفاده از روش هاي تحليل نشانه بايد مشخص شود که آيا بخش هايي از نشانه کد شده است يا خير؟ وجود برچسب هاي زماني و ساير الگوهايي که نمونه هايي از آنها در جدول زير ارائه شده اند تشخيص داده شود. آيا مقادير به صورت تصادفي توليد مي شوند و يا قطعي هستند؟

 

·         استفاده مجدد از اطلاعات حالت

بدون توجه به امکان رمزگشايي حامل حالت، بايد اطلاعات حالت چند کاربر را گرفت. با جايگذاري نشانه هاي ساير کاربران مي توان محدوديت هايي را که سيستم در برابر نشست هاي غيرمعتبر ايجاد مي کند شناسايي نمود.

 

·         تغيير اطلاعات حالت

در صورتي که امکان رمزگشايي حامل باشد مي توان با تغيير آن نشست کاربر ديگر را ربوده و يا استراق سمع نمود. با تغيير اطلاعات حالت مي توان حقوق بيشتري به دست آورد.

 

نشانه

شرح

حمله خاص

مقدار افزايشي

استفاده از شمارنده براي دنبال کردن نشست جاري، شماره درخواست، ارجاع به يک فايل موقت يا ساير متغير هاي گذرا. اين نوع نشانه ها عدد يا رشته مي باشند.

متنوع

برچسب زمان يا تاريخ

اين برچسب نوع خاصي از برچسب هاي با مقدار افزايشي است که بدون توجه به نوع کاربر و نشست همواره افزايشي است. در بيشتر موارد اين برچسب شامل يک رشته طولاني عددي يا يک عدد ۱۰ رقمي است.

اعتباردهي مجدد به شناسه نشست و تغيير زمان انقضاء نشست.

مقدار ايستا

مقداري که بدون توجه به نشست، زمان و کاربر ثابت است. اين نشانه مي تواند شناسه يک زبان (به عنوان مثال ۱۲۵۶ براي عربي) و يا پرچمي خاص باشد که توسط برنامه استفاده شده است.

اعتبارسنجي ورودي

مقدار شبه تصادفي

در بيشتر موارد اين مقدار نشانه نشست است.

ربودن نشست

اطلاعات profile

مقاديري که برنامه ها در رابطه با هويت کاربران خود درخواست مي کنند، شامل نام، نام خانوادگي، آدرس
 
e-mail، آدرس پستي، شماره تلفن، سن، تاريخ تولد و ....

جعل هويت. دسترسي به اطلاعات فردي ديگر (افزايش افقي اختيارات)

آدرس IP  سرور

سرور آدرس IP خود را در کوکي قرار مي دهد.

لو رفتن اطلاعات شبکه

آدرس IP  سرويس گيرنده

سرويس گيرنده آدرس IP  خود را در کوکي قرار مي دهد.

ربودن نشست

اعداد دو بايتي

اعداد دو بايتي در کوکي ممکن است شماره يک پورت باشند. براي کشف اين مسئله بايد مقادير را مورد ارزيابي قرار داد.

لو رفتن اطلاعات شبکه

 

 


 


[1]- Session

[2]- Token

[3]- Role-based

[4]- Denial of service

[5]- State