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
