![>](style_images/1/nav_m.gif)
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.219.17.88] |
![]() |
|
Прикр. сообщ.
#1
,
|
|
|
Сюда скидываем следующее:
1. Описание дырки 2. Способы устранения/минимизации последствий/защиты. Перед постом обязательно почитать BugTrack соответствующего языка. Если соберетесь публиковать эксплойт (рабочий код), то лучше скиньте его сначала мне. Во избежание, так сказать. |
Сообщ.
#1
,
|
|
|
Недостаточная проверка данных при использовании функции getimagesize().
Язык: PHP 4/5 Источник: прверка рисунка на вшивость Классификация: выполнение произвольного кода Функция: getimagesize() Описание: Функция getimagesize не совсем корректно обрабатывает графические файлы, проверка осуществляется на основе начала файла (содержащего служебную информацию) к тому же независимо от расширения файла. Существует возможность дописать в конец файла произвольный PHP код. При этом изображение будет распознано как корректное. Опасность заключается в том, что проверка загруженных графических файлов на основе одной лишь функции getimagesize позволяет закачать любой PHP файл. Пример: Любое GIF изображение открывается каким либо текстовым редактором, в конец дописывается PHP код, файл переименовывается в somefile.php и закачивается на сервер, при недостаточной проверке данных файл окажется загруженным с расширением PHP, что позволит его исполнить. Защита: Дополнительно проверять входные файлы на корректность имени. Один из вариантов: ![]() ![]() if(preg_match('/\.(gif|png|jpg|jpeg)$/i',$_FILES['userfile']['name'])){ //Необходимые операции } Пост призван указать на аккуратность использования этой функции, а не на её неверность. |
![]() |
Сообщ.
#2
,
|
|
А кто сказал, что getimagesize() должна проверять вшивость картинки? Она возвращает размер и предполагаемый тип. Баг или дыра в данном случае не в языке, а в программисте, который использует эту функцию не по назначению.
|
Сообщ.
#3
,
|
|
|
поставила на отложенное удаление все, кроме поста Pr0[)!9Y и замечания от Miscђka
ЗЫ: предложения по названию принимаются... Добавлено И еще для размышления: Цитата nerezus @ Защита: исправить регэксп на /^[^.]+\.(gif|png|jpg|jpeg)$/i Далеко ходить не надо: файл с именем blah.ext1.ext2, где в апаче не зарегана ext2, будет работать так, как будто .ext2 в имени нету. Например blah.php.lol будет обработан хендлером для пхп. |
Сообщ.
#4
,
|
|
|
Цитата Ну это немного не то.Защита: исправить регэксп на /^[^.]+\.(gif|png|jpg|jpeg)$/i Для закачек: либо давать закачивать файлы только с определенными расширениями(т.е. все, что не разрешено - запрещено), либо менять имена файлов при закачке. Однако даже если есть возможность закачать картинку, то в нее можно запихать свой код(поэтому некоторые движки держат картинки/аватары в базе). И если движок содержит локальный инклюд, то.... можно сказать, что инклюд становится нелокальным =) Таким образом, к примеру, была поломана mazafaka.ru ![]() Сообщения были разделены в тему "проверка данных при использовании функции getimagesize()" |
Сообщ.
#5
,
|
|
|
Здравствуйте,
у меня проблема: Я создаю папки которые были с помощью Php ![]() ![]() mkdir($_SERVER['DOCUMENT_ROOT']."/galerypath/".$newMenuItem_path, 0777); Вот папки которые таким образом создаются, они имеют следующие параметры: ![]() ![]() drwxrwxrwx 8 hostnam hostnam 4096 May 31 09:27 . drwxr-xr-x 18 hostnam hostnam 4096 May 30 10:26 .. drwxr-xr-x 3 99 99 4096 May 29 12:16 ..odnotonni1 drwxr-xr-x 3 99 99 4096 May 29 14:43 1111 drwxr-xr-x 3 99 99 4096 May 30 09:54 odnoton drwxr-xr-x 3 99 99 4096 May 29 12:25 odnotonni drwxrwxrwx 3 hostnam hostnam 4096 May 29 15:16 odton drwxr-xr-x 3 99 99 4096 May 29 12:26 ondnotonni Папка odton была создана через фтп. С ней все нормально. Но другие папки были созданы через php команду. К эитм папкам созданым програмным путем из скриптов есть доступ (то есть я могу сохранять и удалять внутри их файлы). К тем же папкам нет доступа по фтп. То есть я не могу изменять их параметры (доступ на запись и т.д.). И самое главное: Я не могу из фтп сохранить в них файлы. Не могу также по фтп удалить эти папки и удалить файлы из них. |
Сообщ.
#6
,
|
|
|
Давно не общался с никсами, но что-то ещё помню...
rwxr-xr-x владелец может всё, остальные только читать и исполнять ... владельцы у odton'а и остальных папок - разные пользователи, потому что пхп и фтп сервера (или правильнее сказать "демоны"? поправьте плиз) запускаются от разных пользователей... отсюда и все неурядицы... .... вобщето в баг репорт имхо неверно писать это... где здесь ПХПшный баг? |
Сообщ.
#7
,
|
|
|
lyubchick, бывает такое. Не разбирался с чем это связано, но указание прав при создании у меня что-то тоже не всегда работает. Вообщем так:
1) попробуй chmod 2) umask(0000); Добавлено А тема действительно должна быть отдельной, по крайней мере до выяснения. |
Сообщ.
#8
,
|
|
|
В данном случае просто фтп сервер сохраняет файлы от одного пользователя, веб сервер от того под которым запущен, вот они и ставят влядельцев так. Высталяй права, а так как группы разные, то надо выставлять полные права, что совсем не безопасно, можно использовать chown для смены владельца. Но это может сделать только владелец или рут.
|