Представь такую картину: автоматический сканер прошёлся по API, отчёт чистый, команда выдыхает. А потом пентестер вручную меняет один ID в запросе — и получает данные 60 миллионов чужих пользователей. Именно так в 2018 году взломали USPS Informed Visibility API.
Сканер находит отсутствующие заголовки безопасности и открытые debug-эндпоинты. Но он принципиально слеп к логическим дефектам. Он не поймёт, что
GET /api/v1/orders/1337 отдаёт чужой заказ, если просто подменить ID. Это и есть BOLA — Broken Object Level Authorization, первое место в OWASP API Top 10 уже второй цикл подряд.🎯 Почему BOLA так массово эксплуатируется
Механика элементарная: сервер доверяет идентификатору объекта из запроса и не проверяет, принадлежит ли объект текущему пользователю. Авторизуешься как пользователь A, находишь запрос
GET /api/v2/invoices/4521, меняешь ID на 4522 — и видишь чужой инвойс. Вот и весь «эксплойт». Никакой магии, никаких сложных цепочек.Нюанс, который упускают даже опытные тестировщики: BOLA живёт не только в GET-запросах. Проверяй каждый HTTP-метод отдельно —
PUT /api/users/1338 (изменение чужого профиля), DELETE /api/comments/9921 (удаление чужого контента). Каждый метод — отдельный вектор атаки.⚙️ Что реально меняет OWASP API Top 10 версии 2023
Список 2023 года — не косметическая правка. Три категории добавлены с нуля, две объединены, а фокус сместился с классических инъекций на уязвимости бизнес-логики. Показательный момент: Injection больше не выделена отдельным пунктом. Не потому что SQL-инъекции вымерли — просто в API-контексте авторизационные и логические баги статистически преобладают. Инъекции теперь живут внутри Security Misconfiguration.
Три новых пункта требуют исключительно ручного анализа:
• Unrestricted Access to Sensitive Business Flows (API6)
• Server Side Request Forgery (API7)
• Unsafe Consumption of APIs (API10)
Никакой сканер их не обнаружит — только человек, который понимает логику сервиса.
🛠 Инструменты, которые реально используются на пентестах
Для BOLA-тестирования must-have — расширение Autorize для Burp Suite. Оно автоматически повторяет запросы с токеном другого пользователя и сравнивает ответы. Без него ручное тестирование превращается в рутинный ад.
Для атак на JWT —
jwt_tool: команда python3 jwt_tool.py -X a запускает все известные атаки на алгоритм подписи, включая подмену alg: none. Подробнее:https://codeby.net/threads/prakticheskaya-bezopasnost-api-owasp-api-top-10-tipovyye-uyazvimosti-i-metodika-testirovaniya.92694/