
بررسی Privilege Escalation
در این بخش از دوره آموزشی OWASP-WSTG به پنجمین بخش از استاندارد WSTG با شناسه WSTG-ATHZ-03 می پردازیم که مربوط به بررسی Privilege Escalationمی باشد.
خلاصه
این بخش به توضیح مساله افزایش دسترسی یا Privilege Escalation از یک بخش به بخش دیگر میپردازد. در طول این مرحله، تست نفوذگر باید تایید کند که امکان اصلاح سطوح دسترسی یا نقشهای خود درون برنامه به گونهای که امکان تشدید حملات را فراهم کند، برای کاربر وجود ندارد.
Privilege Escalation زمانی رخ میدهد که یک کاربر بیش از حد معمول به منابع یا قابلیتهای خود دسترسی داشته باشد و البته میبایست از چنین ارتقا یا تغییراتی توسط برنامه جلوگیری به عمل آید. این آسیبپذیری معمولا ناشی از یک نقص در برنامه است. در نتیجه برنامه، اقداماتی را با امتیازات بیشتری نسبت به موارد مورد نظر توسعهدهنده یا مدیر سیستم انجام میدهد.
درجه شدت این آسیبپذیری بستگی به این دارد که مهاجم مجاز به داشتن چه امتیازاتی بوده و چه امتیازاتی را میتواند در یک اکسپلویت موفق به دست آورد. به عنوان مثال، یک خطای برنامهنویسی که به کاربر اجازه میدهد تا پس از احراز هویت موفق سطح دسترسی بیشتری به دست آورد، درجه Escalation را محدود میکند، زیرا کاربر قبلا مجاز به داشتن سطح دسترسی است. به همین ترتیب، یک مهاجم از راه دور که بدون هیچ گونه احراز هویت، سحط دسترسی superuser را به دست میآورد، درجه بیشتری از Escalation را نشان میدهد.
موضوع دیگر در آسیبپذیریهای ارتقای سطح دسترسی، نوع افقی یا عمودی است. معمولا، زمانی به Vertical Escalation اشاره میشود که دسترسی به منابع اعطا شده به حسابهای دارای امتیاز بیشتر (به عنوان مثال، کسب امتیازات مدیر برای برنامه) و Horizontal Escalation زمانی که دسترسی به منابع اعطا شده به حساب پیکربندی شده مشابه امکان پذیر باشد (به عنوان مثال، در یک برنامه بانکداری آنلاین، دسترسی به اطلاعات مربوط به یک کاربر متفاوت دیگر با همان سطح دسترسی).
اهداف تست
شناسایی نقاط تزریق مربوط به دستکاری سطح دسترسی.
Fuzz یا در غیر این صورت تلاش برای دور زدن اقدامات امنیتی.
چگونه تست را انجام دهیم
تست Role/Privilege Manipulation
در هر بخشی از برنامه که در آن کاربر میتواند اطلاعات را در پایگاهداده ایجاد کند (به عنوان مثال، پرداخت کردن، اضافه کردن یک Contact یا ارسال یک پیام)، یا میتواند اطلاعات را دریافت کند (شرح حساب، جزئیات سفارش و غیره)، یا اطلاعات را حذف کند (حذف کاربران، پیامها و غیره)، ثبت آن عملکرد ضروری است. تست نفوذگر باید بررسی نماید که آیا دسترسی به تابعی که نباید توسط نقش یا دسترسی کاربر مجاز باشد (اما ممکن است به عنوان کاربر دیگر مجاز باشد)، امکان پذیر است یا خیر.
Manipulation of User Group
به عنوان مثال:
درخواست HTTP POSTزیر به کاربر عضو در گروه grp001 اجازه میدهد تا به سفارش 0001 دسترسی داشته باشد:

در این بخش باید بررسی کنید که آیا کاربری که به گروه grp001 تعلق ندارد میتواند مقدار پارامترهای groupID و orderID را برای به دست آوردن دسترسی به دادههای دیگر (privileged data) تغییر دهد.
Manipulation of User Profile
به عنوان مثال:
پاسخ سرور زیر، یک فیلد مخفی در HTML است که به کاربر پس از احراز هویت موفق وی، بازگشت داده شده است.

چه اتفاقی میافتد اگر تست نفوذگر مقدار متغیر profile را به SysAdmin تغییر دهد؟ آیا مدیر شدن امکان پذیر است؟
Manipulation of Condition Value
به عنوان مثال:
سروری که در یک محیطی وجود دارد، پیام خطایی را که به عنوان یک مقدار در یک پارامتر خاص در مجموعهای از کدهای پاسخ وجود دارد، به صورت زیر ارسال میکند:

سرور یک اعتماد ضمنی به کاربر میدهد و بر این باور است که کاربر با بستن پیام بالا به جلسه پاسخ خواهد داد.
در این شرایط، تایید کنید که امکان ارتقای سطح دسترسی با اصلاح مقادیر پارامتر وجود ندارد. در این مثال خاص، با تغییر مقدار PVValid از -1 به 0 (بدون error conditions)، ممکن است احراز هویت به عنوان مدیر به سرور امکان پذیر باشد.
Manipulation of IP Address
برخی از وب سایتها دسترسی یا تعداد تلاشهای ناموفق برای ورود به سیستم را براساس آدرس IP محدود میکنند.
به عنوان مثال:

در این مورد، اگر وب سایت از مقدار X-forwarded-Forبرای آدرس IP کلاینت استفاده کند، تست نفوذگر ممکن است مقدار IP برای هدر X-forwarded-For را تغییر دهد تا امکان دسترسی به منبع مورد نظر محقق شود.
URL Traversal
سعی کنید از وب سایت عبور کنید (traverse) و بررسی کنید که آیا برخی از صفحاتی که ممکن است بررسی مجوز را نادیده بگیرند.
به عنوان مثال:

WhiteBox
اگر بررسی مجوز URL تنها با تطبیق جزئی از URL انجام شود، پس احتمالا تست نفوذگر یا هکرها ممکن است با استفاده از تکنیکهای URL Encoding، از مجوز تعریف شده عبور کنند.
به عنوان مثال:

Weak SessionID
شناسه نشست ضعیف، دارای الگوریتمی است که ممکن است در برابر حمله Brute Force آسیبپذیر باشد. به عنوان مثال، یک وب سایت از MD5(Password + UserID) به عنوان sessionID استفاده میکند. سپس، تست نفوذگرها ممکن است برای سایر کاربران، این مدل sessionID را تولید نموده و یا حدس بزند.
مراجع
Whitepapers
Wikipedia – Privilege Escalation
ابزارها
OWASP Zed Attack Proxy (ZAP)