PDA

Просмотр полной версии : null-byte в php


cr0w
14.02.2009, 14:09
есть сайт на

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 <= нефига... =/

Я так понял в новых версиях пхп нельзя использовать нулл-байт, чтоб отрезать лишний путь?

А может кто-нибудь сказать с каких версяий пыха эту багу закрыли? или я неправ и дело еще в чем-то?

o3,14um
15.02.2009, 11:08
Я бы не сказал, что 0, для отсечения конца строки - это уязвимость =) В С++ тож используется и что.. Хоть там он и нужнее =) 0-терминант работает во всех версиях пхп, а может не сработать из-за настроек или установленных модов безопасности

cr0w
15.02.2009, 11:59
Я бы не сказал, что 0, для отсечения конца строки - это уязвимость =) В С++ тож используется и что..
В том-то и дело, когда программист пишет приложение на языке высокого уровня он не должен думать о таких вещах, как нулл-байт. Поэтому - это уязвимость. Правда, разработчики пхп так не считают.
Ну то, что он работает во всех версиях пхп, я уже понял. Но все равно, вопрос для меня остается актуальным. Только теперь я его переформулирую так:

Какие моды, настройки пхп или веб сервера могут повлиять на возможность внедрить null-byte?

Iceangel_
15.02.2009, 14:08
2cr0w

magic_quotes_gpc=On (будет экранировать null-byte)

oRb
15.02.2009, 15:32
Вместо 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
При таком коде и настройках , всё будет работать , думаю ты что-то пропустил именно в коде
Поэтому я и прошу подробней код)

cr0w
15.02.2009, 21:59
При таком коде и настройках , всё будет работать , думаю ты что-то пропустил именно в коде
Ты неправ, есть модули которые фильтруют нулл-байт помимо настроек пхп - апачевый ModSecurity, например, или там suhosin какой-ниудь. Только на данном сервере ничего подобного я не обнаружил.

В коде я ничего существенного не упустил, более того, на моем локальном веб-сервере эта бага в коде прекрасно эксплуатируется.

Jokester
15.02.2009, 22:22
Ты неправ, есть модули которые фильтруют нулл-байт помимо настроек пхп - апачевый ModSecurity, например, или там suhosin какой-ниудь. Только на данном сервере ничего подобного я не обнаружил.

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

Что касается ModSecurity, не могу сказать точно про нулл байт, но помоему по дефолту он не фильтруется.

В любом случае, если нужен ответ на вопрос, то код и линк упростят дело

cr0w
15.02.2009, 22:39
Забудьте вы про код или линк. )

Вопрос прост:
Какие моды, настройки пхп или веб сервера (помимо тех, что в этой теме уже были озвучены) могут повлиять на возможность внедрить null-byte?

o3,14um
16.02.2009, 07:58
да очень разнообразные =) даж в самом скрипте может подключаться модуль =)

обобщу:
+Модули вебсервера
+Настройки интерпритатора
+На уровне скрипта
+Ну ещё возможно всякого рода экзотические фаерволлы...

Вместо http://site.ru/123.php?$a=../dir/file.php%00
пробуй http://site.ru/123.php?$a=../dir/file.php?

ненене, вопросик сработает только при удалённом инклуде, при локальном ток нульбайт =)

cr0w
16.02.2009, 12:22
да очень разнообразные =) даж в самом скрипте может подключаться модуль =)

обобщу:
+Модули вебсервера
+Настройки интерпритатора
+На уровне скрипта
+Ну ещё возможно всякого рода экзотические фаерволлы...

Ну это и так ясно, хотелось бы какой-то конкретики, может кто-то сталкивался. )

В моем случае там точно "не на уровне скрипта". Система - фрибсд 6-й ветки. Файрволл там стандартный ipfw, рулесы посмотреть к сожалению не могу. Настройки пыха - практически такие же как у меня на локальном сервере (только ошибки не выводятся).

Когда к странице с phpinfo() обращаешься на этом серевере с нулл-байтом в параметре, то в _REQUESTе этот нулл-байт отображается как пробел (а он должен, вроде как, вообще не виден быть).