Пожалуйста, обратите внимание, что пользователь заблокирован
Иногда при разработке highload-продуктов возникает ситуации, когда надо обработать не максимально большое количество запросов, а наоборот — ограничить количество запросов в единицу времени.
Как правило, это используется, например, при проектировании API, так как таким образом разработчики могут защитить систему от случайного или злонамеренного избытка запросов, в результате которого происходит задержка или отказ в обслуживании других клиентов.
Интернет обыватель наверняка уже сталкивался с подобными ограничениями, отправляя заполненные формы на сайте, в процессе:
- регистрации и авторизации
- 2FA и сбросе пароля
- отправке сообщений
- написании комментариев
К примеру, отправив подряд несколько личных сообщений ВКонтакте, вы ударитесь головой о капчу, которую сервис любезно попросит вас ввести, чтобы убедиться, не являетесь ли вы роботом. Это сделано для того, чтобы:
Во-первых: избежать излишнюю нагрузку на сервера (представьте, если несколько тысяч пользователей решат в один момент отправить десятки сообщений).
Во-вторых: избежать атак типа Race Condition, когда злоумышленник намеренно будет использовать отсутствие ограничений в свою пользу (хотя эта уязвимость может быть рассмотрена в отрыве от текущей).
В примере с сообщениями, не будь капчи, кто - то автоматизировал бы этот процесс и реализовал рассылку спама. Теперь давайте перейдем к тому, как обойти возможные блокировки со стороны сервера:
- Замена оригинального параметра, указанного в запросе, на схожий.
Как можно заметить на скриншотах выше, была произведена замена "signup" на "sign-up", но можно также экспериментировать и с регистром.
2. Использование специальных заголовков, таких как:
X-Originating-IP: 127.0.0.1
X-Forwarded-For: 127.0.0.1
X-Remote-IP: 127.0.0.1
X-Remote-Addr: 127.0.0.1
Взгляните на это:
3. Использование нулевых байтов и CRLF:
%00, %0d%0a, %09, %0C, %20, %0
4. Изменение на каждом запросе юзер-агента, куки и IP-адреса.
Статья доступна в оригинале на английском языке - читать.
Взято с - Cybred - канал об информационной безопасности и конкурентной разведке, вдохновленный идеями олдскульных андеграундных интернет-сообществ о свободе распространения информации в сети и всеобщей взаимопомощи.