Отсутствие контроля доступа на уровне функций

Большинство веб-приложений проверяют права доступа на уровне функций перед тем, как сделать эту функцию доступной для пользователя. Однако, если на сервере не выполняются те же проверки контроля доступа, хакеры могут проникнуть в приложение без надлежащей авторизации.

Давайте разберемся с агентами угроз, векторами атак, слабостями безопасности, техническим воздействием и последствиями для бизнеса этой уязвимости с помощью простой диаграммы.

пример

Вот классический пример контроля доступа на уровне отсутствующей функции -

Хакер просто заставляет целевые URL-адреса. Обычно для доступа администратора требуется проверка подлинности, однако, если доступ к приложению не подтвержден, пользователь, не прошедший проверку подлинности, может получить доступ к странице администратора.

' Below URL might be accessible to an authenticated user
http://website.com/app/standarduserpage

' A NON Admin user is able to access admin page without authorization.
http://website.com/app/admin_page

Руки вверх

Step 1 - Давайте войдем в систему как менеджер учетной записи, сначала просмотрев список пользователей и их права доступа.

Step 2 - Попробовав различные комбинации, мы можем узнать, что у Ларри есть доступ к менеджеру аккаунта ресурсов.

Профилактические механизмы

  • Механизм аутентификации по умолчанию должен запрещать любой доступ и предоставлять доступ к определенным ролям для каждой функции.

  • В приложении на основе рабочего процесса проверьте состояние пользователей, прежде чем разрешить им доступ к каким-либо ресурсам.