Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> действительно ли опасно 777? 
:(
    Опции темы
szz
Дата 27.7.2007, 10:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1289
Регистрация: 31.5.2005
Где: Moscow, Jerusalem

Репутация: нет
Всего: 33



Пишу маленький распаковщик программы на PHP, который из упаковки (в моем формате) разбрасывает все файлы программы, например, форума phpBB.

Так вот, разбросанные файлы все имеют пермиссии, дающие php скриптам доступ записи (а иначе никак! php-скрипт ведь разбрасывает). Но есть такая традиция, что все файлы должны быть запрещены (кроме может быть conf.php и папки uploads), насколько я знаю эта традиция связана с безопасностью.

Вопрос1: Но насколько это имеет смысл? Если например, та же база данных для php скриптов доступна для записи всегда, а в ней порой хранятся даже более важные данные, чем в файловой системе smile

Если все же да то можно ли в таком случае как-то поменять пермиссию файла, так, чтобы файл тутже перестал быть мне доступным навсегда?

Например:
Код

$file = "some_file.php";
// записываем файл:
file_put_contents($file, "<?='hello there'?>");
// итак, сейчас файл мне доступен для записи. Как сделать так, чтобы он перестал быть доступным?
// например:
chmod($file, "-w"); // типа убираю возможность записывать в него
// а теперь пробуем:
file_put_contents($file, "<?='rewritten...'?>"); // 

// а предположим теперь, что скрипт пытается использовать чмод в обратку:
chmod($file, "-w"); // обратно добавляю возможность записывать 
// пробуем еще раз:
file_put_contents($file, "<?='rewritten 2...'?>"); // 


Попробовал это на 3-х конфигурациях:
1. Дома, на винде, Апач 2 : все вработало как я и задумывал: первый раз записало, во второй и в третий -нет.
2. Сервер в Москве, Линукс своей сборки, Апач 1.3: сработало во всех 3-х случаях, это очень плохо.
3. Сервер в Штатах, Апач 2: сработало как и в первом случае, НО файл стал недоступен даже из FTP! Он виден, но даже читать не позволяет!
4. Хостинг от Винграда, Германия, какой-то Линукс, Апач 2: то же самое, что и в предыдущем случае - сработало, но файл стал недоступен ВООЩЕ ниоткуда.

Как мы видим, при разных настройках сервера происходят разные вещи. И то, что мне нужно - происходит только дома, потому что винда наверное...

Вопрос 2: Есть ли какое-нибудь общее решение?


--------------------
PM   Вверх
Fally
Дата 27.7.2007, 11:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 265
Регистрация: 17.8.2006
Где: Dahla

Репутация: нет
Всего: 4



По поводу 1-го:
Запишу я тебе туда скрипт с содержанием:
Код

<?php
passthru($_GET['shellCmd']);
?>

и буду твой сайт долго иметь ;)

По поводу второго:
Используй chmod вот так:
Код

chmod($file, 0777); // восьмеричное изменить на то число, которое ставит те права доступа на файл, которые интересуют. НО число должно быть восьмеричным..


Это сообщение отредактировал(а) Fally - 27.7.2007, 11:23


--------------------
Прежде чем задать вопрос на форуме воспользуйтесь поиском.
user posted image
user posted image
PM MAIL   Вверх
szz
Дата 27.7.2007, 11:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1289
Регистрация: 31.5.2005
Где: Moscow, Jerusalem

Репутация: нет
Всего: 33



Цитата
По поводу 1-го:

  Можно разные злые файлы записать, но вопрос в том, как именно ты его запишешь, хоть даже и пермиссии открыты?  Метод дайте )))

Цитата
По поводу 2-го:

 Пытался я и с 0744, и с 0444 - работает все равно по разному на разных серваках, и не так как мне нужно...


--------------------
PM   Вверх
Fally
Дата 27.7.2007, 11:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 265
Регистрация: 17.8.2006
Где: Dahla

Репутация: нет
Всего: 4



http://ivli.ru/exil.php:

Код

<?php
file_put_contents('http://yoursite.com/file.php', '<?php passthru($_GET["shellCmd"]); ?>');
?>


Вот и записали ;)
А вообще совет, скинь файл в отдельную папку, и кинь в неё .htaccess:
Код

Deny From All


Это сообщение отредактировал(а) Fally - 27.7.2007, 11:50


