Как доступ к базе данных может обеспечить доступ к базовой ОС? - PullRequest
0 голосов
/ 07 мая 2020

, как говорится в заголовке, я не понимаю связи между разрешением на доступ к базе данных и разрешением на запись / чтение файлов в базовой ОС.

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

Sqlmap заявляет в своих функциях, что он может выполнить sh это: Поддержка загрузки и выгрузки любого файла из базовой файловой системы сервера базы данных, когда программное обеспечение базы данных MySQL, PostgreSQL или Microsoft SQL Server.

Теперь мои конкретные c вопросы:

  • Какая основная функция / проблема разрешает доступ этой ОС?
  • Почему подключено разрешение?
  • Другие СУБД также уязвимы для этого, и является ли это общей проблемой (то есть sqlmap просто еще не предоставляет эксплойт для других СУБД)?

На мой взгляд, разрешения должны обрабатываться иначе, и у пользователя db не должно быть разрешений в ОС, за исключением файлов, связанных с СУБД.

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

1 Ответ

1 голос
/ 07 мая 2020

Я не уверен насчет других, но приведенное ниже верно для MySQL и MariaDB.

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

Кроме того, выполнение команд невозможно без подключаемого модуля UDF, который позволит вам выполнять произвольные команды. Такие вещи существуют, но не являются частью MySQL / MariaDB - это то, что системный администратор / администратор базы данных на сервере БД должен будет установить самостоятельно. Без этого вы не смогли бы получить список файлов.

Тогда есть защиты на уровне ОС:

1) Привилегии уровня POSIX Это обычные права пользователя / группы файловых систем .

2) Вторичное усиление, например SE Linux или AppArmor. Это предотвратит доступ запущенного процесса к путям, портам и другим ресурсам, которые не соответствуют контексту или пути, определенным в политике безопасности.

Короче говоря, вы не можете получить доступ / получить произвольные файлы через уровень базы данных, если только сервер не настроен (неправильно) намеренно (неправильно) так, чтобы это позволяло вам сделать это, и потребуются активные усилия для настройки MySQL или сервер MariaDB таким образом, чтобы он оставался открытым для этого.

...