احتمالا این روزها ، خبرهایی مبنی بر هک سازمانها و شرکتها از طریق APIها و همچنین رایتآپ هایی در زمینه کشف آسیب پذیری در APIها رو مشاهده کردید. همچنین اگه توسعه دهنده باشید از اهمیت و گسترش استفاده از APIها در صنعت وب اپلیکیشن ها آگاه هستید. در این پست به معرفی یه ابزار برای تیم های آبی ، قرمز و توسعه دهندگان پرداختیم تا بتونن با آسیب پذیری های API آشنا بشن.
در کل APIها بعنوان یه واسط عمل میکنن و دارای معماری های مختلفی هستن. یکی از معماری هایی که بسیار کاربردی هستش ، نوع Rest API هستش.
برای درک این معماری ، مثال اپلیکیشن هواشناسی رو در نظر بگیرید. شما درخواستی برای وضعیت آب و هوایی یه شهر ارسال میکنید و برنامه درخواست شما رو در قالب ساختاریافته مثله json یا xml برمیگردونه.
برنامه هایی که از Rest APIها استفاده میکنن ، مانند وب اپلیکیشن ها ،دارای یسری آسیب پذیری هستن. با توجه به اینکه APIها در موارد حساس هم مورد استفاده قرار میگیره ، گاها میتونه توسط هکرها مورد سوء استفاده قرار بگیره و خسارات مادی و معنوی جبران ناپذیری رو ایجاد کنه. برای مثال هکرها تونسته بودن با آسیب پذیری که در توییتر وجود داشت ، اطلاعات میلیونها کاربر رو بیرون بکشن و در انجمن های فروش داده برای فروش قرار بدن.
برای اینکه بتونید در زمینه کشف آسیب پذیری و اکسپلویت اون و راههای اصلاح آسیب پذیری ها در APIها مهارت کسب کنید ، علاوه بر اینکه نیاز به یه منبع یادگیری خوب دارید ، نیاز به یه محیط تست هم دارید.
برای این منظور erev0s یه برنامه آسیب پذیر بنام VAmPI ایجاد کرده، که در ادامه یه نگاه کوتاه بهش میندازیم.
کلا توسعه برنامه اینجوری بوده که ، ایشون میخواسته یسری ابزار کشف آسیب پذیری در APIها رو بررسی کنه و ببنیه کدومش عملکرد خوبی داره. برای همین دنبال یه برنامه آسیب پذیر بود که بتونه OWASP TOP 10 رو روش بررسی کنه. تو گوگل سرچ میزنه میبینه که چیز به درد بخوری نیست. در نتیجه دست به کار میشه و این اپلیکیشن رو توسعه میده.
اپلیکیشن در پایتون و با استفاده از Flask و Connexion توسعه داده شده. ویژگی های زیر رو داره:
- براساس آسیب پذیری های OWASP TOP 10 برای APIها توسعه داده شده.
- شامل ویژگی های OpenAPI3 و Postman هستش.
- سوئیچی برای روشن یا خاموش کردن آسیب پذیری داره.
- احراز هویت مبتنی بر توکن رو پشتیبانی میکنه. (قابل تنظیم در فایل app.py )
با این ویژگی ها ، این ابزار هم برای هانترها و تیم های قرمز کاربردی هستش و هم میتونه برای تیم های آبی قابل استفاده باشه تا حملات رو تشخیص بدن. همچنین توسعه دهندگان هم میتونن یاد بگیرن که چطوری میشه کدهای امنی رو نوشت.
آسیب پذیری هایی که ساپورت میکنه موارد زیر هستن :
- SQLi Injection
- Unauthorized Password Change
- Broken Object Level Authorization
- Mass Assignment
- Excessive Data Exposure through debug endpoint
- User and Password Enumeration
- RegexDOS (Denial of Service)
- Lack of Resources & Rate Limiting
برای نصب ابزار دو روش معرفی کرده ، یکی از طریق دانلود کل پروژه و استفاده از دستور pip3 و یه روش دیگه هم که استفاده از داکر هستش. (من با PIP3 نصب کردم )
برای نصب و پیکربندی از صفحه گیت هابش دیدن کنید.
ظاهر برنامه بعد از بالا اومدن اینجوریه :
با CURL یا هر ابزار دیگه ای میتونید درخواست بفرستید (تو ویندوز اگه curl خطا داد ، میتونید از پاورشل استفاده کنید) . مثلا در شکل زیر من یه یوزر بنام خودم ایجاد کردم.
در کل لیست کارهایی که میتونید انجام بدید ، طبق جدول زیر هستش :
Action | Path | Details |
---|---|---|
GET | /createdb | Creates and populates the database with dummy data |
GET | / | VAmPI home |
GET | /users/v1 | Displays all users with basic information |
GET | /users/v1/_debug | Displays all details for all users |
POST | /users/v1/register | Register new user |
POST | /users/v1/login | Login to VAmPI |
GET | /users/v1/{username} | Displays user by username |
DELETE | /users/v1/{username} | Deletes user by username (Only Admins) |
PUT | /users/v1/{username}/email | Update a single users email |
PUT | /users/v1/{username}/password | Update users password |
GET | /books/v1 | Retrieves all books |
POST | /books/v1 | Add new book |
GET | /books/v1/{book} | Retrieves book by title along with secret |
برای مثال ، برای ایجاد کاربر جدید میتونید از این دستور استفاده کنید :
1 |
curl http://127.0.0.1:5000/users/v1/register -d '{"email":"onhexgroup@onhexgroup.ir","username":"onhexgroup","password":"onhexgroup"}' -H 'Content-Type: application/json' |
یا برای برای لاگین شدن میتونید از این دستور استفاده کنید :
1 |
curl http://127.0.0.1:5000/users/v1/login -d '{"username":"onhexgroup","password":"onhexgroup"}' -H 'Content-Type: application/json' |
تصاویر زیر هم چند تا باگ رو نشون میده :
برای کسب اطلاعات بیشتر در خصوص آسیب پذیری ها هم میتونید از این لینک دیدن کنید.