Внедрение SQL и макросы Access (не VBA) - PullRequest
0 голосов
/ 11 октября 2018

Могут ли макросы Microsoft Access (не VBA) быть уязвимыми для внедрения SQL?

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

Оператор SQL можно использовать в действии RunSQL .Кроме того, действие SetProperty можно использовать для изменения свойства RecordSource или RowSource .

Если да, как это можно сделать?

1 Ответ

0 голосов
/ 11 октября 2018

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

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

Макрос:

If DCount("*","tblUsers","UserName = '" & Forms![LoginForm]!Username & "' AND [Password] = '" & Forms![LoginForm]!Password & "'") <> 0
    CloseWindow
        Object type = Form
        Object Name = LoginForm
        Save = Prompt

Моя полезная нагрузка для инъекций является классической: введите ' OR 1=1 OR 'A' = ' в качестве имени пользователя, пустой пароль, вы находитесь.

Однако этот пример довольно нелепый.Строковые разделители и операторы конкатенации не используются для использования параметров на основе форм, и внедрение внезапно становится невозможным.

Макро-действие RunSQL, однако, вообще не поддерживает динамический SQL, поэтому не уязвимов SQL инъекцию афаик.Однако в нем можно использовать параметры формы.

Как отметил сам Зев Спитц в комментариях, SetProperty не может изменять источник строки или записи, поэтому не может использоваться для атак с использованием SQL-инъекций.

...