Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[52.14.135.68] |
|
Страницы: (3) [1] 2 3 все ( Перейти к последнему сообщению ) |
Сообщ.
#1
,
|
|
|
скажите подалуйста, можно с примером:) ну закачал ко мне юзер такую gif, а дальше то что? все равно апач отправит клиенту html, с самим то изображением не работают. Не пойму, где подвох... Выполнить скрипт тоже не получится, ведь служебная инфа в начале файла отобъет все желание у интепритатора, да и можно настроить пхп чтоб он из этой папки ничего не выполнял...
Эта тема была разделена из темы "Что-то вроде bug report" |
Сообщ.
#2
,
|
|
|
Цитата antonn @ Проверял? Нисколько не отобъет, читай внимательней.Выполнить скрипт тоже не получится, ведь служебная инфа в начале файла отобъет все желание у интепритатора Цитата antonn @ Много чего настроить можно, например проверку расширений, об этом и говорится, что нужны дополнительные средства защиты.можно настроить пхп чтоб он из этой папки ничего не выполнял... Цитата antonn @ Причем тут хтмл, будет запрос на картинку, выполнится код и всего то. все равно апач отправит клиенту html, с самим то изображением не работают. |
Сообщ.
#3
,
|
|
|
Pr0[)!9Y
так ведь пхп выполняет код в .php, а остальные расширения отдает как текст (ну смотря что поставить). вот это то я проверял, потому и спрашиваю, где бага то... Цитата Причем тут хтмл, будет запрос на картинку, выполнится код и всего то. запрос на картинку будет у апача, чего бы он отдал файл на выполнение пхп? заголовок "картиночный", расширение тоже... |
Сообщ.
#4
,
|
|
|
Цитата Pr0[)!9Y @ Расширение надо проверять, о чем и вся тема, а закачать можно любой файл. Опасность заключается в том, что проверка загруженных графических файлов на основе одной лишь функции getimagesize позволяет закачать любой PHP файл. |
Сообщ.
#5
,
|
|
|
расширение говорит лишь о том, какую программу запускать при двойном клике на иконке файла.
можно при закачке проверять на вшивость картинки:) function verify_image($file) { $txt = html_entity_decode(file_get_contents($file), ENT_QUOTES); $image_safe = true; if (preg_match("#&\#x([0-9a-f]+);*#i", $txt)) $image_safe = false; if (preg_match('#&\#([0-9]+);*#i', $txt)) $image_safe = false; if (preg_match("#([a-z]*)=([\`\'\"]*)script:#iU", $txt)) $image_safe = false; if (preg_match("#([a-z]*)=([\`\'\"]*)javascript:#iU", $txt)) $image_safe = false; if (preg_match("#([a-z]*)=([\'\"]*)vbscript:#iU", $txt)) $image_safe = false; if (preg_match("#(<[^>]+)style=([\`\'\"]*).*expression\([^>]*>#iU", $txt)) $image_safe = false; if (preg_match("#(<[^>]+)style=([\`\'\"]*).*behaviour\([^>]*>#iU", $txt)) $image_safe = false; if (preg_match("#</*(applet|link|style|script|iframe|frame|frameset)[^>]*>#i", $txt)) $image_safe = false; return $image_safe; } (с) ПХП-Фьюжн |
Сообщ.
#6
,
|
|
|
Товарищи модеры, почистите все наверно.
antonn, чего ты доказываешь непонятно? Мы об одном и том же говорим. Да можно(и нужно) проверять расширения, никто этого не отрицает. Все вышесказанное обозначает что функции getimagesize недостаточно для проверки входных данных, и не более. Что ты доказываешь? Надеюсь все почистят, с вопросами обращайся в приват. Хватит тему засорять. |
Сообщ.
#7
,
|
|
|
Цитата Что ты доказываешь? Я предлагаю. Там чуть выше поста есть немножко кода, можно пообсуждать его, на предмет проверки вшивости картики в контексте недостаточности проверки функцией getimagesize() и расширения закачиваемого файла... ЗЫ а вообще я просил объяснить, в чем хак заключался, и, если честно, так и не понял... |
Сообщ.
#8
,
|
|
|
Цитата antonn @ В том, что залить могут ЛЮБОЙ файл, и даже с расширением PHP. Естесственно, при проверке такой "картинки" получим в худшем случае дефейс.а вообще я просил объяснить, в чем хак заключался, и, если честно, так и не понял... Я бы всё же сказал, что уязвимость не в getimagesize (она выполняет именно то, чего от неё добиваются) - уязвимость в головах. Находятся идиоты, которые делают include $image вместо вывода банальной ссылки на картинку - объявим функцию include уязвимой? Цитата antonn @ Функция - бред воспалённого разума. Там чуть выше поста есть немножко кода, можно пообсуждать его, на предмет проверки вшивости картики в контексте недостаточности проверки функцией getimagesize() и расширения закачиваемого файла... Добавлено Цитата Pr0[)!9Y @ Да нифига не об одном и том же.Мы об одном и том же говорим. Цитата Pr0[)!9Y @ Отрицает он это или нет, но приведённый им код никакого отношения к проверке расширения не имеет. Да можно(и нужно) проверять расширения, никто этого не отрицает. |
Сообщ.
#9
,
|
|
|
ИМХО, если работать на ПХП - то лучшего для работы с графикой чем IMagick (MagickWand) ещё не придумано (Её identify уж точно прально отличит картинку от бредоносного кода)
Правда пока не знаю, часто ли эта радость у масс-хостеров стоИт. ЗЫ. а насчет проверок на тип данных: почему никто про mime-types не вспомнил..? проверка конечно не стопроцентная, но доверия должна вызывать не меньше, чем правильный екстеншн. |
Сообщ.
#10
,
|
|
|
SiMM
Цитата В том, что залить могут ЛЮБОЙ файл, и даже с расширением PHP. Естесственно, при проверке такой "картинки" получим в худшем случае дефейс. спасибо, мне уже объяснили, я просто даже не представил, что валидность картинки проверяют через getimagesize(). Цитата Функция - бред воспалённого разума. Ишо как воспаленного... |
Сообщ.
#11
,
|
|
|
Цитата Asthma @ Ничего она не отличит, да и совершенно бесполезна, если речь лишь о том, чтобы вместо залитой картинки не выполнился код. ИМХО, если работать на ПХП - то лучшего для работы с графикой чем IMagick (MagickWand) ещё не придумано (Её identify уж точно прально отличит картинку от бредоносного кода) |
Сообщ.
#12
,
|
|
|
Цитата SiMM Ничего она не отличит ну-ну... Цитата SiMM о том, чтобы вместо залитой картинки не выполнился код Приведите, пожалуйста пример файла отвечающего этим двум критериям: |
Сообщ.
#13
,
|
|
|
Цитата Asthma @ Это Вы о чём, батенька? Ваш "идентифай", если речь о verify_image, лает даже на валидные картинки, при этом не замечая "невалидных".Идентифай скажет, что это _валидная_ картинка (соответствие майм-тайпу, правильный-читаемый контент) Пример номер раз. Картинка, которая функцией verify_image вполне считается допустимой, однако стоит дать ей расширение php и положить на сервер - и она выдаст результат phpinfo http://img80.imageshack.us/img80/7313/av56517vx4.jpg Пример номер два. Картинка, которая функцией verify_image считается невалидной без каких либо на то оснований. http://img84.imageshack.us/img84/5640/av56517lw8.jpg На самом деле никаких невалидных картинок не бывает - бывают кривые руки программистов, которые позволяют выполнять на сервере код, чего позволять не должни. И содерижимое самих файлов при этом не имеет никакого значения. Добавлено Кстати второй пример - ещё большая жопа для пользователей. Потому что у него не должна болеть голова о том, насколько криворук вэбмастер и почему заливая свою любимую картинку вот уже в сотый раз вэбсервер отказывает её сохранять. |
Сообщ.
#14
,
|
|
|
SiMM
а как через av56517vx4.jpg вывести это phpinfo? мне показывает просто картинку... у меня пропускает обе... |
Сообщ.
#15
,
|
|
|
Цитата antonn @ а как через av56517vx4.jpg вывести это phpinfo? Цитата SiMM @ однако стоит дать ей расширение php и положить на сервер - и она выдаст результат phpinfo |