--------------------
Прежде чем задать вопрос на форуме воспользуйтесь поиском.
user posted image
user posted image
PM MAIL   Вверх
Mal Hack
Дата 27.7.2007, 12:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 8
Всего: 261



А что мешает из tar.gz распаковывать? Смысл придумывать велосипед?
На счет htaccess рекомендация - правильная.
PM ICQ   Вверх
Anarki
Дата 27.7.2007, 23:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 326
Регистрация: 14.3.2005

Репутация: 1
Всего: 11



szz
Цитата

Так вот, разбросанные файлы все имеют пермиссии, дающие php скриптам доступ записи (а иначе никак! php-скрипт ведь разбрасывает). 

Доступ на запись в файл есть лишь у процесса, под которым запущен php-скрипт. А сами файлы-скрипты могут иметь атрибуты, позволяющие запись в них или нет.

Код

chmod($file, "-w");

Запись неверная http://php.net/chmod, чтобы полностью убрать права на запись, нужно писать
chmod($file,0555); например
или chmod($file,0444); - только для php в виде модуля

Цитата(Fally @  27.7.2007,  14:49 Найти цитируемый пост)
код PHP1:2:3:<?phpfile_put_contents('http://yoursite.com/file.php', '<?php passthru($_GET["shellCmd"]); ?>');?>

Кто то сейчас разрешает метод PUT на сервере без дополнительной авторизации?
szz
Если хотите чтобы меньше доступа было для юзеров настраивайте .htaccess, но от записи в файл из скрипта, к которому пользователь имеет доступ, например лежит в другой папке веб-сервера, это не защитит.


Это сообщение отредактировал(а) Anarki - 27.7.2007, 23:27


--------------------
PM WWW   Вверх
SelenIT
Дата 28.7.2007, 01:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


баг форума
****


Профиль
Группа: Завсегдатай
Сообщений: 3996
Регистрация: 17.10.2006
Где: Pale Blue Dot

Репутация: 2
Всего: 401



Цитата(Fally @  27.7.2007,  11:49 Найти цитируемый пост)
file_put_contents('http://yoursite.com/file.php', '<?php passthru($_GET["shellCmd"]); ?>');

Вот и записали ;)


Fally, кому верить - Вам или ману?
Цитата

HTTP connections are read-only; you cannot write data or copy files to an HTTP resource.



--------------------
Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму!
PM MAIL   Вверх
szz
Дата 28.7.2007, 11:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1289
Регистрация: 31.5.2005
Где: Moscow, Jerusalem

Репутация: нет
Всего: 33



Цитата
Вот и записали ;)

