20 درصد تخفیف ویژه دوره های جامع آکادمی تکوان24!

فقط 0 روز و 0 ساعت و 0 دقیقه و 0 ثانیه باقی مانده!

آنچه باید در مورد امنیت وب اپلیکشن ها بدانید

زمان مطالعه: 9 دقیقه

آنچه در این مقاله می‌خوانید

امنیت وب اپلیکشن ها

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

وب اپلیکیشن ها معمولاً از معماری کلاینت-سروری برای اجرا و مدیریت تعاملات استفاده می کنند. آنها معمولاً دارای اجزای front-end (یعنی رابط وب‌سایت یا آنچه کاربر می‌بیند) هستند که در سمت کلاینت (مرورگر) و قسمت back-end (کد منبع وب اپلیکیشن) هستند که در سمت سرور اجرا می‌شوند. مثل (سرور/پایگاه های داده).

 امنیت وب اپلیکشن ها

وب اپلیکیشن ها به سازمان‌ها این امکان را  می‌دهد تا اپلیکیشن های قدرتمند را با کنترلی تقریباً کامل و  real-time بر روی طراحی و عملکرد خود میزبانی کنند و در عین حال در سراسر جهان در دسترس هستند. برخی از نمونه‌های وب اپلیکیشن ها معمولی شامل سرویس‌های ایمیل آنلاین مانند Gmail، خرده‌ فروشی های آنلاین مانند Amazon، و واژه‌پردازهای آنلاین مانند Google Docs هستند.

وب اپلیکیشن ها منحصر به ارائه دهندگان غول پیکری مانند گوگل یا مایکروسافت نیستند، اما می توانند توسط هر توسعه دهنده وب توسعه داده شوند و به صورت آنلاین در هر یک از سرویس های میزبانی رایج میزبانی شوند تا توسط هر کسی در اینترنت استفاده شود. به همین دلیل است که امروزه میلیون ها وب اپلیکیشن در سراسر اینترنت داریم که هر روز میلیاردها کاربر با آنها در تعامل هستند.

تفاوت وب سایت و وب اپلیکیشن:

در گذشته، ما با وب‌سایت‌هایی تعامل داشتیم که ایستا بودند و نمی‌توانستیم آنها را به صورت real-time تغییر دهیم. این به این معنی است که وب سایت های سنتی به صورت ایستا برای نمایش اطلاعات خاص ایجاد شده اند و این اطلاعات با تعامل ما تغییر نمی کند. برای تغییر محتوای وب سایت، صفحه مربوطه باید توسط توسعه دهندگان به صورت دستی ویرایش می‌شد. این نوع صفحات ایستا حاوی توابع نیستند و بنابراین امکان تغییرات real-time  وجود نداشت. این نوع وب سایت به عنوان  Web 1.0 نیز شناخته می‌شود.

web site vs web application

از طرف دیگر، اکثر وب سایت هایی که وب اپلیکیشن ها یا Web 2.0 را اجرا می‌کنند که محتوای پویا را بر اساس تعامل کاربر ارائه می دهد. تفاوت مهم دیگر این است که وب اپلیکیشن ها کاملاً یک اپلیکیشن هستند و می‌توانند عملکردهای مختلفی را برای کاربر انجام دهند، در حالی که وب سایت ها فاقد این نوع عملکرد هستند. سایر تفاوت های کلیدی بین وب سایت های سنتی و وب اپلیکیشن ها عبارتند از: ماژولار بودن اجرا بر روی هر اندازه نمایشگر و اجرا بر روی هر پلت فرم بدون بهینه سازی.

تفاوت میان وب اپلیکشن و برنامه های تحت یک سیستم عامل

بر خلاف  Native Operating System Applications ، وب اپلیکیشن ها مستقل از پلتفرم هستند و می توانند در مرورگر هر سیستم عاملی اجرا شوند. وب اپلیکیشن ها نیازی به نصب بر روی سیستم کاربر ندارند زیرا این وب اپلیکیشن ها و عملکرد آنها از راه دور بر روی ریموت سرور  اجرا می شوند و از این رو هیچ فضایی در هارد دیسک کاربر مصرف نمی کنند.

