Как известно, в дистрибутиве этой программы поставляются примеры использования
разнообразных возможностей языка 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=[здесь подставляете полный путь к интересующему файлу]
Защита.
Простейший вариант защиты - проверять переданное имя файла на наличие в нем слэшей(косых черт) - то есть
символов, которые используются только при указании полного пути к файлу.
Литература по PHP
|