Эксплуатация file_get_contents ()

Можно ли прочитать любой файл (не только с расширением)? .HTML) с сервера в следующем скрипте?

<?php
echo file_get_contents($_GET['display'].'.html');
?>

Я знаю про фантики (php://, file://и т. д.) но достигнуто не так уж и много.

Я жажду услышать все возможные векторы атаки.

Конфигурация PHP по умолчанию:
allow_url_fopen Onи давайте предположим, что версия >= 7.0нулевой символ %00 не работает

0

Решение

Нет, это будет когда-либо читать только файлы, оканчивающиеся на «.html», но это не обязательно означает, что это безопасно! Как правило, чем больше вы можете дезинфицировать и ограничивать ввод, тем лучше.

Также для тех, кто планирует использовать file_get_contents так всегда полезно помнить, что при подаче из file_get_contentsВы можете обслуживать файлы, которые обычно недоступны — либо из-за конфигурации сервера, например, .htaccessили права доступа к файлу.

1

Другие решения

как сказал @David, это позволит получить файлы, заканчивающиеся на «.html», но это не очень хорошая практика, если у вас есть html папку, и вы хотите, чтобы пользователь получал только файлы из этой папки, вы не должны этого делать, используя этот метод, хакер может получить доступ к любому .html файл на вашем сервере, а не только те, которые вы хотите, чтобы он увидел.

Мое предложение, если у вас есть определенная папка, из которой вы хотите, чтобы пользователь мог получать файлы, отсканируйте папку и проверьте имя файла.

вот пример:

<?php

$paths = scandir('/html');

$file  = isset($_GET['display']) : $_GET['display'] ? null;

if(!$file)
{
die('no display provided');
}

$html = '';

foreach($paths as $path) {

if($path !== '.' && $path !== '..' && $path === $file.'.html') {
$html = file_get_contents($path);
}

}echo $html;

?>
0

Exploidale в качестве прокси:

http://example.com/script.php?display=https://hackme.com/passwords%3Extension%3D

echo file_get_contents("https://hackme.com/passwords?Extension=.html")

Ваш IP будет зарегистрирован на компьютере hackme.com и вернет вам несколько паролей (если повезет).

0
По вопросам рекламы [email protected]