یکی دیگر از مزایای وب اپلیکیشن ها نسبت به Native Operating System Applications، یکپارچگی نسخه است. همه کاربرانی که به یک وب اپلیکیشن دسترسی دارند از یک نسخه و یک وب اپلیکیشن استفاده می کنند، که می تواند به طور مداوم بدون  اعمال اجبار برای بروز رسانی برای هر کاربر، به روز رسانی و اصلاح شود. وب اپلیکیشن ها را می توان در یک مکان واحد (وب سرور) بدون ایجاد ساختار های مختلف برای هر پلتفرم به روز کرد، که به طور چشمگیری هزینه های نگهداری و پشتیبانی را کاهش می دهد و نیاز به  تغییرات را به همه کاربران به صورت جداگانه از بین می برد.

Web Applications vs. Native Operating System Applications

از سوی دیگر، Native Operating System Applications مزایای خاصی نسبت به  وب اپلیکیشن ها دارند، به ویژه سرعت عملکرد آنها و توانایی استفاده از کتابخانه های Native Operating System Applications و سخت افزار محلی. از آنجایی که اپلیکیشن های  برای استفاده از کتابخانه های Native Operating System Applications ساخته شده اند، بارگیری و تعامل با آنها بسیار سریعتر است. علاوه بر این، native applications معمولاً از وب اپلیکیشن ها توانایی بیشتری دارند، زیرا ادغام عمیق‌تری با Native Operating System Applications دارند و فقط به قابلیت‌های مرورگر محدود نمی‌شوند.

با این حال، اخیراً، وب اپلیکیشن های هیبریدی رایج تر شده اند. آنها از فریمورک های مدرن برای اجرای وب اپلیکیشن با استفاده از قابلیت‌ها و منابع سیستم‌عامل استفاده می‌کنند که آن‌ها را سریع‌تر از برنامه‌های وب معمولی و توانمندتر می‌کند.

Web Application Distribution:

بسیاری وب اپلیکیشن open source وجود دارند که توسط سازمان ها در سراسر جهان مورد استفاده قرار می گیرند که می توانند برای رفع نیازهای هر سازمان سفارشی شوند. برخی از  این اپلیکیشن ها رایج عبارتند از:

همچنین وب اپلیکیشن های close source هم وجود دارد که معمولاً توسط یک سازمان خاص توسعه داده می شود و سپس به سازمان دیگری فروخته می شود یا توسط سازمان ها از طریق  طرح اشتراک استفاده می شود. برخی از این اپلیکیشن های رایج عبارتند از:

خطرات امنیتی وب اپلیکیشن ها:

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

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

Security Risks of Web Applicationsتست نفوذ وب اپلیکیشن یک مهارت بسیار مهم برای یادگیری است. هر سازمانی که به‌دنبال ایمن‌سازی وب اپلیکیشن(و شبکه داخلی) خود است، باید آزمایش‌های مکرر وب اپلیکیشن را انجام دهد و شیوه‌های کدگذاری امن را در هر مرحله از چرخه  توسعه پیاده‌سازی کند. برای بررسی صحیح وب اپلیکیشن، باید بدانیم که آنها چگونه کار می کنند، چگونه توسعه می یابند و چه نوع خطری در هر لایه و جزء برنامه بسته به فناوری های مورد استفاده وجود دارد.

ما همیشه با برنامه های وب مختلفی روبرو خواهیم شد که به طور متفاوتی طراحی و پیکربندی شده اند. یکی از رایج ترین و پرکاربردترین روش ها برای تست نفوذ وب اپلیکیشن ها، OWASP Web Security Testing Guide است.

OWASP Web Security Testing Guide

