Продолжаем разбирать
Race Condition.⚡️😎 Race Condition на одном эндпоинте
Параллельная отправка нескольких запросов с разными параметрами на один и тот же эндпоинт может вызвать состояние гонки. Такие атаки могут требовать нескольких попыток, так как операции должны выполниться в определённом порядке.
Подтверждение адреса электронной почты или любые действия, основанные на отправке писем - отличная цель для
Race Condition.🤩 Электронные письма часто отправляются в отдельном фоновом потоке после того, как сервер уже вернул
HTTP-ответ. Это создаёт внутрисерверное окно гонки - идеальный момент, когда две параллельные операции могут конфликтовать друг с другом.☝️Race Condition на нескольких эндпоинтах
Интересный тип уязвимости появляется, когда логика обработки разнесена по нескольким эндпоинтам.
При тестировании таких гонок становится сложнее выровнять окна выполнения, даже если запросы отправляются одновременно.
Проблема часто возникает по двум причинам:
☀️ задержки, вызванные сетевой архитектурой;
☀️ задержки, связанные с обработкой, специфичной для каждого эндпоинта.
Задержки внутреннего соединения чаще всего не мешают поиску гонок. Важно только уметь отличать такие задержки от факторов, которые действительно влияют на окно уязвимости.
Одним из подходов может быть connection warming: если после отправки пробного запроса (например,
GET /) последующие запросы обрабатываются в пределах короткого временного окна, то такие задержки можно считать шумом и игнорировать. В противном случае задержка действительно становится помехой и способна скрыть существующую гонку.👀 Дополнительно:
☀️ Гонки на нескольких эндпоинтах сложнее, так как окно уязвимости распределено между независимыми обработчиками.
☀️ Иногда помогает не только одновременная отправка, но и выравнивание нагрузки - например, многократными запросами до нужного момента.
☀️ Параллельное тестирование можно усиливать подходами вроде задержки сетевых пакетов, искусственного флуда, использования тестовых прокси.
Примеры каждого из типов уязвимости можете найти в лабах ниже🫢:
• Single-endpoint race conditions
• Multi-endpoint race conditions
↖️ 📕тг • 🤬чатик • ✏️посты
#web #writeup