Обычно данные в формате JSON возвращаются с заголовком
Content-Type: application/json, что указывает браузеру на структурированные данные. Браузеры в таком случае не пытаются интерпретировать JSON как HTML или JavaScript.🚨 Проблема возникает, когда:
✅Сервер ошибочно устанавливает
Content-Type: text/html (или другой неправильный тип)✅В JSON-ответе содержится пользовательский ввод
✅Браузер обрабатывает ответ как HTML-страницу
⁉️ Как автоматизировать подобные кейсы?
Используй Burp Bambda для поиска JSON-ответов с некорректным
Content-Type:id: 6620a595-520b-1ba2-2b20-5ea8568fdb89
name: Filter JSON responses with incorrect content type
function: VIEW_FILTER
location: PROXY_HTTP_HISTORY
source: |+
return !requestResponse.request().method().equals("OPTIONS");
var contentType = requestResponse.hasResponse() ? requestResponse.response().headerValue("Content-Type") : null;
if (contentType != null && !contentType.contains("application/json")) {
String body = requestResponse.response().bodyToString().trim();
return body.startsWith( "{" ) || body.startsWith( "[" );
}
return false;
P. S. Если ты не работал с Bambdas, то самое время наверстать упущенное. Эта фича представлена два года назад и позволяет кастомизировать Burp Suite прямо из пользовательского интерфейса с помощью небольших сниппетов Java-кода.
