Документ из базы библиотеки компьютерной литературы 'Roga и Копыта' - www.roga.by.ru
Содержание документа. Скачать архив документа. Другие документы по данной теме. Вернуться в библиотеку. Рассылка новых поступлений. ЧАТЫ по
интересам.

О проблеме безопасности в PHP/FI


Как известно, в дистрибутиве этой программы поставляются примеры использования разнообразных возможностей языка PHP/FI. Но было обнаружено, что в нескольких из приведенных примеров существует огромная дыра в безопасности.
Баг заключается в том, что при обращении любого пользователя к некоторым из этих страниц, пользователь может удаленно читать любой файл на физическом разделе сервера, причем с теми правами, на которых запущен http-сервер.

Этот баг, присутствует, например в файлах mlog.html и mylog.html.
В них присутствует следующая команда:



Смысл этой строчки - прочесть файл, имя которого находится в этой переменной $screen. Но при этом не принимается во внимание, что пользователь может сам вызвать эту страницу, установив значение переменной screen в полный путь к любому из файлов в системе. Как правило, взломщики интересуются файлами /etc/passwd, /etc/master.passwd, /etc/shadow и тд - файлами, содержащими пароли пользователей.

Если вы еще не поняли, как может быть проведена такая атака, то вот вам пример строки, которую достаточно вписать в поле адреса вашего браузера, чтобы проверить атакуемый хост на защищенность и в случае успеха получить "волшебный ключик" ко всем дверям сайта:

http://some.stupid.isp.net/~dumbuser/cool-logs/mlog.html?screen=[здесь подставляете полный путь к интересующему файлу]


Защита.

Простейший вариант защиты - проверять переданное имя файла на наличие в нем слэшей(косых черт) - то есть символов, которые используются только при указании полного пути к файлу. Скажем, подойдет вот такой вот кусок кода для проверки:

echo "Permission denied: path may not contain slashes.";
Exit;
}>

На многих сайтах сейчас эта дыра может быть закрыта, чего и вам желаю. Но при использовании старых версий PHP/FI эта атака вполне реальна.