بسیاری از برنامه های کاربردی تحت وب که مجبور به استفاده ازSession ID هستند، در مورد ایجاد یک نشست و نظارت بر آن به شدت ضعف دارند. یک نفوذگر ممکن است یک نشست با یک برنامۀ کاربردی برقرار کرده و یک Session ID معتبر دریافت کند؛ سپس آنرا عوض کرده و خودش را در قالب یک کاربر دیگر جا بزند و از آن به بعد روند عملیات او را ادامه بدهد! برنامه های کاربردی تحت وب که Session ID را به گونه ای ضعیف تولید میکنند به شدت ناامن خواهند بود زیرا اگر نفوذگر بطور عمدیSession ID یک کاربر دیگر را حدس زده و از آن بجای Session ID خود استفاده کند، برنامۀ کاربردی وب گمان میکند که نفوذگر همان کاربر مُجاز است و از آن به بعد با نفوذگر محاوره میکند! یعنی با تعویض Session ID نفوذگر به یک کاربر مُجاز دیگر تبدیل خواهد شد و بجای او سرویس خواهد گرفت. (البته خود کاربر اصلی هم سرویس میگیرد؛ نفوذگر نیز مثل او و به نیابت از او سرویس میگیرد!!)
بسیاری از برنامه های کاربردی وب که دهها هزار نسخه از آنها در سرتاسر دنیا و منطبق با مقاصد و اهداف شرکت ها و موسسات توسعه داده شده اند، از این نقطه ضعف رنج میبرند و به محض آنکه نفوذگر Session ID یک کاربر مُجاز را حدس زده و استفاده کند، آن برنامۀ کاربردی بسادگی به او سرویس میدهد. این نقطۀ ضعف میتواند خسارات جبران ناپذیری به بار بیاورد. بعنوان مثال یک بانک خودکار و تحت وب را در نظر بگیرید که کاربران آن پس از برقراری یک نشست با برنامۀ کاربردی آن بانک، عملیات مالی خود را انجام میدهند. اگر نفوذگر بتواند با حدس Session ID متعلق به یک کاربر ، خودش را بجای او جا بزند میتواند از حساب آن کاربر برداشت کند. حملاتی بدینگونه بسیار زیاد گزارش شده اند!
مکانیزم حمله به نشست های وب به شرح زیر است:
- اوّلین چیزی که نفوذگر به آن نیاز دارد، تعیینSession ID یک کاربر مُجاز است که در حال حاضر او نیز یک نشست برقرار کرده است. برای اینکار نفوذگر ابتدا خودش یک نشست مجاز با آن برنامۀ کاربردی برقرار مینماید و مقدارSession ID اختصاص داده شده به خودش را مشاهده میکند. سپس بررسی میکند که طول Session ID چند کاراکتر است ، نوع کاراکترها چیست (عددی، الفبائی یا هر ترکیب دیگر) و در نهایت آرایش و ساختار آنرا تعیین میکند.
- در دوّمین مرحله ، نفوذگر چند خط برنامۀ ساده مینویسد تا هزاران بار با کلمۀ عبور خودش بعنوان یک کاربر مجاز به آن برنامۀ کاربردی وارد شود (یعنی login کند) و یک Session ID دریافت نماید. او این مقادیر را در جائی ذخیره میکند.
- در سومین مرحلۀ ، نفوذگر مقادیر Session ID جمع آوری شده را مورد تحلیل های آماری قرار میدهد و سعی میکند تا فرمول تولید آن را بیابد ، شاید بتواند Session ID یک کاربر دیگر را حدس بزند. موفقیت در این مرحله کار را برای او تمام میکند!
- در مرحلۀ بعدی او با حساب شخصی و مُجاز خود به آن برنامۀ کاربردی وارد میشود و پس از دریافت یک Session ID معتبر، آنرا با مقدار متعلق به یک کاربر دیگر عوض کرده و بجای او (و در کنار او!!) سرویس میگیرد.
مراحل بدست آوردن Session ID های مختلف و استخراج آن بسیار ساده است:
- اگر Session ID بهمراه URL باشد او URL های مختلف را درون یک فایل ذخیره میکند تا بعداً فیلد مربوط به مشخصۀ نشست را تشخیص داده و با چند خط برنامه نویسی آنها را از URL جدا کرده و در فایل دیگری بریزد.
- اگر Session ID درون صفحۀ وب ارسالی پنهان و جاسازی شده باشد کلّ صفحات وب را ذخیره کرده و سپس با چند خط برنامه نویسی در درون صفحات ، برچسب های "<INPUT" را که دارای گزینۀ TYPE="HIDDEN" هستند ، جستجو و استخراج میکند.
- اگر از ”کوُکی دائم“ استفاده شده باشد کار بسیار سادهتر است چرا که نفوذگر براحتی قادر خواهد بود فایل های کوتاه و متنی کوُکی را مشاهده و ویرایش نمایند. در مرورگر NetScape تمام فایلهای ”کوُکی دائم“ در فایلی به نام Cookies.txt ذخیره میشوند و بسادگی میتوان توسط برنامۀ Notepad آنها را دید.
برای سوءاستفاده از کوُکی های دائم نفوذگر با حساب کاربری خود به سرویسدهنده وارد شده و یک Session ID برای خود بدست میآورد؛ در این صورت یک فایل کوُکی برای او ایجاد میشود. سپس آنرا توسط یک ویرایشگر مثل Notepad باز کرده و مقدار آنرا بصورت دستی با Session ID یک کاربر دیگر عوض کرده و نهایتاً آنرا ذخیره میکند. پس از بستن مرورگر و اجرای مجدّد ، کوُکی تقلبی ملاک کار قرار میگیرد که در آن Session ID ، متعلق به کاربر دیگر است. دقّت کنید که نفوذگر قبل از تغییر کوُکی باید مرورگر را ببندد و پس از آن ، دوباره آنرا اجرا نماید زیرا فایل کوُکی دائم فقط در هنگام بستهشدن مرورگر ذخیره و در هنگام باز شدن مرورگر، مجدداً بار میشود. روش تغییر ”کوُکی دائم“ ساده و پیش پا افتاده است ولی بزرگترین معضل نفوذگر تغییر کوُکی های موقت است که درون حافظۀ مرورگر (RAM) ذخیره میشوند و نمیتوان به آن دسترسی داشت.
محمد
برنامه نویس و کارشناس شبکهکارشناس شبکه و نرم افزار