حمله جعل پارامتر
سلام خدمت دوستان عزیز با آموزش حمله جعل پارامتر در خدمتتون هستم.
به حمله جعل پارامتر در اصطلاح Web Parameter Tampering گفته میشود.
در این مطلب قراره در مورد یکی از آسیبپذیریهای خطرناک سمت وب صحبت کنیم که متاسفانه بسیاری از وبسایتهای کوچک و بزرگ این مشکل امنیتی رو دارند.
معمولا در فرمهای Html یک سری فیلدهای hidden وجود دارد. مثلا فیلدی به صورت مخفی وجود دارد که محتوای آن id چیزی است که میتوانیم آن را ویرایش کنیم.
عموما این فیلدها هنگامی که فرم به سمت سرور ارسال میشود، کمک میکنند که بدانیم چه چیزی را باید در سمت سرور تغییر دهیم و یا واکشی کنیم.
آسیبپذیری در اینجاست که هر کسی میتواند این فیلدها را در سمت مرورگر دستکاری کند.
مثلا با تغییر id به موجودیت دیگری (که مجاز نیست) اشاره کند و سپس فرم را ثبت کند.
در این صورت احتمال اینکه شخص مهاجم، دادههایی را دستکاری کند که بدانها دسترسی نداشته خیلی بالا خواهد بود.
همچنین بی نظمی و آسفتگیهایی در دادهها به وجود خواهد آمد که علت آن به سادگی قابل تشخیص نخواهد بود.
به این اتفاق حمله جعل پارامترها گفته میشود.
راه حل امنیتی:
روشی در تامین امنیت نرم افزارهای مبتنی بر وب وجود دارد با نام Don’t trust user input یعنی هیچگاه به هیچ دادهای که از سمت کاربران میآید اعتماد نکن.
راه حل اول آن است که بر اساس تمام پارامترهایی که کاربر نباید بتواند دستکاری کند یک مقدار hash تولید کنیم.
برای امنیت بیشتر بهتر است تابع hash، به عنوان پارامتر ورودی، مشخصاتی از session کاربر هم دریافت کند تا این مقدار برای کاربران و session های مختلف، توفیر داشته باشد.
مقدار hash تولید شده را هم به عنوان یک فیلد hidden در فرم قرار می دهیم.
سپس وقتی که فرم از سمت کاربر برای سرور ارسال شد، باید مجددا بر اساس فرمول قبلی (پارامترهای مخفی فرم و session کاربر) مقدار hash را تولید کرده و با مقداری که در فرم قرار داده بودیم مقایسه کنیم.
بدین صورت دستکاریهای غیر مجاز را می توانیم بی اثر کنیم.
مورد بعدی برای جلوگیری از دستکاری دادهها آن است که پیش از اعمال هر تغییری که در وضعیت سیستم داده میشود باید بررسی کنیم که آیا این تغییر مجاز هست که از سمت این کاربر اعمال شود یا خیر.
برای مطالعه بیشتر بهترین گزینه استفاده از مجموعه owasp است.
برای درک بهتر این آسیبپذیری پیشنهاد میکنم این ویدیو رو مشاهده کنید.