🕷 Разведка API: как понять, что под капотом
С обычными веб-приложениями всё просто: открыл Wappalyzer или BuiltWith — и уже видишь фреймворки, CMS и часть стека.
С API сложнее. Там нет привычного фронта, а реальные детали часто прячутся за gateway, WAF, CDN или reverse proxy.
Но язык и фреймворк всё равно можно вычислить по косвенным признакам. И это полезно не из любопытства. От стека зависят потенциальные векторы атак:
▪️ Java / Spring → паттерны десериализации
▪️ PHP → небезопасная десериализация и магические методы
▪️ Node.js / Express → JSON-десериализация и особенности middleware
▪️ SOAP / XML → шанс на XXE
▪️ Шаблонизаторы → возможная SSTI
Зачем определять стек API:
☑️ Точнее строить разведку директорий
☑️ Понимать, какие расширения и эндпоинты искать
☑️ Предполагать шаблонизатор
☑️ Подбирать пэйлоады под конкретный язык
☑️ Фокусироваться на типичных ошибках фреймворка
Как это делать:
1️⃣ Смотреть ответы сервера
Проверяй:
▪️ HTTP-заголовки: Server, X-Powered-By, Set-Cookie
▪️ robots.txt
▪️ API-документацию
2️⃣ Провоцировать ошибки
Пустой JSON, неправильный тип поля или сломанный пэйлоад иногда раскрывают больше, чем баннер сервера.
В ошибках могут всплыть:
▪️ Названия классов, stack trace
▪️ Spring / Django / Express-специфичные сообщения
▪️ Формат валидации
3️⃣ Смотреть, как API обрабатывает данные
Полезно проверять:
▪️ Лимиты GET/POST
▪️ HTTP Parameter Pollution
▪️ Булевы значения: true, false, True, False, 1, 0
▪️ Типы данных: строка vs число vs boolean
➡️ Канал в МАХ
С обычными веб-приложениями всё просто: открыл Wappalyzer или BuiltWith — и уже видишь фреймворки, CMS и часть стека.
С API сложнее. Там нет привычного фронта, а реальные детали часто прячутся за gateway, WAF, CDN или reverse proxy.
Но язык и фреймворк всё равно можно вычислить по косвенным признакам. И это полезно не из любопытства. От стека зависят потенциальные векторы атак:
▪️ Java / Spring → паттерны десериализации
▪️ PHP → небезопасная десериализация и магические методы
▪️ Node.js / Express → JSON-десериализация и особенности middleware
▪️ SOAP / XML → шанс на XXE
▪️ Шаблонизаторы → возможная SSTI
Зачем определять стек API:
☑️ Точнее строить разведку директорий
☑️ Понимать, какие расширения и эндпоинты искать
☑️ Предполагать шаблонизатор
☑️ Подбирать пэйлоады под конкретный язык
☑️ Фокусироваться на типичных ошибках фреймворка
Как это делать:
1️⃣ Смотреть ответы сервера
Проверяй:
▪️ HTTP-заголовки: Server, X-Powered-By, Set-Cookie
▪️ robots.txt
▪️ API-документацию
2️⃣ Провоцировать ошибки
Пустой JSON, неправильный тип поля или сломанный пэйлоад иногда раскрывают больше, чем баннер сервера.
В ошибках могут всплыть:
▪️ Названия классов, stack trace
▪️ Spring / Django / Express-специфичные сообщения
▪️ Формат валидации
3️⃣ Смотреть, как API обрабатывает данные
Полезно проверять:
▪️ Лимиты GET/POST
▪️ HTTP Parameter Pollution
▪️ Булевы значения: true, false, True, False, 1, 0
▪️ Типы данных: строка vs число vs boolean
Разные языки и фреймворки могут по-разному интерпретировать одни и те же входные данные. Это помогает уточнить стек и иногда приводит к более интересным багам.
➡️ Канал в МАХ