Поиск контрабанды запросов
Выявление уязвимостей контрабанды HTTP-запросов с помощью тайминговых методов
Наиболее универсальный способ обнаружения уязвимостей контрабанды HTTP-запросов — отправлять запросы, которые вызовут задержку в ответах приложения, если уязвимость присутствует. Эту технику использует Burp Scanner для автоматизации обнаружения уязвимостей контрабанды запросов.
Выявление CL.TE
Если приложение уязвимо к варианту CL.TE контрабанды запросов, то отправка запроса вида ниже часто приводит к задержке:
POST / HTTP/1.1
Host: vulnerable-website.com
Transfer-Encoding: chunked
Content-Length: 4
1
A
XПоскольку фронтенд-сервер использует заголовок Content-Length, он перешлёт только часть этого запроса, опустив X. Бэкэнд-сервер использует заголовок Transfer-Encoding, обработает первый блок и затем будет ждать поступления следующего блока. Это вызовет наблюдаемую задержку.
Выявление TE.CL
Если приложение уязвимо к варианту TE.CL контрабанды запросов, то отправка запроса вида ниже часто приводит к задержке:
POST / HTTP/1.1
Host: vulnerable-website.com
Transfer-Encoding: chunked
Content-Length: 6
0
XПоскольку фронтенд-сервер использует заголовок Transfer-Encoding, он перешлёт только часть этого запроса, опустив X. Бэкэнд-сервер использует заголовок Content-Length, ожидает больше содержимого в теле сообщения и ждёт поступления оставшегося содержимого. Это вызовет наблюдаемую задержку.
Подтверждение уязвимостей контрабанды с помощью различий в ответах
Когда обнаружена вероятная уязвимость контрабанды запросов, вы можете получить дополнительные доказательства, эксплуатируя её для вызова различий в содержимом ответов приложения. Это включает отправку двух запросов к приложению в быстрой последовательности:
Атакующего запроса, предназначенного для вмешательства в обработку следующего запроса.
Обычного запроса.
Если ответ на обычный запрос содержит ожидаемое вмешательство, уязвимость подтверждается.
Например, предположим, что обычный запрос выглядит так:
Обычно этот запрос получает HTTP-ответ со статусом 200, содержащий некоторые результаты поиска.
Атакующий запрос, необходимый для вмешательства в этот запрос, зависит от варианта контрабанды запросов: CL.TE или TE.CL.
Подтверждение уязвимостей CL.TE
Чтобы подтвердить уязвимость CL.TE, вы отправите такой атакующий запрос:
Если атака успешна, то две последние строки этого запроса бэкэнд-сервер воспримет как принадлежащие следующему поступившему запросу. Это приведёт к тому, что последующий обычный запрос будет выглядеть так:
Поскольку теперь этот запрос содержит недопустимый URL, сервер ответит статусом 404, что укажет: атакующий запрос действительно повлиял на него.
Подтверждение уязвимостей TE.CL
Чтобы подтвердить уязвимость TE.CL, вы отправите такой атакующий запрос:
Если атака успешна, то всё начиная с GET /404 бэкэнд-сервер воспримет как принадлежащее следующему поступившему запросу. Это приведёт к тому, что последующий обычный запрос будет выглядеть так:
Поскольку теперь этот запрос содержит недопустимый URL, сервер ответит статусом 404, что подтвердить влияние атакующего запроса.
Last updated