Привет^3☕️API можно не только писать, но еще и эксплуатировать в своих целях. Об этом и поговорим)
Чаво😼Application Programming Interface - это интерфейс общения между клиентом и сервером. Современные приложения почти полностью завязаны на
API:
• фронтенд подгружает данные через
API;
• мобильные приложения общаются с сервером тоже через
API;
• микросервисы внутри крупных систем связываются через...
API;
• интеграции (платежи, карты, рассылки) строятся на внешних что? Правильно -
API;
Именно поэтому безопасность
API важна безопасность всего приложения.
С чего начинается атака?Чтобы
API тестировать - нужно найти хоть какие-то ендпонты)
➖какие есть эндпоинты;
➖ какие параметры они принимают;
➖какие методы поддерживают (
GET,
POST,
PATCH,
OPTIONS и т.д.);
➖есть ли ограничения по частоте запросов и как работает авторизация.
В этом может помочь документация, которая бывает в открытом доступе. Даже если ее нет - эндпоинты можно найти с помощью фаззинга, например через
ffuf, или же поискать в
JavaScript файлах.
🧙
Пример атакиМногие фреймворки автоматически связывают параметры из запроса с полями в базе. Если разработчик не ограничил список полей, можно «подбросить» лишние:
PATCH /api/users/123
{
"username": "wiener",
"email": "wiener@example.com",
"isAdmin": true
}
Если сервер примет
isAdmin и сохранит - вжух, и админка у нас в кармане.
😼
Как защищаться• Делать
allowlist допустимых параметров и методов;
• Проверять типы входящих данных;
• Прятать документацию, если
API не публичное;
• Унифицировать обработку ошибок, чтобы не сливать лишнюю информацию;
• Не забывать про старые версии
API.
Вперед к приключениям тестированию💃Попробовать поискать и проэксплуатировать ендпоинты
API, а не писать их можно в следующих лабах:
•
Exploiting a mass assignment vulnerability•
Exploiting an API endpoint using documentation•
Exploiting server-side parameter pollution in a query string•
Finding and exploiting an unused API endpoint↖️ 📕
тг • 🤬
чатик • ✏️
посты#web #writeup