П О Р Т А Л                            
С Е Т Е В Ы Х                          
П Р О Е К Т О В                        
  
Поиск по сайту:
                                                 
Главная

О проекте

Web-мастеру
     HTML & JavaScript
     SSI
     Perl
     PHP
     XML & XSLT
     Unix Shell

MySQL

Безопасность

Хостинг

Другое








Самое читаемое:

Учебник PHP - "Для Чайника".
Просмотров 181860 раз(а).

Иллюстрированный самоучитель по созданию сайтов.
Просмотров 81038 раз(а).

Учебник HTML.
Просмотров 76609 раз(а).

Руководство по PHP5.
Просмотров 47604 раз(а).

Хостинг через призму DNS.
Просмотров 55199 раз(а).

Подборка текстов стандартных документов.
Просмотров 47180 раз(а).

Учебник PHP - Самоучитель
Просмотров 53586 раз(а).

Документация на MySQL (учебник & справочное руководство)
Просмотров 54247 раз(а).

Внешние атаки...
Просмотров 43871 раз(а).

Учебник PHP.
Просмотров 39291 раз(а).

SSI в примерах.
Просмотров 29138 раз(а).






 
 
| Добавить в избранное | Сделать стартовой Project.Net.Ru | Помощь





Привилегии

В Unix системе пользователи не являются равноправными, то же верно и для приложений. Доступ к узлам файловой системы - и соответственно внешним устройствам машины - зависит от строгого контроля за подлинностью. Некоторым пользователям резрешено производить весьма чувствительные операции для поддержания системы в нормальном состоянии. Число, именуемое UID (User Identifier - идентификатор пользователя) позволяет производить идентификацию. Чтобы упростить процесс, имя пользователя соответствует этому числу. Эта связь произведена в файле /etc/passwd.

UID равный 0 с именем по умолчанию root, имеет полный доступ к системе. Он может создавать, изменять, удалять любой системный узел, он может также изменять физическую конфигурацию машины, монтировать разделы, активизировать сетевые интерфейсы и менять их конфигурацию (IP адрес) или делать системные вызовы такие как mlock() для управления физической памятью или sched_setscheduler() для изменения механизма очередности. В одной из следующих статей мы узнаем о возможностях Posix.1e, которые позволяют ограничивать привилегии приложения, выполняемого как root, но сейчас будем предполагать, что привилегированный пользователь может делать все что угодно на машине.

Атаки, о которых мы будем говорить, есть атаки внутренние, то есть зарегестрированный пользователь на машине пытается получить привилегии, которых у него нет. С другой стороны, сетевые атаки - есть атаки внешние, их производят люди пытающиеся подключиться к машине, доступ к которой для них запрещен.

Чтобы пользоваться привилегиями другого пользователя, не имея возможности войти в систему под ним, нужно как минимум иметь возможность взаимодействовать с приложением, работающим с UID жертвы. Когда приложение - процесс - работает под Linux, оно имеет строго определенную индивидуальность. Во-первых программа имеет атрибут, называемый RUID (Real UID - истинный UID), который соответствует ID пользователя, запустившего его. Этим атрибутом управляет ядро и обычно он не может быть изменен. Второй атрибут завершает информацию: поле EUID (Effective UID - действующий UID) - его принимает во внимание ядро при управлении правами доступа (открытие файлов, зарезервированные системные вызовы).

Получить привилегии другого пользователя - значит производить все действия под его UID, а не под настоящим UID. Естественно, взломщик пытается получить ID root-а, однако многие другие учетные записи также представляют интерес, или потому что они дают доступ к системной информации (news, mail, lp...) или потому что позволяют читать личную информацию (почту, личные файлы и т.д.) или же они могут использоватся для скрытия нелегальной деятельности, например, атак на другие сайты.

Чтобы запустить приложение с привилегиями, где действующий UID отличен от истинного (UID пользователя, который запустил его), выполняемый файл должен иметь установленным специальный бит, называемый Set-UID. Этот бит находиться в атрибуте прав доступа файла (также как и биты исполнения, чтения, записи для пользователя, членов группы и остальных пользователей) и имеет восьмеричное значение 4000. Бит Set-UID представлен буквой s при отображении прав с помощью команды ls:

>> ls -l /bin/su
-rwsr-xr-x  1 root  root  14124 Aug 18  1999 /bin/su
>>

Команда "find / -type f -perm +4000" отображает список системных приложений, бит Set-UID у которых установлен в 1. Когда ядро выполняет программу с установленым битом Set-UID, оно использует UID владельца программы в качестве EUID процесса. С другой стороны, RUID не изменяется и соответствует пользователю, запустившему программу. Например, любой пользователь может иметь доступ к программе /bin/su, но она выполняется с правами владельца (root) с полными привелегиями в системе. Излишне говорить, что надо быть осторожным при написании программы с этим атрибутом.

Каждый процесс также имеет действующий ID группы, EGID, и истинный идентификатор RGID. Бит Set-GID (восьмеричное 2000) в правах доступа выполняемого файла, говорит ядру, что надо использовать группу владельца файла как EGID, а не GID пользователя, запустившего программу. Интересная комбинация возникает иногда при Set-GID установленном в 1, но без бита выполнения для группы. Фактически это соглашение, не имеющее ничего общего с привилегиями, относящимися к приложениям, однако указывающее, что файл может быть заблокирован функцией fcntl(fd, F_SETLK, lock). Обычно приложение не использует бит Set-GID, однако случается и такое. Например, некоторые игры используют его для сохранения лучших результатов в системный каталог.

Назад | Содержание | Вперед



Если Вы не нашли что искали, то рекомендую воспользоваться поиском по сайту:
 





Copyright © 2005-2016 Project.Net.Ru