API testing, API recon & API documentation | هانت لرن

API testing

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

API testing, API recon & API documentation

API testing

https://portswigger.net/web-security/api-testing

 

      API ها (Application Programming Interfaces) به سیستم های نرم افزاری و برنامه ها امکان ارتباط و به اشتراک گذاری داده ها را می دهند. API testing مهم است زیرا آسیب پذیری های موجود در API ها ممکن است جنبه های اصلی محرمانگی، یکپارچگی و در دسترس بودن یک وب سایت را تهدید کند.

      تمام وب سایت های پویا (dynamic website) از API ها تشکیل شده اند، بنابراین آسیب پذیری های وب کلاسیک مانند SQL Injection می توانند به عنوان API testing دسته بندی شوند. در این موضوع، ما به شما یاد میدهیم چگونه API هایی را که به طور کامل توسط front-end وب سایت استفاده نمی شوند، با تمرکز بر API های RESTful و JSON تست کنید. ما همچنین به شما آموزش میدهیم که چگونه آسیب پذیری های server-side parameter pollution که ممکن است بر API های داخلی تأثیر بگذارند، تست کنید.

      برای نشان دادن همپوشانی بین API testing و general web testing، ما نقشه‌ای بین موضوعات موجود خود و OWASP API Security Top 10 2023 ایجاد کرده ایم.

 

   Related pages

       برای یادگیری بیشتر در مورد API های GraphQL، موضوع آموزشی آسیب پذیری های API GraphQL ما را ببینید

 

API recon

 

       برای شروع API testing ، ابتدا باید تا حد ممکن اطلاعات در مورد API را پیدا کنید تا سطح حمله آن را کشف کنید.

       برای شروع، باید API endpoints را شناسایی کنید. این مکان ها هستند که API درخواست های مربوط به یک منبع خاص را در سرور خود دریافت می کند. به عنوان مثال، درخواست GET زیر را در نظر بگیرید:

GET /api/books HTTP/1.1

Host: example.com

 

       API endpoints برای این درخواست /api/books است. این منجر به interaction با API  برای بازیابی فهرست books از یک library می شود. یکی دیگر از API endpoints ممکن است به عنوان مثال /api/books/mystery باشد، که فهرستی از mystery books را بازیابی می کند.

       پس از شناسایی endpoints ، باید تعیین کنید چگونه با آنها تعامل کنید. این به شما امکان می دهد درخواست های HTTP معتبری را برای تست API بسازید. به عنوان مثال، باید اطلاعاتی در مورد موارد زیر پیدا کنید:

·        داده های ورودی که API پردازش می کند، از جمله پارامترهای اجباری و اختیاری.

·        انواع درخواست هایی که API قبول می کند، از جمله روش های HTTP پشتیبانی شده و فرمت های رسانه ای.

·        محدودیت های نرخ و مکانیزم های تأیید هویت.

API documentation

 

       API ها معمولا document شده اند تا توسعه دهندگان بدانند چگونه از آنها استفاده کنند و با آنها یکپارچه شوند.

Documentation می تواند به هر دو صورت قابل خواندن برای انسان و قابل خواندن برای ماشین باشد. Documentation قابل خواندن برای انسان برای درک توسعه دهندگان از نحوه استفاده از API طراحی شده است. ممکن است شامل توضیحات دقیق، مثال ها و سناریوهای استفاده (detailed explanations, examples, and usage scenarios) باشد. documentation قابل خواندن توسط ماشین برای پردازش توسط نرم افزار برای خودکارسازی کارهایی مانند API integration  و  validation طراحی شده است. این در قالب های ساختاریافته مانند JSON یا XML نوشته شده است.

       API documentation  اغلب عمومی است، به خصوص اگر API برای استفاده توسعه دهندگان خارجی (external) در نظر گرفته شده است. اگر این اینطور باشد، همیشه با برسی مستندات شروع به recon کنید.

 

Discovering API documentation

       حتی اگر API documentation  به صورت openly و آزاد در دسترس نباشد، ممکن است هنوز بتوانید با مرور برنامه هایی که از API استفاده می کنند به آن دسترسی پیدا کنید.

برای این کار، می توانید از Burp Scanner برای crawl API استفاده کنید. همچنین می توانید به صورت دستی با استفاده از مرورگر Burp برنامه ها را مرور کنید. به دنبال endpoints باشید که ممکن است به مستندات API اشاره کنند، به عنوان مثال:

  • /api

  • /swagger/index.html

  • /openapi.json

       اگر شما یک endpoint برای یک resource شناسایی کنید، مطمئن شوید که base path را بررسی کرده‌اید. به عنوان مثال، اگر شما endpoint resource /api/swagger/v1/users/123  را شناسایی کنید، سپس باید مسیرهای زیر را بررسی کنید:

  • /api/swagger/v1

  • /api/swagger

  • /api

       همچنین می توانید از یک لیست از مسیرهای رایج برای پیدا کردن documentation با استفاده از Intruder  استفاده کنید.

 

Using machine-readable documentation

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

       می توانید از Burp Scanner برای crawl و audit ، OpenAPI documentation ، یا هر documentation دیگری در فرمت JSON یا YAML استفاده کنید. همچنین می توانید OpenAPI documentation را با استفاده از OpenAPI Parser Bapp تجزیه کنید.

       شما همچنین ممکن است بتوانید از یک ابزار تخصصی برای تست documented endpoints استفاده کنید، مانند Postman یا SoapUI.

امیر رضا کبریادار

امیر رضا کبریادار

تاریخ انتشار : ۴ مرداد ۱۴۰۳

تست

۰

امیر رضا کبریادار

امیر رضا کبریادار

مشاهده مقاله های بیشتر