14.12.4. Полный путь

14.12.4. Полный путь

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

Рассмотрим пример того, как злоумышленник может использовать короткие имена в своих целях на примере команды ls:

? хакер создает в каком-либо каталоге (например, в общедоступном /tmp) файл с таким же именем, как и у атакуемой программы;

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

Например, следующий код может быть записан в такой файл:

#!/bin/sh

# Изменяем права доступа к файлам /etc/passwd и /etc/shadow

chmod 777 /etc/passwd > /dev/null

chmod 777 /etc/shadow > /dev/null

# Выполняем программу

ls exec /bin/ls "$@"

В данном примере выполняется всего три команды. Первые две изменяют права доступа к файлам /etc/passwd и /etc/shadow так, чтобы любой пользователь смог их прочитать. При этом все сообщения, которые могут возникнуть во время выполнения команд, направляются на нулевое устройство /dev/null, чтобы они не отображались на экране. После этого выполняется системная команда ls из каталога bin.

Теперь устанавливаем программе ls права, которые позволят выполнять ее любому пользователю:

chmod 777 /tmp/ls

Ложный файл готов. Теперь необходимо сделать так, чтобы он выполнялся вместо системной команды ls. Для этого достаточно добавить в системную переменную окружения PATH в самое начало каталог /tmp. Если теперь кто-либо запустит команду ls без указания полного пути, то выполнится наш сценарий, который попытается изменить права доступа на файлы паролей. Если у пользователя, запустившего команду, хватит полномочий для изменения прав, то можно считать, что система взломана.

Следите за содержимым системной переменной окружения PATH, чтобы ее никто не изменил.

Данный текст является ознакомительным фрагментом.