• XSS.stack #1 – первый литературный журнал от юзеров форума

Статья Злоупотребление внутренними и сторонними API в веб-приложениях

Oxymoron

HDD-drive
Пользователь
Регистрация
07.01.2024
Сообщения
23
Реакции
11
Всем привет, 🫡


Хочу поднять тему, которая часто остается незамеченной, но становится всё более актуальной в веб-хакинге — злоупотребление внутренними и сторонними API. Современные приложения всё больше зависят от API, и эта поверхность атаки быстро растёт. Многие не осознают, насколько опасно, если эти API плохо защищены. :smile10:

В чём суть злоупотребления API?​

API — будь то внутренние или сторонние — повсюду. Они связывают сервисы, обрабатывают данные и выполняют важную бизнес-логику. Но зачастую эти API плохо учтены и защищены. Особенно сторонние API могут быть «призрачными» — работать вне обычных циклов разработки и без должных мер безопасности.


Атакующие могут использовать слабую аутентификацию, неправильные проверки авторизации или ошибки в бизнес-логике, чтобы:

  • Получить доступ к конфиденциальным данным, которые им не положены
  • Манипулировать или удалять информацию
  • Повысить свои привилегии
  • Автоматизировать атаки или массово сливать данные
  • Вызывать отказ в обслуживании, злоупотребляя лимитами запросов

Как обычно злоупотребляют API?​

Основываясь на реальных кейсах и исследованиях, процесс примерно такой:

  1. Разведка: собирают информацию об эндпоинтах API через документацию, анализ трафика или fuzzing.
  2. Обход аутентификации: пытаются обойти проверки аутентификации или авторизации, используя слабые токены или ошибки в логике.
  3. Перечисление эндпоинтов: составляют карту всех доступных эндпоинтов и параметров.
  4. Манипуляция параметрами: изменяют входные данные, чтобы внедрить вредоносные payload’ы или получить несанкционированный доступ (IDOR, SQLi, JSON-инъекции).
  5. Brute force: перебирают слабые учётные данные или токены для доступа.
  6. Отказ в обслуживании: перегружают API запросами, чтобы вывести сервис из строя.
  7. Экспфильтрация данных: тайно выносят ценные данные.
  8. Сокрытие следов: удаляют логи или маскируют активность под нормальный трафик.

Примеры уязвимостей и payload’ов​

1. IDOR (Insecure Direct Object Reference)​

Предположим, есть API-запрос для получения данных пользователя:

Код:
GET /api/user/profile?id=12345

Если сервер не проверяет, что текущий пользователь имеет право смотреть профиль с id=12345, злоумышленник может подставить id другого пользователя:

Код:
GET /api/user/profile?id=67890

И получить чужие данные.

2. Пример JSON-инъекции​

Некорректная обработка JSON-параметров может позволить внедрить вредоносные данные:


JSON:
POST /api/update
{
"user": {
"id": "12345",
"role": "admin"  // если сервер не проверяет роль, можно повысить привилегии
 }
}

Если API не валидирует роль, можно изменить её на "admin" и получить права администратора.

3. Пример обхода аутентификации через уязвимость в токенах​

Иногда токены слабо защищены или предсказуемы. Злоумышленник может перебрать токены или использовать украденный токен:

Код:
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...

Если нет проверки срока действия или контроля сессии, можно получить доступ к чужому аккаунту.

Как защититься?​

  • Вести полный учёт всех API, включая сторонние.
  • Внедрять строгую валидацию и проверки авторизации на каждом эндпоинте.
  • Использовать надёжную аутентификацию (OAuth, mTLS) и регулярно менять ключи.
  • Настроить ограничение частоты запросов (rate limiting) для предотвращения злоупотреблений и DoS.
  • Мониторить трафик API на аномалии и подозрительную активность.
  • Регулярно тестировать API на распространённые уязвимости — IDOR, инъекции, ошибки аутентификации.
  • Минимизировать раскрытие данных — выдавать только необходимое.

Спасибо, что прочитали, если у вас есть вопросы, не стесняйтесь говорить со мной в привате или через TOX. 👍
 
Очень похоже на ChatGPT.
Пунктуация для человека не очень хорошо владеющим языком это подтверждает.
 
Очень похоже на ChatGPT.
Пунктуация для человека не очень хорошо владеющим языком это подтверждает.
Привет, я уже сказал в своем предыдущем сообщении, что я не говорю по-русски, и что мне приходится все переводить через переводчик, и это тоже не от ChatGPT. :(🫶
Я просто загружаю несколько постов для двух вещей

Чтобы внести свой вклад
И чтобы рассказать о том, чему я научился в то время.
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх