Какие есть уязвимости при прямом подключении файлов?

Тема в разделе "Как сделать...", создана пользователем Q_BASIC, 26 май 2015.

  1. Q_BASIC

    Q_BASIC

    Регистр.:
    30 ноя 2013
    Сообщения:
    352
    Симпатии:
    223
    Доброе время суток :)

    Какие есть уязвимости при использовании такого кода?
    Код:
    if(file_exists(__DIR__.'/pages'.$_SERVER['REQUEST_URI']))
        echo file_get_contents(__DIR__.'/pages'.$_SERVER['REQUEST_URI']);
    else
        show_404();
     
  2. dandandan

    dandandan

    Регистр.:
    7 авг 2008
    Сообщения:
    975
    Симпатии:
    255
    Можно загрузить и отобразить на экране браузера любой файл вашего сайта.
    Т.е. узнать содержимое конфига сайта, какие-то скрытые от чужих глаз файлы, слить сайт.
    Если у вас ВПС или Сервер и нет ограничения досутпа на папку для апач юзера, то можно получить вообще любой файл сервера. А дальше узнать все пароли...

    p.s. Нужно фильтровать содержимое переменной $_SERVER['REQUEST_URI'], удалять из нее лишние символы.
     
    Q_BASIC нравится это.
  3. Q_BASIC

    Q_BASIC

    Регистр.:
    30 ноя 2013
    Сообщения:
    352
    Симпатии:
    223
    Можно по подробнее?

    Задумано же, то что файлы в папке pages. Какой должен быть $_SERVER['REQUEST_URI'] чтобы получить файлы вне папки pages? И какие символы надо отфильтровывать?
     
  4. dandandan

    dandandan

    Регистр.:
    7 авг 2008
    Сообщения:
    975
    Симпатии:
    255
    echo file_get_contents(__DIR__.'/pages/../file.txt');
    Как-то так. Получает путь до __DIR__.'/pages/ . Далее ../ - перейти на 1 уровень выше, можно на два. Тогда .../.../ и т.д.
    Далее указываем название файла, который загрузить.

    p.s. Взлом чужих сайтов преследуется...
     
    Последнее редактирование: 26 май 2015
    Q_BASIC нравится это.