
Мой друг указал на уязвимость SQL-инъекции в приложении, с которым я работаю.
Этот параметр поиска:
'; exec xp_cmdshell 'dir'; --
Вернул сообщение:
The EXECUTE permission was denied on the object
'xp_cmdshell', database 'mssqlsystemresource', schema 'sys'.
Потому что поиск выполняется из учетной записи, которая имеет разрешения только на несколько таблиц и хранимых процедур.
Мне интересно, если бы злоумышленник узнал данные для входа в учетную запись администратора сервера SQL, смог бы он использовать эти данные, чтобы получить доступ root к машине через оболочку cmd или совершить какую-нибудь другую грязную работу?
решение1
Возможно, SQL-инъекция может изменить пользователя с более высокими привилегиями на SQL-сервере с помощью exec as {credentials}
. Однако исходный пользователь, выполняющий запрос, должен иметь IMPERSONATE
разрешения для пользователя, на которого он пытается переключиться. Это не конфигурация по умолчанию, вам придется добавить ее (было бы довольно странно добавлять и это).
решение2
На самом деле неважно, возможно это или нет, у вас есть законная проблема, которую вы должны попытаться решить. Эта команда даже не должна была быть отправлена обратно на сервер.