flawopen.com/Simulators/HTTP Request Smuggling
Пошаговая визуальная песочница для моделирования очередей сокетов, фрагментированной передачи и отравления сессий других пользователей.
Представьте конвейер между кассиром и поваром. Вы передаете коробку с 1 бургером и вложенным бланком нового заказа. Кассир считает 1 блюдо, повар берет бургер, а бланк оставляет на столе. Когда следующий клиент заказывает салат, повар списывает оплату с его карты в счет вашего бланка!
// Vulnerable HTTP parser logic
int http_parser_execute(http_parser *parser, const char *data, size_t len) {
if (parser->flags & F_CONTENT_LENGTH && parser->flags & F_CHUNKED) {
parser->body_read_mode = READ_CHUNKED;
return PARSE_CONTINUE;
}
}
// Hardened RFC 9112 section 6.1 compliant parser
int http_parser_execute(http_parser *parser, const char *data, size_t len) {
if ((parser->flags & F_CONTENT_LENGTH) && (parser->flags & F_CHUNKED)) {
parser->status_code = 400;
parser->connection_close = 1;
return PARSE_ERROR_INVALID_HEADER;
}
}