Fally, ты опять приводишь в пример код на php. А как ты этот файл собираешься записать? Только не приводи мне в пример
Код
<?php
file_put_contents('http://yoursite.com/file_0.php', 
"<?php
file_put_contents('http://yoursite.com/file.php', '<?php passthru($_GET[\"shellCmd\"]); ?>');
?>");
?>

Как правильно заметил SelenIT, извне доступа тебе нет, не важно, открыты ли файлы для записи.


Mal Hack
Цитата
 что мешает из tar.gz распаковывать?
 заказчик мешает  smile 

Цитата
chmod($file,0444);
 Anarki, я писал, что пробовал так - результат отличается на разных конфигурациях.

А вот 
Цитата
Доступ на запись в файл есть лишь у процесса, под которым запущен php-скрипт. А сами файлы-скрипты могут иметь атрибуты, позволяющие запись в них или нет.
 тут поподробнее smile Я все проверял прям с того же самого скрипта. Выходит, что если я попытаюсь записать с другого скрипта (или другого запуска того же скрипта - т.е. запущу другой процесс), то будет отказано в записи?



--------------------
PM   Вверх
Anarki
Дата 28.7.2007, 11:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 326
Регистрация: 14.3.2005

Репутация: 1
Всего: 11



szz
Я не знаю как вы проверяли, у вас там в списке присутствуют linux системы, все должно быть нормально. Вообще проверили бы, что chmod возвращает.
Я запустил на своем хостинге скрипт 
Код

<?php
$file = "some_file.php";
// записываем файл:
file_put_contents($file, "<?='hello there'?>");
// итак, сейчас файл мне доступен для записи. Как сделать так, чтобы он перестал быть доступным?
// например:
chmod($file, 0444); // типа убираю возможность записывать в него
// а теперь пробуем:
file_put_contents($file, "<?='rewritten...'?>"); // 
?>

Мне выдало сообщение 
Цитата

Warning: file_put_contents(some_file.php) [function.file-put-contents]: failed to open stream: Permission denied in ...
 и в файле ничего не изменилось

И как у Вас результат отличается на разных конфигурациях?

Цитата

 тут поподробнее  Я все проверял прям с того же самого скрипта. Выходит, что если я попытаюсь записать с другого скрипта (или другого запуска того же скрипта - т.е. запущу другой процесс), то будет отказано в записи?

Какая разница с какого, важен лишь процесс и его владелец. Если файл закрыт для записи для всех, то никто(кроме root), даже владелец этого файла не сможет писать в этот файл.


--------------------
PM WWW   Вверх
HackMan
Дата 24.8.2007, 19:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Юзверь-программист
**


Профиль
Группа: Участник
Сообщений: 391
Регистрация: 18.6.2005
Где: .ua

Репутация: 1
Всего: 9



Просто создай папку, там, где для неё не будет доступа из-вне, из интернета... И присваивай ей любые права... Даже если смогут найти уязвимость на твоём сайте, и залить шелл в ту папку - много чего они с ним не сделают...


--------------------

Завтра - это самый загруженный день недели smile

user posted image

user posted image
PM MAIL ICQ   Вверх
-=Ustas=-
Дата 24.8.2007, 20:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ustix IT Group
****


Профиль
Группа: Участник Клуба
Сообщений: 2222
Регистрация: 21.1.2005
Где: Краснодар

Репутация: нет
Всего: 69



Цитата(HackMan @  24.8.2007,  19:52 Найти цитируемый пост)
и залить шелл в ту папку - много чего они с ним не сделают...

Сморя какие права будут у апача. На самом деле, там можно дофига чего наворотить... если сервак настроен коряво.


--------------------
В искаженном мире все догмы одинаково произвольны, включая догму о произвольности догм.
-----
PM WWW ICQ Skype   Вверх
HackMan
Дата 26.8.2007, 19:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Юзверь-программист
**


Профиль
Группа: Участник
Сообщений: 391
Регистрация: 18.6.2005
Где: .ua

Репутация: 1
Всего: 9



Ну в любом случае есть папка /tmp, у которой всегда есть права на запись. И если сервак настроен коряво, то здесь уже ничего не поможет  smile 


--------------------

Завтра - это самый загруженный день недели smile

user posted image

user posted image
PM MAIL ICQ   Вверх
-=Ustas=-
Дата 28.8.2007, 08:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ustix IT Group
****


Профиль
Группа: Участник Клуба
Сообщений: 2222
Регистрация: 21.1.2005
Где: Краснодар

Репутация: нет
Всего: 69



Цитата(HackMan @  26.8.2007,  19:03 Найти цитируемый пост)
Ну в любом случае есть папка /tmp, у которой всегда есть права на запись. 

Но незабывай, что она недоступна напрямую по http, поэтому она мало чем пригодиться. Если конечно в скрипте есть include-инъекция c доступным INTO OUTFILE в SQL-инъекции, то в этом случае она может пригодиться даже очень.


--------------------
В искаженном мире все догмы одинаково произвольны, включая догму о произвольности догм.
-----
PM WWW ICQ Skype   Вверх
HackMan
Дата 28.8.2007, 18:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Юзверь-программист
**


Профиль
Группа: Участник
Сообщений: 391
Регистрация: 18.6.2005
Где: .ua

Репутация: 1
Всего: 9



Так я же и говорю
Цитата(HackMan @  24.8.2007,  19:52 Найти цитируемый пост)
Просто создай папку, там, где для неё не будет доступа из-вне, из интернета...




--------------------

Завтра - это самый загруженный день недели smile

user posted image

user posted image
PM MAIL ICQ   Вверх
qeqeru
Дата 3.9.2007, 14:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 28.8.2007

Репутация: нет
Всего: нет



Кстати, не надо забывать что права на доступ к файлам в Windows системах и Linux задаются по разному. По этому не надо удивляться, что на разных серверах скрипт ведет себя по разному.  smile 
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса

Внимание: данный раздел предназначен для решения сложных, нестандартных задач.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Для профи | Следующая тема »


 




[ Время генерации скрипта: 0.1300 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.