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

Authz-bypass через кастомные headers

Authz-bypass через кастомные headers

Тема с кастомными заголовками — это как скрытый уровень в DOOM: вроде дверь закрыта, но подпрыгнул правильно — и ты внутри. Разрабы любят проверять «правильную роль» не по токену, а по своему мутному X-Header. А мы любим это ломать.

Когда security‑тимы по три месяца мутят OAuth, а в конце концов прикручивают костыль:

Тут уже звучит смех из подвала.
Точка входа
Что вижу: в респонсах API торчат намёки: x-internal-flag: true, иногда фронт даже палится с X-Client-Type: mobile.
Как поймал: Burp + Intruder по хедерам. Пихаем туда X-Original-Role: admin, X-Forwarded-For: 127.0.0.1.
Чем пахнет: классика AuthZ-bypass (уровень критовости 9/10, тянет на P1).
Че почем
Эксплойт:

Ответ: полный профиль чужого юзера. Спасибо, дорогой бэкенд, за доверие к кастомному хедеру.
Обход защиты:
• Если X-Forwarded-For игнорят — попробуй X-Originating-IP: 127.0.0.1.
• Некоторые апишки читают только X-App-Version — поменяешь на «enterprise» и откроется /admin.
• Ну и любимый X-Original-URL → работающий SSRF или доступ к закрытому resource.
Доказательство: После подмены X-User-Role вижу isAdmin:true и могу дергать /admin/stats. Это не пасхалка, это автопати для ресерчера.

Советы: 
Три вектора добивания:
• Проверь все заголовки из OWASP-списка «non-standard headers» (X-Api-Version, X-Client-Type, X-Requested-With).
• Сними apk клиента: там часто в коде жёстко прописан кастомный X-Auth-Token: something_magic.
• Зафаззи словарь кастомных хедеров через ffuf:

План атаки:
1. Ловим весь трафик мобилки/веба через Burp.
2. Втыкаем Intruder на заголовки — метод перебора «X-Role», «X-Admin» и пр.
3. Валидируем ответ: ищем 403 → 200.
4. Эксплуатим баг — багбаунти чек автоматом.

Вангую баги вендоров
X-Forwarded-For → обход ACL. Ставишь 127.0.0.1 и сервис думает, что ты свой.
X-Role: superuser → открывает приватный API.
X-Debug: true → включает доп эндпоинты прямо в бою.

Брат, такие костыльные проверки по кастомным хедерам — это реально 2025-й «new SQLi»: идиоты уже должны были перестать, а мы до сих пор жрём пельмени на их bounty.

Мои курсы