Как раскрыть тайные места приложения?
Два года назад я описывал методы сбора API и получился такой список:
- Публичные Swagger;
- Динамическая сборка;
- В JavaScript файлах;
- С помощью дорков;
- Перебор эндпоинтов;
- APK файл;
- Internet Archive.
Недавно обнаружил для себя еще 1 очень простой и эффективный способ.
Суть заключается в подмене значения параметров.
И на проектах и на багбаунти такой способ давал достаточно хороший импакт.
Чтобы лучше разобраться, приведу примеры:
Если обращали внимание, то часто в ответе на запрос авторизации или запрос данных пользователя можно увидеть такие параметры в теле ответа:
Пример запроса:
Ответ:
Еще несколько примеров:
Логика здесь понятна: при авторизации или запросе к другому методу бэкенд дает нам соответствующее значение прав доступа. Но никто не мешает нам подменить это значение, например, на роль "админа" и на фронте мы увидим интерфейс админа или любой другой роли.
Но это просто фронт, скажете вы. Да, это просто фронт, но это наш промежуточный шаг. Затем мы легко и быстро можем проверить, доступны ли нам эти методы. И по моей статистике, в большинстве случаев окажется, что нам доступны эти методы.
В итоге к какому импакту это приводит?
1. Повышение привилегий внутри одного акканта, если там есть ролевая модель или же платная и бесплатная версия
2. IDORы, мы получаем новые методы и там могут быть IDORы
3. Обход какого-то функционала, за последнее время так получалось обойти KYC на бирже и подключать платные подписки
Некоторый процент из этих API методов можно найти и в JS файлах, но не все и не всегда. Зачастую в приложениях все методы не описываются в 1 JS файлы и пока нам недоступен этот функционал, то не найдем их. Ну и этот способ максимально простой тебе на фронте остается нажать просто на кнопку и запрос сам сформируется, не нужно собирать вручную из JS.
Как подменять?
Самый простой и эффективный способ - использовать Burp:
#bypass #logic #tampering
Два года назад я описывал методы сбора API и получился такой список:
- Публичные Swagger;
- Динамическая сборка;
- В JavaScript файлах;
- С помощью дорков;
- Перебор эндпоинтов;
- APK файл;
- Internet Archive.
Недавно обнаружил для себя еще 1 очень простой и эффективный способ.
Суть заключается в подмене значения параметров.
И на проектах и на багбаунти такой способ давал достаточно хороший импакт.
Чтобы лучше разобраться, приведу примеры:
Если обращали внимание, то часто в ответе на запрос авторизации или запрос данных пользователя можно увидеть такие параметры в теле ответа:
Пример запроса:
GET /api/v3/profiles/me HTTP/2
Host: api.redacted.me
Cookie: cookies
Ответ:
.....
"permissions":["access1.any1","access2.any2"...],
.....
Еще несколько примеров:
"role":"customer"
"isAdmin":false
"subscription":"Basic"
Логика здесь понятна: при авторизации или запросе к другому методу бэкенд дает нам соответствующее значение прав доступа. Но никто не мешает нам подменить это значение, например, на роль "админа" и на фронте мы увидим интерфейс админа или любой другой роли.
Но это просто фронт, скажете вы. Да, это просто фронт, но это наш промежуточный шаг. Затем мы легко и быстро можем проверить, доступны ли нам эти методы. И по моей статистике, в большинстве случаев окажется, что нам доступны эти методы.
В итоге к какому импакту это приводит?
1. Повышение привилегий внутри одного акканта, если там есть ролевая модель или же платная и бесплатная версия
2. IDORы, мы получаем новые методы и там могут быть IDORы
3. Обход какого-то функционала, за последнее время так получалось обойти KYC на бирже и подключать платные подписки
Некоторый процент из этих API методов можно найти и в JS файлах, но не все и не всегда. Зачастую в приложениях все методы не описываются в 1 JS файлы и пока нам недоступен этот функционал, то не найдем их. Ну и этот способ максимально простой тебе на фронте остается нажать просто на кнопку и запрос сам сформируется, не нужно собирать вручную из JS.
Как подменять?
Самый простой и эффективный способ - использовать Burp:
Tools -> Proxy -> Match and Replace rules -> add -> Response body
и заменяем значение, например, false
на true
или basic
на premium
. Если permissions уникальные, такое тоже часто встречается, то часто встречаются и методы, которые выплевывают списки всех существующих permissions.#bypass #logic #tampering