Авторские курсы Михаила Тарасова

Скрытые endpoints в мобильном API

Скрытые endpoints в мобильном API

Что вижу: Все мобилки в проде любят играть в «прятки» — API у них не совпадает с вебом. На фронте кнопка — три запроса, а в бинарнике — ещё 10 эндпойнтов под капотом: /beta/, /internal/, /debug/healthcheck.

Как поймал: mitmproxy + jadx (или обход SSL pinning, привет frida) → слушаем трафик, смотрим смали-код.

Чем пахнет: Класс IDOR/инфолики/админки. Вероятность утечки меда из бэкэнда — 8/10.

Че по чём
Эксплойт:
— Находишь скрытый endpoint /api/v2/internal/user/info?user_id=1337 → подсовываешь чужой user_id, получаешь чужие данные.
— Или /api/v1/dev/debug/logs → запрос без токена, а в ответ тебе весь лог сервиса с токенами AWS.
— Payload уровня:

Обход защиты:
— Если включили SSL pinning → frida script bypass_sslpinning.js за пару строк.
— Если WAF тупо фильтрует → юзаем X-Original-Method: POST / X-HTTP-Method-Override: GET.
Доказательство:
Скрин: /config/dev/settings.json в проде отдаёт {"debug_token":"supersecret","db":"mysql://root:12345"}. Видишь root-пароль? Это не скрин старого резюме, это прод в лайве.

Советы:
3 вектора для добивания:
1. Фаззить через wordlist типа apiphone.txt (там /mobile/, /dev/, /qa/, /staging/).
2. Вытаскивать список эндпойнтов прямо из мобильного .apkjadx -d out app.apk | grep "https://"
3. Мониторить GraphQL introspection ({"query":"{__schema{types{name}}}"}) — часто оставляют неотрезанным.

План атаки:
1. Декомпилишь апку → вынимаешь URL’ы.
2. Прогоняешь nuclei по найденным паттернам (/debug, /beta, /internal).
3. Проверяешь авторизацию → если дырка IDOR, тапкаешь PII. Если endpoint про debug — ищешь creds/SSH-ключи/Cloud-токены.
4. Кидаешь PoC: curl https://api.target.com/admin/feature-toggle → меняешь флаг isPremium=1.

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

Мои курсы