یکی از رایج‌ترین روش‌ها این است که با بررسی مؤلفه‌های ظاهری یک وب اپلیکیشن، مانند HTML، CSS و جاوا اسکریپت (که به عنوان سه‌گانه front-end شناخته می‌شود) شروع کنید و سعی کنید آسیب‌پذیری‌هایی مانند Sensitive Data Exposure و Cross-Site Scripting (XSS) را پیدا کنید. هنگامی که تمام اجزای front-end کاملاً آزمایش شدند، معمولاً عملکرد اصلی وب اپلیکیشن و تعامل بین مرورگر و وب سرور را بررسی می‌کنیم تا فناوری‌هایی را که وب‌ سرور استفاده می‌کند برشماریم و به دنبال نقص‌های قابل اکسپلویت باشیم.

ما معمولاً وب اپلیکیشن ها را از منظر احراز هویت نشده و اهراز هویت شده ارزیابی می‌کنیم (اگر برنامه دارای قابلیت login باشد) تا پوشش را به حداکثر برسانیم و هر سناریوی حمله احتمالی را بررسی کنیم.

حمله به وب اپلیکیشن ها:

در عصر حاضر، اکثر شرکت ها، صرف نظر از اندازه، یک یا چند وب اپلیکیشن در محیط خارجی خود دارند. این برنامه‌ها می‌توانند همه چیز باشند، از وب‌سایت‌های ایستای ساده گرفته تا وبلاگ‌های مجهز به سیستم‌های مدیریت محتوا (CMS) مانند wordpress تا برنامه‌های پیچیده با قابلیت ثبت‌نام/ورود که از نقش‌های کاربری مختلف از کاربران اصلی گرفته تا مدیران  پشتیبانی می‌کنند.

