есть сайт на PHP Version 5.2.4 register_globals=On allow_url_include=Off magic_quotes_gpc=Off и приблизительно с таким кодом ... if (!isset($a)) $a = '../'; ... include_once($a . 'dir/file.php'); ... Пытаюсь локальный инклуд провести, но не выходит: http://site.ru/123.php?$a=../ <= работает, страница нормально отображается http://site.ru/123.php?$a=../dir/file.php%00 <= нефига... =/ Я так понял в новых версиях пхп нельзя использовать нулл-байт, чтоб отрезать лишний путь? А может кто-нибудь сказать с каких версяий пыха эту багу закрыли? или я неправ и дело еще в чем-то?
В том-то и дело, когда программист пишет приложение на языке высокого уровня он не должен думать о таких вещах, как нулл-байт. Поэтому - это уязвимость. Правда, разработчики пхп так не считают. Ну то, что он работает во всех версиях пхп, я уже понял. Но все равно, вопрос для меня остается актуальным. Только теперь я его переформулирую так: Какие моды, настройки пхп или веб сервера могут повлиять на возможность внедрить null-byte?
Вместо http://site.ru/123.php?$a=../dir/file.php%00 пробуй http://site.ru/123.php?$a=../dir/file.php?
Ты неправ, есть модули которые фильтруют нулл-байт помимо настроек пхп - апачевый ModSecurity, например, или там suhosin какой-ниудь. Только на данном сервере ничего подобного я не обнаружил. В коде я ничего существенного не упустил, более того, на моем локальном веб-сервере эта бага в коде прекрасно эксплуатируется.
Что-то я перестал улавливать нить дискуссии. Мне кажется , что лучше выложить код или линк и будет гораздо проще. Что касается ModSecurity, не могу сказать точно про нулл байт, но помоему по дефолту он не фильтруется. В любом случае, если нужен ответ на вопрос, то код и линк упростят дело
Забудьте вы про код или линк. ) Вопрос прост: Какие моды, настройки пхп или веб сервера (помимо тех, что в этой теме уже были озвучены) могут повлиять на возможность внедрить null-byte?
Ну это и так ясно, хотелось бы какой-то конкретики, может кто-то сталкивался. ) В моем случае там точно "не на уровне скрипта". Система - фрибсд 6-й ветки. Файрволл там стандартный ipfw, рулесы посмотреть к сожалению не могу. Настройки пыха - практически такие же как у меня на локальном сервере (только ошибки не выводятся). Когда к странице с phpinfo() обращаешься на этом серевере с нулл-байтом в параметре, то в _REQUESTе этот нулл-байт отображается как пробел (а он должен, вроде как, вообще не виден быть).