Статья Исследование уязвимости веб-приложения: отказ в обслуживании

Конкурс: Встречаем 2020 статьями по инфобезу.

Вступление
В данной статье хотел бы рассказать о том, как я искал уязвимости в web приложении. Речь пойдёт о довольно не популярной уязвимости - Denial of Service. Эксплуатируя уязвимости данного типа можно "парализовать" сервер, не позволяя ему обрабатывать запросы клиентов.
Всё началось с того, что около месяца назад я получил приглашение приватной компании на одной из Bug Bounty платформ. Меня это заинтересовало, так как программа была довольно свежая, в скоупе был всего один домен, но с другой стороны, это позволяет посмотреть весь функционал за несколько дней и двигаться дальше.

Web приложение
После нескольких часов поиска интересного функционала, я понял, что будет не так просто найти хоть что-то в этом приложении - для авторизации оно использовало Wordpress, а в качестве прокси - Cloudflare. Бесплатного функционала было немного, а само приложение использовалось для управления сайтами на Wordpress.
Первым делом я решил проверить настройки аккаунта, здесь было больше всего шанса что-то найти, но, как я потом понял, я ошибался. Для изменения настроек использовалось API, но проблема была в том, что для каждого аккаунта эндпоинты были разными:
endpoints.png


Это сразу исключило большинство типов уязвимостей, таких как IDOR. Единственное, что я нашёл на тот момент - неправильную конфигурацию CORS, но применение этому я найти не смог.

Уязвимость
Во время теста меня заинтересовал функционал добавления API токенов, при создании тебе отправлялось значение, похожее на хеш. С помощью специально подготовленного python скрипта я пытался вызвать Race Condition в надежде увидеть что-то необычное, но ничего изменить не удалось и токены отправлялись корректно. Поставив скрипт в цикл я пошёл проверять другой функционал.
Спустя весь день я не нашёл ничего интересного, и собирался заканчивать. Последний раз взглянув на вкладки Burp Suite, я решил сделать запрос к API, который возвращает все существующие токены. К моему удивлению после минуты ожидания я увидел ошибку 504 Gateway Timeout. Это произошло из-за того, что поставленный мною скрипт создал слишком много токенов, а сервер не имел никаких инструкций на этот счёт и пытался обработать запрос. Я сразу понял, что это может привести к DoS. Немного изменив прошлый скрипт, я сделал 100 одновременных запросов к этому API эндпоинту со своего приватного сервера. Во время этого с ноутбука я делал запросы к сайту, после 10 секунд задержки я решил отменить всё запросы, так как наносить вред мне не хотелось. В итоге сервер не был способен обрабатывать запросы в течение 13 секунд.
timeout.png


Крайне не рекомендуется делать PoC для DoS при этичном хакинге, только при необходимости и с согласия компании.

Другие возможности вызвать Denial of Service
После этого я решил задержаться ещё на пару дней с этой программой. И нашёл ещё две потенциальные уязвимости подобного рода:
1. Запрос с очень большим заголовком вызывал 504 Gateway Timeout с минутой ожидания:
header.png
2. Повторный запрос к одноразовому коду аутентификации вызывал эту же ошибку:
code.png
Приведу ещё немного сторонних примеров, чтобы побольше осветить эту тему:
1. Сайт позволяет изменять размер изображения, example.com/image?x=100&y=100 - в таком cлучае мы можем попробовать изменить x и y до больших значений, что вызовет DoS - .
2. Есть возможность изменять цвет используя hex, в таком случае можно попробовать вызвать reDoS, то есть DoS с regex, указав неправильный цвет по типу #000...(много нулей)00abcdfe - .

Заключение
На самом деле вызвать такую уязвимостей не так и сложно, нужно только заставить сервер делать что-то тратя очень много вычислительных ресурсов.
На этом всё. Эта статья не задумывалась как полное руководство по Server Side DoS, но надеюсь, что она помогла вам разобраться в этом типе уязвимостей.
 
Последнее редактирование:
Эээм сомнительная бага, по очень длинным параметрам в пост\гет не удивить, такое часто найти можно, еще вложенные массивы типа access_token[][][][][]=123, то что на генерацию токена большой таймаут, странновато, ну ок как вариант можно сканить и такую багу. Вот по генерации картинки часто угараю по параметрам типа -999999 и 9999999 но кривых генераторов еще не находил, тема интересна. Есть еще схожее с генератором банера с выводом текста\цвет. +можно дудосить скрипты которые js склеивают и выводят
 
  • Нравится
Реакции: Debug
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab

Похожие темы