اخبار داخلی آرمان داده پویان

مقالات

تزریق دستورات OS (قسمت اول)

۱۳ خرداد ۱۳۹۸

تزریق دستورات OS

قسمت اول

شرکت آرمان داده پویان ارائه دهنده انواع خدمات امنیتی از جمله تست نفوذ، مشاوره امنیت اطلاعات، سنجش آسیب‌ پذیری برنامه‌های همراه و مهندسی نرم افزار در نظر دارد تا در قسمت مقالات آموزشی به صورت هفتگی به معرفی و بررسی یکی از موضوعاتی که توسط مهاجمین می‌تواند مورد استفاده قرار گیرد بپردازد. در بخش اول به معرفی و بررسی تزریق دستورات OS می‌پردازیم. تزریق دستورات OS چیست، چگونه آسیب‌پذیری‌های مربوط به آن می‌توانند شناسایی و برطرف گردند، معرفی چند دستور و روش برای سیستم عامل‌های مختلف و در آخر هم روش‌های پیشگیری از تزریق دستورات OS موضوعاتی هستند که در دو قسمت ارائه خواهند شد. در ادامه به صورت هفتگی انواع حملات تزریق اعم از تزریق SQL، LDAP و Xpath از جمله موضوعاتی هستند که در هفته‌های آتی در بخش مقالات آموزشی آرمان داده پویان قرار خواهند گرفت.

تزریق دستورات OS (که به عنوان تزریق shell نیز شناخته می‌شود) در واقع یک آسیب پذیری وب است که با استفاده از آن مهاجم می‌تواند دستورات سیستم عاملی که مد نظرش می‌باشد را بر روی سروری که برنامه کاربردی مورد نظر در حال اجراست، به اجرا درآورد در نتیجه مهاجم قادر به انجام کارهای مختلفی خواهد بود. علاوه بر دسترسی به داده‌های برنامه کاربردی و سواستفاده از این برنامه، توانایی استفاده از بقیه اجزای زیرساخت میزبان را داشته و حتی می‌تواند به سیستم‌های دیگر موجود در شبکه نفوذ نماید.

اجرای دستورات مورد نظر مهاجم

در واقع مفهوم این حمله ساده است. اگر در سمت سرویس دهنده ورودی‌ای که کاربر در URL ارسال می‌نماید به درستی بررسی نگردد امهاجم می‌تواند دستورات مورد نظرش را اجرا نماید. برای توضیح این مطلب یک مثال میزنیم. فرض کنید یک برنامه کاربردی برای خرید اینترنتی داریم با نام جورواجور و این برنامه کاربردی این ویژگی را دارد که کاربر می‌تواند ببیند کالایی که مد نظرش می‌باشد در فروشگاهی که می‌خواهد، وجود دارد یا خیر. این درخواست بدین صورت از جانب کاربر به سرویس دهنده منتقل می‌گردد.

https://joorvajoor.com/stockStatus?productID=381&storeID=29

حال در سمت سرویس دهنده از طریق یک دستور shell و شناسه محصول و شناسه فروشگاه مورد نظر این کاربر از سیستم‌های مختلف query گرفته می‌شود تا نتیجه مشخص شود و به سمت کاربر بازگردد. هم دستور و هم آرگیومنت‌ها در پایین آورده شده است.

stockreport.pl 381 29

بعد از مشخص شدن نتیجه برنامه کاربردی آن را به سمت کاربر برمی‌گرداند. اما اگر نظارت درستی در سمت سرویس دهنده بر روی ورودی‌های کاربر نباشد یک مهاجم به طور مثال با افزودن & به انتهای URL دستورات مورد نظرش را در سمت سرویس دهنده می‌تواند اجرا نماید و به مقاصدش دست یابد. مثلا دستور & echo aiwefwlguh & اگر این دستور در قسمت شناسه کاربری گذاشته شود، دستور زیر در قسمت سرویس دهنده اجرا خواهد شد.

stockreport.pl & echo aiwefwlguh & 29

دستور echo که بعد از &  توسط مهاجم افزوده شده است باعث می‌گردد در پاسخ رشته (string) تولید شده نیز به سمت کاربر باز گردد. اگر بخواهیم در ارتباط با دستور بالا یک تویضیح تخصصی بدهیم بایستی بگوییم این دستور از سه قسمت تشکیل شده است. با اجرای آن‌ها خروجی‌های زیر به سمت کاربران برمی‌گردند.

Error – productID was not provided
aiwefwlguh
۲۹: command not found

دستور stockreport.pk بدون دریافت آرگیومنت‌هایش اجرا شده و پیغام خطا را بازمی‌گرداند. فرمان echo تزریق شده اجرا شده و رشته تولید شده در خروجی اکو می‌شود. آرگیومنت‌ ۲۹ به عنوان یک دستور اجرا شده و این اجرا باعث ایجاد یک خطا می‌شود. همچنین قرار دادن جدا کننده‌هایی مانند & بسیار مفید است. دستوری مانند & فرمان تزریق شده را از هر چه که بعد از آن می‌آید، جدا می‌نماید.

دستورات مفید

هنگامی که شما یک آسیب پذیری تزریق دستور OS را شناسایی کرده اید، عموما مفید است که برخی از دستورات اولیه را برای به دست آوردن اطلاعات در مورد سیستمی که به خطر افتاده است، اجرا کنید. در زیر خلاصه ای از این دستورات هم در لینوکس و هم در ویندوز را آورده‌ایم:

هدف این دستورلینوکسویندوز
نام کاربر فعلیwhoamiwhoami
سیستم عاملuname -aver
پیکربندی شبکهifconfigipconfig /all
پیکربندی ارتباطاتnetstat -annetstat -an
روندهای در حال اجراps -eftasklist

تشخیص تزریق کورکورانه دستورات OS

با استفاده از تاخیرهای زمانی

یکی از این روش‌ها توجه به تاخیرهای زمانی است. این موضوع را با یک مثال توضیح می‌دهیم. یکی از بهترین دستورات در این زمینه فرمان ping است. فرمان‌هایی از این دست به مهاجم اجازه می‌دهد تا با توجه به تاخیر زمانی متوجه شود آیا فرمان در ماشین قربانی اجرا شده است یا خیر؟ در این دستور می‌توان هم تعداد بسته‌های ارسالی ICMP و هم مدت زمان اجرای دستور را مشخص نمود. به مثال زیر توجه کنید. در این مثال مهاجم مشخص کرده است که برنامه کاربردی هدف، برای مدت زمان ۱۰ ثانیه کارت شبکه loopback خود را ping نماید.

& ping -c 10 127.0.0.1 &

آرمان داده پویان ارائه دهنده تست نفوذ برنامه‌های کاربردی

برای مشاوره با کارشناسان ما تماس بگیرید

تعداد بازدید: 1230


تازه ترین ها