Помощник
Здравствуйте, гость ( Вход | Регистрация )
Uploader и безопасность |
Easy-Web |
2010-02-12, 22:23
Сообщение
#1
|
|
Любитель Группа: Eleanor user Сообщений: 132 Регистрация: 2009-08-17 Из: Алма-ата, Казахстан Репутация: нет Всего: 1 |
Пишу модуль. Надо дать возможность простым пользователям загружать файлы jpg и потом переименовывать их. Для злоумышленника полный простор для действий - достаточно дать какому нибудь скрипту расширение jpg, загрузить его и переименовать расширение. Закачанный скрипт получает полный контроль над системой.
Вопросы для обсуждения 1)Можно ли закрыть дыру не меняя class_uploader 2)Можно ли закрыть дыру изменяя class_uploader запретив менять расширение 3)Может ли косо настроенный Apach допускать исполнение скриптов с раширением jpg Сообщение отредактировал Zzzhan - 2010-02-12, 22:33 |
|
|
||
Jon |
2010-02-13, 1:32
Сообщение
#2
|
|
Любитель Группа: Бета-тестеры Сообщений: 282 Регистрация: 2009-07-12 Из: Москва Репутация: нет Всего: 0 |
Переименовывать токо админы могут, вроде бы как.
А еси злоумышленник получил доступ до админки - то всё, трындец. Можно обычный комментарий с шелл скриптом сделать. |
|
|
||
Easy-Web |
2010-02-13, 1:46
Сообщение
#3
|
|
Любитель Группа: Eleanor user Сообщений: 132 Регистрация: 2009-08-17 Из: Алма-ата, Казахстан Репутация: нет Всего: 1 |
Нет, речь идет не об админке. Uploader влегкую настраивается на переименование загруженных файлов для любой из групп, не только администраторов. Так что стоит в настройках сделать неверное действо - становятся доступными для загрузки скрипты. Вообщето я уже решил поставленную задачу. Сам себе так сказать помог. Воткнул так называемый "костыль", один из тех которые жизнь всем отравляют. Но мне это помогло. Собственно изменил файл eleanor_uploader.js строка 171
полностью заменяется на три строки:
Теперь для переименования доступно только имя файла. Расширение остается неизменным. Я не понимаю почему этого нельзя было сделать в релизе, ведь это, ё-маё, реальная дыра в движке. Стоит разрешить переименование и трындец сайту. Плюньте мне в глаз если я неправ. Сообщение отредактировал Zzzhan - 2010-02-13, 2:31 |
|
|
||
Alexander |
2010-02-13, 4:30
Сообщение
#4
|
|
Eleanor developer Группа: Администраторы Сообщений: 5 261 Регистрация: 2008-11-11 Из: Николаев Версия системы: RC5 Репутация: нет Всего: 67 |
Хороший вопрос
Посмотрите на свойства класса Uploader, там Вы найдете свойство allower_types. Это массив, в который можно забить все доступные типы. Это ответ на первый вопрос. Вы можете закачать любой файл, даже PHP типа - он не будет выполнен при обращении к нему, система предложит его скачать. Можете проверить. Сейчас я обновил архив, в котором нельзя меня тип файла при переименовании, если тип не входит в allowed_types. Это ответ на второй вопрос. Ответом на третий вопрос буде "см. выше". То, что Вы изменили JS файл - ничего не даст хорошему взломищику. Поверьте. |
|
|
||
Easy-Web |
2010-02-13, 5:13
Сообщение
#5
|
|
Любитель Группа: Eleanor user Сообщений: 132 Регистрация: 2009-08-17 Из: Алма-ата, Казахстан Репутация: нет Всего: 1 |
Ну теперь то конечно хорошо что нельзя будет устанавливать неразрешенные расширения. Это тоже выход из положения. Но всетаки давать возможность юзеру менять расширения как перчатки не есть хорошо. Некоторые могут просто машинально удалять расширения (есть такие люди особенно привыкшие переименовывать файлы в Проводнике MS Windows) И тогда даже надписи насчет админа который придет и разберется не появится, а картинка отображаться перестанет.
Да, теперь дырка исчезла, но насчет "система предложит его скачать" могу сказать что у меня очень даже успешно запускается php скрипт, предварительно переименованный в jpg, загруженный и переименованный обратно. Я всего лишь шелкаю по первой кнопке уплоадера (на которой висит tooltip) и офигенно все запускается. Может быть .htaccess в корне и запрещает что-то скачивать напрямую, но через эту кнопочку скрипт запускается. Сообщение отредактировал Zzzhan - 2010-02-13, 5:27 |
|
|
||
Alexander |
2010-02-13, 16:30
Сообщение
#6
|
|
Eleanor developer Группа: Администраторы Сообщений: 5 261 Регистрация: 2008-11-11 Из: Николаев Версия системы: RC5 Репутация: нет Всего: 67 |
Zzzhan, именно запускается? Т.е. выполняется?
|
|
|
||
Easy-Web |
2010-02-13, 22:03
Сообщение
#7
|
|
Любитель Группа: Eleanor user Сообщений: 132 Регистрация: 2009-08-17 Из: Алма-ата, Казахстан Репутация: нет Всего: 1 |
Именно выполняется, я не стал этим скриптом что-то рушить, просто посчитал хэш от какой-то строки функцией md5. После нажатия на кнопку uploadera открылось отдельное окно браузера, так же как оно открывается для отображения фоток, но на экране был результат выполнения функции md5. Именно результат а не содержание php-скрипта. Я считаю это достаточным. В качестве веб сервера использовалась Linux-машина в моей локалке на которой я настроил джентельменский набор - Apache+MySQL+PHP. Поэтому я и задал вопрос о том что хостинг может быть достаточно кривым и сам в себе иметь дыры. Но мне кажется, что если эта дыра имело место в моем случае, значит может иметь и в других. Со своей стороны я уже принял меры, но реально переживаю за других пользователей Eleanor. |
|
|
||
Alexander |
2010-02-13, 23:58
Сообщение
#8
|
|
Eleanor developer Группа: Администраторы Сообщений: 5 261 Регистрация: 2008-11-11 Из: Николаев Версия системы: RC5 Репутация: нет Всего: 67 |
Zzzhan, на сервере установлен mod_rewrite?
|
|
|
||
Easy-Web |
2010-02-14, 2:31
Сообщение
#9
|
|
Любитель Группа: Eleanor user Сообщений: 132 Регистрация: 2009-08-17 Из: Алма-ата, Казахстан Репутация: нет Всего: 1 |
Конечно же да, и в .httpaccess я ничего не заслэшивал |
|
|
||
Alexander |
2010-02-14, 2:33
Сообщение
#10
|
|
Eleanor developer Группа: Администраторы Сообщений: 5 261 Регистрация: 2008-11-11 Из: Николаев Версия системы: RC5 Репутация: нет Всего: 67 |
Zzzhan, тогда это очень странно. Потому что, следуя логике .htaccess любой запрос файла из папки uploads должен перенаправится на файл download.php
|
|
|
||
Easy-Web |
2010-02-14, 3:16
Сообщение
#11
|
|
Любитель Группа: Eleanor user Сообщений: 132 Регистрация: 2009-08-17 Из: Алма-ата, Казахстан Репутация: нет Всего: 1 |
А вы сами пробовали делать это именно через uploader? скорее всего он как-то обходит httpaccess Я буду продолжать эксперементировать и выкладывать сюда результаты теста. Может быть в каждой подпапке, где находятся рисунки, необходимо класть httpaccess с нужными опциями? Но тогда это будет геморой, поскольку у меня их будет возможно несколько тысяч Сообщение отредактировал Zzzhan - 2010-02-14, 3:45 |
|
|
||
Alexander |
2010-02-14, 14:33
Сообщение
#12
|
|
Eleanor developer Группа: Администраторы Сообщений: 5 261 Регистрация: 2008-11-11 Из: Николаев Версия системы: RC5 Репутация: нет Всего: 67 |
Да. Пробовал. Пока проблемм на наблюдалось.
|
|
|
||
Youshi |
2010-02-15, 17:57
Сообщение
#13
|
|
Любитель Группа: Разработчики Сообщений: 118 Регистрация: 2008-12-14 Из: Россия. Астрахань Репутация: нет Всего: 8 |
./uploads/.htaccess:
|
|
|
||
Easy-Web |
2010-02-15, 20:03
Сообщение
#14
|
|
Любитель Группа: Eleanor user Сообщений: 132 Регистрация: 2009-08-17 Из: Алма-ата, Казахстан Репутация: нет Всего: 1 |
Разве этот запрет будет работать во вложенных папках?
|
|
|
||
Youshi |
2010-02-15, 20:58
Сообщение
#15
|
|
Любитель Группа: Разработчики Сообщений: 118 Регистрация: 2008-12-14 Из: Россия. Астрахань Репутация: нет Всего: 8 |
Да, будет.
|
|
|
||
Alexander |
2010-02-15, 23:31
Сообщение
#16
|
|
Eleanor developer Группа: Администраторы Сообщений: 5 261 Регистрация: 2008-11-11 Из: Николаев Версия системы: RC5 Репутация: нет Всего: 67 |
Youshi, а как ты с такими ограничениями будешь качать html файлы, например?
|
|
|
||
Youshi |
2010-02-16, 9:48
Сообщение
#17
|
|
Любитель Группа: Разработчики Сообщений: 118 Регистрация: 2008-12-14 Из: Россия. Астрахань Репутация: нет Всего: 8 |
Например вообще их оттуда качать не буду
Не считаю правильным хранить в папке uploads хтмл и иже с ними (пакуйте в архивы и будет вам счастие). А кому надо - правило можно изменить. Ничего сверхъестественного там нет. |
|
|
||
Easy-Web |
2010-02-16, 10:40
Сообщение
#18
|
|
Любитель Группа: Eleanor user Сообщений: 132 Регистрация: 2009-08-17 Из: Алма-ата, Казахстан Репутация: нет Всего: 1 |
Это правильно конечно. А вот сработает ли это правило, если я например захочу не скопировать туда php-скрипт, а переименовать в *.php закачанный ранее скрипт с расширением *.jpg ? |
|
|
||
Youshi |
2010-02-16, 11:43
Сообщение
#19
|
|
Любитель Группа: Разработчики Сообщений: 118 Регистрация: 2008-12-14 Из: Россия. Астрахань Репутация: нет Всего: 8 |
Переименовывайте хоть до посинения. Как только файл будет переименован, юзер потеряет к нему доступ по http.
ЗЫ 2 Sunvas На будущее Мона со временем сделать проверку закачиваемых файлов по сигнатурам. Не бог весть какая супер защита, но от быдлохакеров отгородиться вполне себе может помочь. |
|
|
||
Alexander |
2010-02-16, 18:57
Сообщение
#20
|
|
Eleanor developer Группа: Администраторы Сообщений: 5 261 Регистрация: 2008-11-11 Из: Николаев Версия системы: RC5 Репутация: нет Всего: 67 |
Имеешь ввиду при закачке JPG файла проверять "внутренности" файла и определять реально ли это JPG? - можно. Пример есть какой-нибудь? Только что делать с текстовыми файлами, с файлами неизвестных типов и т.п. |
|
|
||
Текстовая версия | 0.0460 сек. 11 запросов GZIP включен Сейчас: 2024-05-13, 10:00 |