X   Сообщение сайта
(Сообщение закроется через 2 секунды)

Здравствуйте, гость ( Вход | Регистрация )

2 страниц Открыть меню   1 2 >  
Ответить в данную темуНачать новую тему
> 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


Цитата (Jon @ 2010-02-13, 4:32)
Переименовывать токо админы могут, вроде бы как.
А еси злоумышленник получил доступ до админки - то всё, трындец. Можно обычный комментарий с шелл скриптом сделать.

Нет, речь идет не об админке. Uploader влегкую настраивается на переименование загруженных файлов для любой из групп, не только администраторов. Так что стоит в настройках сделать неверное действо - становятся доступными для загрузки скрипты. Вообщето я уже решил поставленную задачу.

Сам себе так сказать помог. Воткнул так называемый "костыль", один из тех которые жизнь всем отравляют. Но мне это помогло.


Собственно изменил файл eleanor_uploader.js

строка 171

var newname=prompt(el_lang['enter_new_name'],file_name);


полностью заменяется на три строки:

var file_name_extension = file_name.slice(file_name.lastIndexOf('.'));
var file_name_tilte = file_name.slice(0,file_name.lastIndexOf('.'));
var newname=prompt(el_lang['enter_new_name'],file_name_tilte)+file_name_extension;


Теперь для переименования доступно только имя файла. Расширение остается неизменным.
Я не понимаю почему этого нельзя было сделать в релизе, ведь это, ё-маё, реальная дыра в движке. Стоит разрешить переименование и трындец сайту.
Плюньте мне в глаз если я неправ.

Сообщение отредактировал 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


Цитата (Alexander @ 2010-02-13, 19:30)
Zzzhan, именно запускается? Т.е. выполняется?


Именно выполняется, я не стал этим скриптом что-то рушить, просто посчитал хэш от какой-то строки функцией 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


Цитата (Alexander @ 2010-02-14, 2:58)
Zzzhan, на сервере установлен mod_rewrite?


Конечно же да, и в .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


Цитата (Alexander @ 2010-02-14, 5:33)
Zzzhan, тогда это очень странно. Потому что, следуя логике .htaccess любой запрос файла из папки uploads должен перенаправится на файл download.php


А вы сами пробовали делать это именно через 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:

<FilesMatch ".(php|phtml|inc|c|htm|html|pl|cgi|shtm)$">
		Order Allow,Deny
		Deny from all
</FilesMatch>
Перейти в начало страницы
+Цитировать сообщение
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


Цитата (Youshi @ 2010-02-16, 12:48)
Например вообще их оттуда качать не буду ;)

Не считаю правильным хранить в папке uploads хтмл и иже с ними (пакуйте в архивы и будет вам счастие). А кому надо - правило можно изменить. Ничего сверхъестественного там нет.


Это правильно конечно.

А вот сработает ли это правило, если я например захочу не скопировать туда 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


Цитата (Youshi @ 2010-02-16, 10:43)
Мона со временем сделать проверку закачиваемых файлов по сигнатурам.

Имеешь ввиду при закачке JPG файла проверять "внутренности" файла и определять реально ли это JPG? - можно. Пример есть какой-нибудь? Только что делать с текстовыми файлами, с файлами неизвестных типов и т.п.
Перейти в начало страницы
+Цитировать сообщение

2 страниц Открыть меню   1 2 >
Ответить в данную темуНачать новую тему
0 чел. читают эту тему (гостей: 0, скрытых пользователей: 0)
Пользователей: 0

 
RSS Текстовая версия 0.0526 сек.    11 запросов    GZIP включен    Сейчас: 2020-10-27, 6:36