امروزه، یافتن یک میزبان خارجی که مستقیماً از طریق یک اکسپلویت عمومی شناخته شده (مانند یک سرویس آسیب پذیر یا Windows remote code execution (RCE) قابل اکسپلویت باشد، چندان رایج نیست، اگرچه این اتفاق می افتد. وب اپلیکیشن ها سطح حمله گسترده ای را ارائه می دهند و ماهیت پویا آنها به این معنی است که دائماً در حال تغییر هستند (و نادیده گرفته می شوند!).

یک تغییر نسبتاً ساده کد ممکن است آسیب‌پذیری فاجعه‌بار یا مجموعه‌ای از آسیب‌پذیری‌ها را معرفی کند که می‌توانند برای دسترسی به داده‌های حساس یا اجرای کد از راه دور روی وب سرور یا میزبان‌های دیگر در محیط، مانند سرورهای پایگاه داده، به هم متصل شوند.

یافتن نقص هایی که می تواند مستقیماً به اجرای کد منجر شود، غیرمعمول نیست، مانند یک فرم آپلود فایل که امکان آپلود کد مخرب را فراهم می کند یا یک آسیب پذیری شامل فایل که می تواند برای اجرای کد از راه دور مورد استفاده قرار گیرد. یک آسیب پذیری شناخته شده که هنوز در انواع مختلف وب اپلیکیشن کاملاً رایج است،  SQL Injection است. این نوع آسیب‌پذیری از مدیریت ناایمن ورودی‌های ارائه‌شده توسط کاربر ناشی می‌شود. که می تواند منجر به دسترسی به داده های حساس، خواندن/نوشتن فایل ها در سرور پایگاه داده و حتی اجرای کد از راه دور شود.

SQL Injectionما اغلب آسیب‌پذیری‌های SQL Injection  را در وب اپلیکیشن ها که از Active Directory  برای احراز هویت استفاده می‌کنند، می‌یابیم. در حالی که معمولاً نمی‌توانیم از این ورش برای استخراج رمز عبور استفاده کنیم (از آنجایی که Active directory آن‌ها را مدیریت می‌کند)، اغلب می‌توانیم اکثر یا همه آدرس‌های ایمیل کاربران Active Directory را که اغلب با نام‌های کاربری آن‌ها یکسان است، جذب کنیم. سپس می توان از این داده ها برای انجام یک حمله password spraying علیه پورتال های وب استفاده کرد که از Active Directory برای احراز هویت  VPN یا Microsoft Outlook Web Access/Microsoft O365  استفاده می‌کنند.

password spraying موفقیت آمیز اغلب می‌تواند منجر به دسترسی به داده های حساس مانند ایمیل یا حتی به طور مستقیم در محیط شبکه یک سازمان شود.

مثال زیر آسیب‌هایی را نشان می‌دهد که می‌تواند از آسیب‌پذیری یک وب اپلیکیشن ایجاد شود، به‌ویژه زمانی که برای استخراج داده‌ها از یک برنامه که می‌تواند برای حمله به سایر بخش‌های زیرساخت خارجی یک شرکت استفاده شود، (حمله زنجیره‌ای). یک متخصص infosec کاملاً جامع باید درک عمیقی از وب اپلیکیشن ها داشته باشد و به اندازه تست نفوذ شبکه و حملات Active Directory در حمله به برنامه های وب نیز مسلط باشد. یک متخصص تست نفوذ با پایه ای قوی در وب اپلیکیشن ها اغلب می تواند خود را از همتایان خود متمایز کند و نقص هایی را بیابد که ممکن است دیگران نادیده گرفته اند.

چند نمونه واقعی دیگر از حملات وب اپلیکیشن ها و تأثیر آن به شرح زیر است:

SQL Injection:

به دست آوردن نام های کاربری Active Directory و انجام یک حمله password spraying علیه VPN یا پورتال ایمیل.

File Inclusion:

خواندن کد منبع برای یافتن یک صفحه یا دایرکتوری مخفی که عملکردهای اضافی را نشان می دهد که می تواند برای اجرای کد از راه دور استفاده شود.

Unrestricted File Upload:

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

Insecure Direct Object Referencing (IDOR):

هنگامی که با نقصی مانند Broken Access Control ترکیب می‌شود، اغلب می توان از آن برای دسترسی به فایل ها یا عملکرد کاربر دیگر استفاده کرد. یک مثال می تواند ویرایش پروفایل کاربری خود در حال مرور در صفحه ای مانند /user/701/edit-profile باشد. اگر بتوانیم ۷۰۱ را به ۷۰۲ تغییر دهیم، ممکن است پروفایل کاربر دیگری را ویرایش کنیم.

Broken Access Control:

مثال دیگر اپلیکیشنی است که به کاربر اجازه می دهد یک حساب کاربری جدید ثبت کند. اگر عملکرد ثبت حساب ضعیف طراحی شده باشد، کاربر ممکن است هنگام ثبت نام، سطح دسترسی را افزایش دهد. هنگام ثبت نام کاربر جدید،درخواست POST را درنظر بگیرید که داده username=bjones&password=Welcome1&[email protected]&roleid=3 را ارسال می کند. اگر بتوانیم پارامتر roleid را دستکاری کنیم و آن را به ۰ یا ۱ تغییر دهیم، چه اتفاقی می‌افتد؟ ما در واقعیت وب اپلیکیشن هایی را دیده‌ایم که در آن‌ها چنین نقصی وجود داشته ، که امکان گرفتن دسترسی ادمین یا کاربر با دسترسی بالا را با توجه به تغییر پارامتری که ذکر شد وجود دارد.

امیدوارم از این مقاله آموزشی لذت برده باشید. در صورتی که علاقمند به یادگیری امنیت و تست نفوذ وب هستید می توانید پکیج جامع دوره آموزش تست نفوذ وب را از سایت آکادمی تکوان ۲۴ تهیه کنید.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد.

20 درصد تخفیف ویژه دوره های جامع آکادمی تکوان24!

فقط 0 روز و 0 ساعت و 0 دقیقه و 0 ثانیه باقی مانده!