Просмотр полной версии : null-byte в php
есть сайт на
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 <= нефига... =/
Я так понял в новых версиях пхп нельзя использовать нулл-байт, чтоб отрезать лишний путь?
А может кто-нибудь сказать с каких версяий пыха эту багу закрыли? или я неправ и дело еще в чем-то?
Я бы не сказал, что 0, для отсечения конца строки - это уязвимость =) В С++ тож используется и что.. Хоть там он и нужнее =) 0-терминант работает во всех версиях пхп, а может не сработать из-за настроек или установленных модов безопасности
Я бы не сказал, что 0, для отсечения конца строки - это уязвимость =) В С++ тож используется и что..
В том-то и дело, когда программист пишет приложение на языке высокого уровня он не должен думать о таких вещах, как нулл-байт. Поэтому - это уязвимость. Правда, разработчики пхп так не считают.
Ну то, что он работает во всех версиях пхп, я уже понял. Но все равно, вопрос для меня остается актуальным. Только теперь я его переформулирую так:
Какие моды, настройки пхп или веб сервера могут повлиять на возможность внедрить null-byte?
Iceangel_
15.02.2009, 14:08
2cr0w
magic_quotes_gpc=On (будет экранировать null-byte)
Вместо http://site.ru/123.php?$a=../dir/file.php%00
пробуй http://site.ru/123.php?$a=../dir/file.php?
De-visible
15.02.2009, 15:38
код по подробней в ПМ можно?
Jokester
15.02.2009, 15:42
При таком коде и настройках , всё будет работать , думаю ты что-то пропустил именно в коде
De-visible
15.02.2009, 15:49
При таком коде и настройках , всё будет работать , думаю ты что-то пропустил именно в коде
Поэтому я и прошу подробней код)
При таком коде и настройках , всё будет работать , думаю ты что-то пропустил именно в коде
Ты неправ, есть модули которые фильтруют нулл-байт помимо настроек пхп - апачевый ModSecurity, например, или там suhosin какой-ниудь. Только на данном сервере ничего подобного я не обнаружил.
В коде я ничего существенного не упустил, более того, на моем локальном веб-сервере эта бага в коде прекрасно эксплуатируется.
Jokester
15.02.2009, 22:22
Ты неправ, есть модули которые фильтруют нулл-байт помимо настроек пхп - апачевый ModSecurity, например, или там suhosin какой-ниудь. Только на данном сервере ничего подобного я не обнаружил.
В коде я ничего существенного не упустил, более того, на моем локальном веб-сервере эта бага в коде прекрасно эксплуатируется.
Что-то я перестал улавливать нить дискуссии. Мне кажется , что лучше выложить код или линк и будет гораздо проще.
Что касается ModSecurity, не могу сказать точно про нулл байт, но помоему по дефолту он не фильтруется.
В любом случае, если нужен ответ на вопрос, то код и линк упростят дело
Забудьте вы про код или линк. )
Вопрос прост:
Какие моды, настройки пхп или веб сервера (помимо тех, что в этой теме уже были озвучены) могут повлиять на возможность внедрить null-byte?
да очень разнообразные =) даж в самом скрипте может подключаться модуль =)
обобщу:
+Модули вебсервера
+Настройки интерпритатора
+На уровне скрипта
+Ну ещё возможно всякого рода экзотические фаерволлы...
Вместо http://site.ru/123.php?$a=../dir/file.php%00
пробуй http://site.ru/123.php?$a=../dir/file.php?
ненене, вопросик сработает только при удалённом инклуде, при локальном ток нульбайт =)
да очень разнообразные =) даж в самом скрипте может подключаться модуль =)
обобщу:
+Модули вебсервера
+Настройки интерпритатора
+На уровне скрипта
+Ну ещё возможно всякого рода экзотические фаерволлы...
Ну это и так ясно, хотелось бы какой-то конкретики, может кто-то сталкивался. )
В моем случае там точно "не на уровне скрипта". Система - фрибсд 6-й ветки. Файрволл там стандартный ipfw, рулесы посмотреть к сожалению не могу. Настройки пыха - практически такие же как у меня на локальном сервере (только ошибки не выводятся).
Когда к странице с phpinfo() обращаешься на этом серевере с нулл-байтом в параметре, то в _REQUESTе этот нулл-байт отображается как пробел (а он должен, вроде как, вообще не виден быть).
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot