تست نفوذ یا پنتست (Pentest) چیست؟
قبل از پرداختن به مفهوم تست نفوذ وبسرویس، بهتر است ابتدا با مفهوم کلی پنتست یا تست نفوذ (Penetration Testing) آشنا شویم. آزمون نفوذ (pentest)، فرایندی است که در آن یک هکر قانونمند، برای ارزیابی اهداف خود، با ارسال کدهای مخرب به یافتن آسیبپذیریها میپردازد و هدف اصلی پنتست (آزمون نفوذ)، دسترسی غیرمجاز به سیستم به تقلید از یک هکر غیرقانونی است.
ما در مقاله تست نفوذ چیست؟ توضیحات تکمیلی از این مفهوم را، به همراه انواع پنتست بیان کردیم که شما عزیزان میتوانید از طریق لینک، به این مقاله دسترسی داشته باشید.
وب سرویسها، به عنوان نرمافزاری که از ارتباط بین دستگاهها پشتیبانی میکند، تعریف میشوند. این اطلاعات مبتنی بر XML را میتوان بین سیستمها، برنامهها، پیامها، اسناد، نرمافزارها و موارد دیگر از طریق اینترنت یا سرورهای رایانهای که به درخواستهای وب در یک سیستم خاص گوش میدهند و اسناد مربوطه را ارائه میکنند، مبادله کرد.
وب سرویسها نوعی API یا رابط برنامهنویسی نرمافزار هستند. اگر مشتاق به کسب اطلاعات بیشتر در زمینه APIها هستید، پیشنهاد میکنیم حتما مقاله API چیست؟ را مطالعه بفرمایید.
به طور کلی در مورد مسائل امنیتی، به وبسایتها اهمیت بیشتری داده میشود که همین امر، تست نفوذ وبسایت را بسیار محبوبتر میکند. با این حال، وبسرویسهایی که زمانی به عنوان بردارهای حمله (Attack Vector) ثانویه در نظر گرفته میشدند، اکنون به عنوان اهداف عمومی برای سوء استفاده مهاجمان ظاهر شدهاند. در ادامه به دو مقاله پیشنهادی زیر توجه کنید.
حفاظت با انجام منظم تست نفوذ وبسرویس (Web Pentest) امکانپذیر میشود. اگر نمیدانید که تست نفوذ وبسرویس دقیقاً چیست؟ دیگر جستجو نکنید. در این مقاله در مورد تمامی تستهای نفوذ وبسرویسها ، انواع وبسرویسها، نیاز به وبسرویسهای تست نفوذ ، آسیبپذیریها و تهدیدات رایج برای آن و همچنین مراحل انجام آن صحبت خواهیم کرد. پس همچنان ما را همراهی کنید.
تست نفوذ وبسرویس (Web Pentest) چیست؟
web service pentest یا تست نفوذ وبسرویس، به اقدام هک قانونی برای شناسایی و استخراج آسیبپذیریها در زیرساخت یک وبسرویس اشاره دارد. این میتواند یک دیدگاه منحصر به فرد در مورد اینکه چگونه هکرها میتوانند از آسیبپذیریهای موجود سوء استفاده و به اطلاعات محرمانه دسترسی پیدا کنند، ارائه دهد. آسیبپذیریهای یافته شده در طول تست نفوذ (Penetration Testing) سرویسهای وب را، میتوان به سرعت برطرف کرد تا از چنین فعالیتهای مخربی جلوگیری کنید. اما قبل از اینکه این موضوع را بیشتر بررسی کنیم، بهتر است درک بهتری از انواع مختلف وبسرویس داشته باشیم.
انواع وبسرویس
سرویسهای وب به طور کلی به دو دسته REST (انتقال بازنمودی حالت) و SOAP (پروتکل دسترسی ساده به اشیاء) تقسیم میشوند که در جدول زیر بخشی از تفاوتهای این دو سرویس را بیان کردیم:
S. No. | REST | SOAP |
1. | انتقال بازنمودی حالت | پروتکل دسترسی ساده به اشیاء |
2. | REST یک سبک معماری برای وبسرویس است | SOAP یک پروتکل با مشخصات است |
3. | فقط در صورتی یک سرویس RESTful است، که بدون حالت و قابل ذخیرهسازی باشد | به یک فایل WSDL نیاز دارد که دارای اطلاعات در وب سرویس باشد |
4. | برای دسترسی به منابع پایگاه داده، از سرویسیابهای یکنواخت مانند URI و URLها استفاده میکند | از رابط سرویس برای نشان دادن عملکرد و اطلاعات یک وبسرویس به مشتری استفاده میکند |
وبسرویس در REST
عبارت Representational State Transfer یا REST که توسط روی فیلدینگ در سال 2000 تعریف شد، یک قالب معماری است که وبسرویسی که پس از آن به عنوان خدمات وب RESTful شناخته شدند، آن را دنبال کردند. برای اینکه یک وبسرویس به عنوان وبسرویس RESTful طبقهبندی شود، درخواست باید با استفاده از روشهای HTTP انجام شود. REST بر خلاف سرویس SOAP، عمدتاً منبع محور است.
وبسرویس REST را میتوان با JSON و XML ساخت. JSON (نشانهگذاری شئ جاوا اسکریپت / JavaScript Object Notation ) به دلیل خوانایی و دسترسی به وب، فرمت پر استفادهتری است. اجزای خدمات REST را میتوان به دو بخش زیر تقسیم کرد:
درخواست مشتری
مشتری در اینجا به شخص یا برنامه ای اشاره دارد که به یک سرویس وب دسترسی دارد. درخواست مشتری برای دسترسی به یک سرویس شامل موارد زیر است:
- URI(شناساگر یکنواخت منبع): این شاملURL (Unique Resource Locator) و URN (Unique Resource Name) است. آنها در شناسایی یک منبع کمک میکنند و منابع به اطلاعات خاصی از یک وبسرویس اشاره دارند.
- رابط یکنواخت: سپس این منابع با استفاده از روشهای HTTP برای خواندن (GET)، ایجاد (PUT)، بهروزرسانی(POST) و حذف(DELETE) سرویسهای وب کنترل میشوند.
- Self-description (خود توصیفی): به اطلاعاتی که توسط مشتری اضافه شده، مانند موارد احراز هویت در گواهینامهها، اشاره دارد.
پاسخ سرور
منابع روی سروری با URIهای خاص ذخیره میشوند که به راحتی قابل شناسایی هستند. هنگامی که یک درخواست وارد میشود، خروجی سرور، نمایشی از منبع را در دسترس سیستم مشتری قرار میدهد. در اینجا نکته مهمی که باید به آن توجه کنیم این است که منبع اصلی ارسال نمیشود، بلکه نمایشی از آن در یک نقطهی زمانی خاص است.
وبسرویس در SOAP
برخلاف REST که اساساً دستورالعملهای ساختاری برای طراحی سرویسهای وب است، پروتکل دسترسی ساده به اشیا (SOAP)، به مجموعه خاصی از پروتکلها اشاره دارد که قالب XML را تعریف و محدود میکند. توجه به این نکته مهم است که خدمات SOAP و REST قابل مقایسه نیستند، بلکه جنبههای مختلف وبسرویس هستند.
XML برای انتقال دادهها بین مشتری و سرور از طریق درخواست و پاسخ استفاده میشود در حالی که زبان توصیف سرویسهای وب (Web Service Description Language) که به اختصار به آن WDSL میگویند، برای تعریف قالب و عملکرد وبسرویس استفاده میشود. این شامل ساختار درخواست و پاسخ، نقطه پایان و تمام تعاریف عملیاتی نیز میشود.
ساختار وبسرویس SOAP عبارتند از:
- بسته: سند بنیادی اولیه که شامل دو قسمت سربرگ و بدنه میباشد.
- سربرگ: شامل اطلاعاتی است که ابراطلاعات را در مورد اینکه سند XML به کدام مشتری برای احراز هویت و صدور مجوز ارسال میشود، مشخص میکند.
- بدنه: محتوی حقیقی XML است که حاوی پیام میباشد.
از آنجایی که وبسرویس REST را میتوان به زبان XML نیز انجام داد، پروتکل وبسرویس SOAP فوق را نیز میتوان برای آن اعمال کرد. اما، برعکس آن قابل اجرا نیست زیرا SOAP صرفاً مبتنی بر XML است.
اهمیت پنتست (تست نفوذ) وبسرویس
نیاز به تست نفوذ وب سرویسها، از آسیبپذیریهای موجود در آنها ناشی میشود که میتواند منجر به انواع تهدیدها و سوء استفادهها شود. در ادامه به آنها میپردازیم. با ما همراه باشید.
آسیبپذیریهای رایج در وبسرویسها
احراز هویت ضعیف
اجرای احراز هویت در وبسرویسها اغلب بسیار دشوار است. این مورد میتواند منجر به اجرای احرازهویتهای نامناسب یا ضعیف شود که میتواند به راحتی مورد سوء استفاده قرار گیرد و باعث میشود که جنبههای احراز هویت مانند شناسایی مشتری/کاربر و امنیت وبسرویس در یک سیستم به شدت به خطر بیوفتد.
عدم رمزگذاری
رمزگذاری نکردن ایمن سرویسهای وب، میتواند منجربه سوء استفاده از آنها شود. رمزگذاری باعث درهمسازی محتوا شده و در نتیجه از آن در برابر چشمان کنجکاو محافظت میکند. رمزگذاری نامناسب برای سرویسهای در حالت استراحت یا در حال انتقال اطلاعات، احتمال درز دادههای حساس را به طور واضح افزایش میدهد.
نقاط مرزی ناامن
سرویسهای وب اغلب نقاط مرزی را در شناسههای شی نشان میدهند، زیرا توسعهدهندگان اغلب آن را جا میاندازند. این مورد میتواند آنها را در برابر مجوزهای سطح شی شکسته(BOLA) آسیبپذیر کند. مجوز در سطح شیء دسترسی کاربران به اشیاء خاص را کنترل میکند.
خطای منطق تجاری
این خطا از روشهایی ناشی میشوند که در عین مشروع بودن، نتایج منفی برای سرویسهای وب ایجاد میکنند. همچنین آزمایش آنها دشوار است زیرا فرآیندها عادی و قانونی به نظر میرسند. چنین خطاهای منطقی کشف نشدهای، میتوانند منجر به آسیبپذیری وبسرویس شوند.
تهدیدات رایج برای خدمات وب (وبسرویس)
حملات تزریقی
در این حملات، یک حمله با تزریق کد مخرب به برنامه مرحلهبندی میشود. کدها معمولا SQL یا XSS هستند. اولی روی پایگاههای داده سرور و سرقت اطلاعات حساس از آنها تمرکز میکند، در حالی که دومی مشتریان را با هدایت آنها به وبسایتهای محافظتنشدهای که میتوان از طریقشان اطلاعات کاربر را به سرقت برد، مورد حمله قرار میدهد. در مورد وبسرویسها، این کدهای مضر میتوانند برای دستکاری یا انتقال کدهای مخرب به API نیز استفاده شوند.
حملات DoS
حمله انکار سرویس (Denial of Service attack) یا همان DoS، با ایجاد اختلال در یک وبسرویس با غرق کردن آن توسط بستههایICMP (پروتکل کنترل پیام اینترنت) یا SYN (همگامسازی) انجام میشود. هنگامی که سیستم مملو از درخواستها، اطلاعات و ترافیک باشد، نمیتواند آن را مدیریت کند، در نهایت از کار افتاده و متوقف خواهد شد.
احراز هویت ناقص
احراز هویت ضعیف یا ناقص که کنترل میکند چه کسی میتواند به اشیاء خاص دسترسی داشته باشد، با پیشی گرفتن کامل از آنها و یا به دست آوردن کنترل آنها، منجر به سوء استفاده مهاجمان مخرب از این آسیبپذیری میشود. با چنین حملهای، جنبههای مختلف یک وبسرویس مانند رمزهای عبور، کلیدهای API و موارد دیگر ممکن است برای استفاده نامشروع قابل دسترسی باشند.
افشاء اطلاعات
هر زمان که دادههای در حال استراحت یا انتقال، به درستی از طریق رمزگذاری دقیق، ایمن نشده باشند، اطلاعات محرمانه را رمزگذاری نشده و در معرض دید قرار میدهند. این مورد نیز منجر به سرقت، دستکاری یا حذف اطلاعات و یا کدهای بسیار حساس مشتری میشود.
حملهی مرد میانی (Man-In-The-Middle)
در چنین حملهای، زمانی که انتقال اطلاعات در حال انجام است، مهاجم بین کاربر و یک برنامه قرار میگیرد. در نتیجه اطلاعات کافی برای اقدام یا گوش دادن به هر یک از طرفین در حالی که شرایط عادی به نظر میرسد به دست آورده و از فرصت رهگیری اطلاعات حساس از مشتری یا سیستم استفاده میکند.
مراحل تست نفوذ وبسرویس
اسناد وبسرویس
مرور مستندات یک وبسرویس میتواند به شناسایی نقاط مرزی و پارامترهای مورد استفاده برای درخواست آن کمک کند. شناسایی این مناطق همچنین میتواند به درک عملکرد API و آسیبپذیریهای احتمالی آن نیز کمک کند.
ورودیها و خروجیهای وبسرویس
با شناسایی ورودیها و خروجیهای یک وبسرویس، میتوانید آسیبپذیریهای موجود در آنها را نیز مشخص کنید. رایجترین ورودیها و خروجیهای یک وبسرویس به شرح زیر است:
- درخواستهای وبسرویس برای دریافت پاسخ از یک برنامه یا سیستم و همچنین برای دسترسی به یک منبع که مربوط به ارتباط از طرف مشتری هستند.
پارامترهای URI که شامل URNها و URLهایی هستند که اساساً آدرس منبع موجود در وب هستند. - سرصفحهها در سرویسهای وب SOAP یا RESTful که دارای متا اطلاعات مهمی در مورداینکه اطلاعات از کجا و توسط چه کسی ارسال میشوند.
- پاسخهای وب، پاسخهای HTTP از سمت سرور به درخواستهای ارائه شده توسط مشتریان بوده، که بسته به درخواست مشتری متفاوت هستند.
- احراز هویت مکانیزمی است که به شناسایی کاربر و بررسی مجوز او برای دسترسی به یک وب سرویس کمک میکند، که میتواند رمز عبور، توکن یا گواهی باشد.
- کوکیها، مقادیر کمی از اطلاعات وب سایتهایی هستند که از طریق رایانه یا تلفن همراه از آنها بازدید میکنید. کوکیها به وبسایتها اجازه میدهند تا کاربر را شناسایی کرده تا به تنظیمات دلخواه خود بروند و اطلاعات مربوط به فعالیتهای مرورگر برای تبلیغات هدفمند را جمعآوری کنند.
- کلیدهای وبسرویس، کدهای خاصی هستند که امکان دسترسی به ویژگیهای خاصی را در یک وبسایت فراهم میکنند و از آنها در برابر دسترسی عموم محافظت میکنند.
این موارد مناطقی هستند که احتمال یافتن آسیبپذیری در آنها زیاد است.
شناسایی و بهرهبرداری از آسیبپذیریها
اگر با استفاده از یک اسکنر جامع آسیبپذیری، آسیبپذیریهای ذکر شده در بالا در یک وبسرویس شناسایی شوند، میتوانند از طریق روشهای مختلف مورد سوء استفاده قرار گیرند:
• Fuzzing : این یک روش بهرهبرداری است که در آن اطلاعات تصادفی در API وبسرویس، قرار میگیرد تا زمانی که پاسخی مانند برخی اطلاعات یا یک پیام خطا دریافت شود که نشان میدهد دادههای تصادفی توسط API پردازش شده است.
• حملات Test For Injection : این حملات عمدتاً حملات تزریق SQL هستند که در آن کدهای مخرب از طریق وبسایت به قسمت آسیبپذیر پایگاه داده تزریق میشود. از آنجایی که هر فیلد جستجو به عنوان دروازهای به پایگاه داده عمل میکند، اگر کد مضر وارد و پردازش شود، میتواند منجر به دسترسی به اطلاعات حساس در پایگاه داده شود.
• دستکاری پارامتری: پارامترها با استفاده از روشهای HTTP تنظیم میشوند که به خواندن کمک میکند. برای آزمایش آسیبپذیری به وسیلهی آنها، درخواستی را ارسال کنید که نیاز به احراز هویت دارد. هنگامی که درخواست پردازش میشود، اگر پیام “200 Ok” را بدون احراز هویت نشان دهد، این نشاندهنده یک آسیبپذیری است.
گزارش یافتهها
هنگامی که تمام آسیبپذیریهای یافت شده برای ارزیابی سطح آسیبی که میتوانند ایجاد کنند استخراج میشوند، یک گزارش مفصل با تمام جزئیات ذکر شده در آن تهیه میشود، که شامل همه چیز از دامنه پنتست گرفته تا لیست آسیبپذیریها، میباشد. این آسیبپذیریها با سطح خطر CVSS و اقدامات اصلاحی احتمالی که باید برای رفع آنها انجام شود، به تفصیل توضیح داده شدهاند. انجام این کار میتواند به محافظت از سرویسهای وب در برابر هرگونه حمله احتمالی و سوء استفاده از حفرههای آنها کمک کند.
اسکن دوباره
پس از رفع آسیبپذیریهای ذکر شده در گزارش تفصیلی با کمک ویدیوهای POC و تلاشهای مشترک تیم pentesting و تیم توسعه، مطمئن شوید که یک اسکن مجدد انجام شده است. این اجازه میدهد تا هر گونه آسیبپذیری بیشتری را با علامتگذاری شناسایی کنید. پس از انجام این کار، وبسرویس واجد شرایط دریافت گواهی پنتست میشود.
نتیجه
این مقاله جنبههای مختلف وبسرویس از جمله انواع سرویسهای وب در دسترس، آسیبپذیریهای رایج و تهدیداتی که سرویسهای وب با آنها مواجه هستند را برجسته کرده است. در کنار این، تجزیه و تحلیل دقیقی از تست نفوذ وبسرویسها و مراحل انجام آن نیز ذکر کردیم. میتوانید درصورت نیاز به کسب اطلاعات بیشتر و یا مشاوره، با متخصصین اسکوریا در ارتباط باشید.
سوالات متداول
تفاوت بین API و وبسرویس چیست؟
API یک واسطه نرمافزاری است که امکان تعامل بین دو اپلیکیشن را فراهم میکند، در حالی که یک وبسرویس به مجموعهای از دستورالعملها و پروتکلهای مورد استفاده برای تبادل اطلاعات بین آنها اشاره دارد. همه وبسرویسها نوعی API هستند، در حالیکه، همه APIها یک نوع وبسرویس نیستند.
آسیبپذیریهای رایج در وبسرویس چیست؟
رایجترین آسیبپذیریها در یک وبسرویس، شامل احراز هویت ضعیف، عدم رمزگذاری مناسب اطلاعات، نقاط مرزی ناامن و خطاهای هوش تجاری است.
اهمیت تست نفوذ وبسرویس چیست؟
تست نفوذ وبسرویس، برای شناسایی و سوء استفاده از هر گونه آسیبپذیری در یک وبسرویس و همچنین برای درک سطح شدت و رفع آنها، قبل از وقوع یک حمله واقعی اهمیت دارد.