Учебники

Небезопасные прямые ссылки на объекты

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

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

небезопасный прямой объект реф

пример

Приложение использует непроверенные данные в вызове SQL, который обращается к информации об учетной записи.

String sqlquery = "SELECT * FROM useraccounts WHERE account = ?";
PreparedStatement st = connection.prepareStatement(sqlquery, ??);
st.setString( 1, request.getParameter("acct"));
ResultSet results = st.executeQuery( );

Злоумышленник изменяет параметр запроса в своем браузере, указывая на Admin.

http://webapp.com/app/accountInfo?acct=admin

Руки вверх

Шаг 1 — Войдите в Webgoat и перейдите к разделу «Недостатки контроля доступа». Цель состоит в том, чтобы получить файл tomcat-users.xml, перейдя по пути, в котором он находится. Ниже приведен снимок сценария.

1. небезопасный прямой объект ref1

Шаг 2. Путь к файлу отображается в поле «текущий каталог» — C: \ Users \ имя пользователя $ \. Extract \ webapps \ WebGoat \ lesson_plans \ en, и мы также знаем, что файл tomcat-users.xml хранится в C: \ xampp \ tomcat \ conf

Шаг 3 — Нам нужно пройти весь путь из текущего каталога и перейти от C: \ Drive. Мы можем сделать то же самое, перехватывая трафик с помощью Burp Suite.

2 небезопасный прямой объект реф

Шаг 4 — Если попытка успешна, отображается файл tomcat-users.xml с сообщением «Поздравляем. Вы успешно завершили этот урок».

2 небезопасный прямой объект реф

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

Разработчики могут использовать следующие ресурсы / точки в качестве руководства, чтобы предотвратить небезопасную прямую ссылку на объект во время самой фазы разработки.

Разработчики должны использовать только одного пользователя или сеанс для косвенных ссылок на объекты.

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