PHP ВКЛЮЧАЕТ - инъекция возможна? - PullRequest
0 голосов
/ 01 октября 2018

Недавно мой сервер был взломан и файлы были загружены.Прямо сейчас я пытаюсь найти слабые места, которые привели меня к инъекции php.Я использую следующий код для включения файлов:

if (isset($_GET['page'])) {

$page = $_GET['page'];

include("./php/$page.php");
}

Я пробовал что-то вроде:

http://badsite.com/badcode.php
example.php");include(...BADCODE HERE...);//

"allow_url_fopen = 0" отключен в конфигурации сервера.Я думаю, что белый список и / или функции php (htmlentities, strip ...) для фильтрации специальных символов и кода по умолчанию сделали бы его пуленепробиваемым.Но все же я задаюсь вопросом, возможно ли в любом случае внедрить плохой код, так как значение $ page рассматривается как строка?

Может ли что-нибудь ввести "пользователь", который не попадет в phpпредупреждение "... не удалось открыть поток: нет такого файла или каталога ..."?

1 Ответ

0 голосов
/ 01 октября 2018

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

page=../../uploads/images/1.jpg

В примере показан один из возможных эксплойтов для LFI.Если вы разрешите загрузку изображений, кто-то может загрузить изображение, содержащее код PHP, и этот код будет выполнен.Другие эксплойты скрывают код PHP в файлах сеансов или лог-файлах;и включите файл через уязвимость.

Сама по себе проблема не является большой проблемой, но она может стать единой в сочетании с чем-то другим.Поэтому я бы внес в белый список, какие страницы я допускаю для $ _GET ['page'].

...