Запретить загрузку исполняемых файлов. (nginx, phpfpm.)

Обсуждение настройки и работы сервисов, резервирования, сетевых настроек и вопросов безопасности ОС для молодых и начинающих системных администраторов.

Модераторы: SLEDopit, Модераторы разделов

BigBrother
Сообщения: 436
Статус: ¯\_(ツ)_/¯
ОС: linux based

Запретить загрузку исполняемых файлов.

Сообщение BigBrother »

Всем привет.

Задача 1: запретить загрузку исполняемых файлов на сервер (как я понимаю, имеется ввиду, запрет на загрузку файлов, с установленным битом "x")
Задача 2: разрешить загружать файлы на сервер, только если файл является картинкой.

Это можно сделать средствами nginx`а, или только через коды php, которые будут проверять эти условия??
Используется nginx + phpfpm.
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 21360
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Запретить загрузку исполняемых файлов.

Сообщение Bizdelnick »

BigBrother писал(а):
09.10.2013 17:28
Задача 1: запретить загрузку исполняемых файлов на сервер (как я понимаю, имеется ввиду, запрет на загрузку файлов, с установленным битом "x")

Если файл загружается через php, то бит x может появиться только при условии, что php-скрипт его добавит. Так что, скорее всего, Вы что-то понимаете не так. Я бы уточнил у того, кто такую задачу поставил, что он имел в виду.

BigBrother писал(а):
09.10.2013 17:28
Задача 2: разрешить загружать файлы на сервер, только если файл является картинкой.

Только через php.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Запретить загрузку исполняемых файлов.

Сообщение drBatty »

BigBrother писал(а):
09.10.2013 17:28
Это можно сделать средствами nginx`а, или только через коды php, которые будут проверять эти условия??

это лучше делать средствами php. Однако. Не существует надёжного критерия отличать картинки от НЕ картинок.

ИМХО вам достаточно будет вот это вот: http://www.php.net/manual/ru/function.finfo-file.php

Что касается "исполняемых", то да Bizdelnick абсолютно прав -- ВСЕ загруженные файлы НЕ исполняемые. Значение umask для обычных файлов всегда 0666, т.е. бит x для регулярных файлов сброшен (внешний umask может дополнительно сбрасывать некоторые биты, по умолчанию 0022, или go-w) И только некоторые специальные программы меняют данное поведение (вроде gcc, который обычно и создаёт исп. файлы).
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Аватара пользователя
Ленивая Бестолочь
Бывший модератор
Сообщения: 2760
ОС: Debian; gentoo

Re: Запретить загрузку исполняемых файлов.

Сообщение Ленивая Бестолочь »

drBatty писал(а):
09.10.2013 21:03
Не существует надёжного критерия отличать картинки от НЕ картинок.

ну спорный вопрос.
я бы сказал, что можно применить любую функцию из gd, например ту, что возвращает размеры изображений.
или exif_*
только вот не факт, что в конец файла не дописали <? код на пхп ?>
а выполнится ли он - вопрос к настройке сервера.
Солнце садилось в море, а люди с неоконченным высшим образованием выбегали оттуда, думая, что море закипит.
Спасибо сказали:
Ism
Сообщения: 1261
Статус: Никто, по сути быдло

Re: Запретить загрузку исполняемых файлов.

Сообщение Ism »

Для веб серверов есть плагин определения типа файла по mime, насколько я знаю туда входит и анализ начала файла. Исполняемые файлы в начале имеют маркировку ELF и так далее, можно резать по этому признаку. К картинках точно такой маркировки нет
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Запретить загрузку исполняемых файлов.

Сообщение drBatty »

Ism писал(а):
15.10.2013 04:43
Исполняемые файлы в начале имеют маркировку ELF и так далее, можно резать по этому признаку. К картинках точно такой маркировки нет

такой нет, есть другие признаки, по которым можно определить (попытаться) mime.
Ленивая Бестолоч... писал(а):
15.10.2013 02:06
Не существует надёжного критерия отличать картинки от НЕ картинок.

ну спорный вопрос.

спорный вопрос -- что считать "картинками"...
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 21360
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Запретить загрузку исполняемых файлов.

Сообщение Bizdelnick »

Ism писал(а):
15.10.2013 04:43
Для веб серверов есть плагин определения типа файла по mime, насколько я знаю туда входит и анализ начала файла. Исполняемые файлы в начале имеют маркировку ELF и так далее, можно резать по этому признаку. К картинках точно такой маркировки нет

В nginx нет плагинов, если что.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Ism
Сообщения: 1261
Статус: Никто, по сути быдло

Re: Запретить загрузку исполняемых файлов.

Сообщение Ism »

drBatty писал(а):
15.10.2013 06:35
Ism писал(а):
15.10.2013 04:43
Исполняемые файлы в начале имеют маркировку ELF и так далее, можно резать по этому признаку. К картинках точно такой маркировки нет

такой нет, есть другие признаки, по которым можно определить (попытаться) mime.
Ленивая Бестолоч... писал(а):
15.10.2013 02:06
Не существует надёжного критерия отличать картинки от НЕ картинок.

ну спорный вопрос.

спорный вопрос -- что считать "картинками"...

Картинки имеют определённый заголовок, теоретически можно определить просто пытаясь открыть их для просмотра скриптом, в случае ошибки это не картинка, правда это большая нагрузка на сервер
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 21360
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Запретить загрузку исполняемых файлов.

Сообщение Bizdelnick »

К чему велосипеды?
http://www.php.net/manual/ru/book.fileinfo.php
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Запретить загрузку исполняемых файлов.

Сообщение drBatty »

Ism писал(а):
15.10.2013 12:32
Картинки имеют определённый заголовок
что угодно может (не)иметь какой угодно заголовок.

Ism писал(а):
15.10.2013 12:32
теоретически можно определить просто пытаясь открыть

программы пишутся в расчёте на картинки, а не на что угодно. программа может не открыть картинку и открыть некартинку. Это допустимо.

Советовать "открывать всё подряд" тоже самое, что советовать "есть всё подряд".

Bizdelnick
см. самое начало темы, #3 Запретить загрузку исполняемых файлов.
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 21360
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Запретить загрузку исполняемых файлов.

Сообщение Bizdelnick »

Действительно, извиняюсь за дублирование.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Ism
Сообщения: 1261
Статус: Никто, по сути быдло

Re: Запретить загрузку исполняемых файлов.

Сообщение Ism »

drBatty писал(а):
15.10.2013 13:26
Ism писал(а):
15.10.2013 12:32
Картинки имеют определённый заголовок
что угодно может (не)иметь какой угодно заголовок.

Ism писал(а):
15.10.2013 12:32
теоретически можно определить просто пытаясь открыть

программы пишутся в расчёте на картинки, а не на что угодно. программа может не открыть картинку и открыть некартинку. Это допустимо.

Советовать "открывать всё подряд" тоже самое, что советовать "есть всё подряд".

Bizdelnick
см. самое начало темы, #3 Запретить загрузку исполняемых файлов.

Что касается запрета загрузки исполняемых файлов , это noexec в fstab , если это чтоб не дать пользователям чтото запускать, то noexec на папку home и не надо костылей
Более того, исполняемые файлы как правило не имеют расширения или .exe , можно рубить по этому признаку и не надо костылей
Спасибо сказали:
Аватара пользователя
SLEDopit
Модератор
Сообщения: 4824
Статус: фанат консоли (=
ОС: GNU/Debian, RHEL

Re: Запретить загрузку исполняемых файлов.

Сообщение SLEDopit »

Ism писал(а):
15.10.2013 14:05
Что касается запрета загрузки исполняемых файлов , это noexec в fstab , если это чтоб не дать пользователям чтото запускать, то noexec на папку home и не надо костылей
Более того, исполняемые файлы как правило не имеют расширения или .exe , можно рубить по этому признаку и не надо костылей
Ну вообще, полностью от запуска это не спасёт. Замечательный /lib/ld-linux.so.2 может всё (: Да и запуск скриптов как bash ./script.sh тоже работает.
Да и к тому же, чтобы веб-серверу выполнить php скрипт, последний совсем не должен иметь execute бит. Ну если оно работает через mod_php или через php_fpm во всяком случае. Как там с cgi я запамятовал.
UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code.
Спасибо сказали:
Ism
Сообщения: 1261
Статус: Никто, по сути быдло

Re: Запретить загрузку исполняемых файлов.

Сообщение Ism »

SLEDopit писал(а):
15.10.2013 14:36
Ism писал(а):
15.10.2013 14:05
Что касается запрета загрузки исполняемых файлов , это noexec в fstab , если это чтоб не дать пользователям чтото запускать, то noexec на папку home и не надо костылей
Более того, исполняемые файлы как правило не имеют расширения или .exe , можно рубить по этому признаку и не надо костылей
Ну вообще, полностью от запуска это не спасёт. Замечательный /lib/ld-linux.so.2 может всё (: Да и запуск скриптов как bash ./script.sh тоже работает.
Да и к тому же, чтобы веб-серверу выполнить php скрипт, последний совсем не должен иметь execute бит. Ну если оно работает через mod_php или через php_fpm во всяком случае. Как там с cgi я запамятовал.

Скрипты рубятся по заголовку в начале файла
Просто предзагружаете 1000 байт файла , анализируете на ключевые слова, дальше или продолжать грузить или отбрасывать. PHP не исключение
Подавляющее большинство файлов будет распознано правильно
Исполняемые файлы имеют определённую структуру и её не скрыть,
Спасибо сказали:
Аватара пользователя
Ленивая Бестолочь
Бывший модератор
Сообщения: 2760
ОС: Debian; gentoo

Re: Запретить загрузку исполняемых файлов.

Сообщение Ленивая Бестолочь »

drBatty писал(а):
15.10.2013 06:35
спорный вопрос -- что считать "картинками"...

вот это нифига не спорный вопрос. картинками считается то, что в рамках данного сайта есть картинки.
у всех движков/концепций/требований сайтов обычно готов ответ на вопрос - что мы считаем картинкой.
кроме того мой способ работает с большинством форматов изображений, кроме svg, который практически никто не жалует в виде загружаемого формата по понятным причинам.
Bizdelnick писал(а):
15.10.2013 12:42
К чему велосипеды?
http://www.php.net/manual/ru/book.fileinfo.php

определение типа файла по майму не годится никак. тогда можно будет загрузить

Код: Выделить всё

<немного байт jpeg чтобы обмануть майм>
<?php вредоносный код?>
Солнце садилось в море, а люди с неоконченным высшим образованием выбегали оттуда, думая, что море закипит.
Спасибо сказали:
Ism
Сообщения: 1261
Статус: Никто, по сути быдло

Re: Запретить загрузку исполняемых файлов.

Сообщение Ism »

Ленивая Бестолочь писал(а):
15.10.2013 23:45
drBatty писал(а):
15.10.2013 06:35
спорный вопрос -- что считать "картинками"...

вот это нифига не спорный вопрос. картинками считается то, что в рамках данного сайта есть картинки.
у всех движков/концепций/требований сайтов обычно готов ответ на вопрос - что мы считаем картинкой.
кроме того мой способ работает с большинством форматов изображений, кроме svg, который практически никто не жалует в виде загружаемого формата по понятным причинам.
Bizdelnick писал(а):
15.10.2013 12:42
К чему велосипеды?
http://www.php.net/manual/ru/book.fileinfo.php

определение типа файла по майму не годится никак. тогда можно будет загрузить

Код: Выделить всё

<немного байт jpeg чтобы обмануть майм>
<?php вредоносный код?>


Ну для хакера не проблема, но кому надо морочиться, чтоб загрузить на сервер картинку
Спасибо сказали:
Аватара пользователя
Ленивая Бестолочь
Бывший модератор
Сообщения: 2760
ОС: Debian; gentoo

Re: Запретить загрузку исполняемых файлов.

Сообщение Ленивая Бестолочь »

ну суть в том, чтоб загрузить на сервер исполняемый код и поэксплойтить что-то, что позволяет его выполнить.
к сожалению пхп игнорирует всё вне тегов <?php ?>, так что это реальный сценарий.

мне больно это говорить, но я съел пару собак в пхп, конкретно в рефакториге кусабы.
Солнце садилось в море, а люди с неоконченным высшим образованием выбегали оттуда, думая, что море закипит.
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 21360
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Запретить загрузку исполняемых файлов.

Сообщение Bizdelnick »

Ленивая Бестолочь писал(а):
15.10.2013 23:45
Bizdelnick писал(а):
15.10.2013 12:42
К чему велосипеды?
http://www.php.net/manual/ru/book.fileinfo.php

определение типа файла по майму не годится никак. тогда можно будет загрузить

Код: Выделить всё

<немного байт jpeg чтобы обмануть майм>
<?php вредоносный код?>


Речь шла о задаче №2. Каков был смысл задачи №1, так и осталось для нас неизвестным. Если предположить, что необходимо исключать такие вот варианты, то можно после проверки fileinfo проводить проверку на вхождение строки '<?php'. Но что-то мне подсказывает, что и это не панацея. Как вариант - прогонять все загружаемые файлы каким-нибудь clamscan'ом, он поумнее будет.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Запретить загрузку исполняемых файлов.

Сообщение drBatty »

SLEDopit писал(а):
15.10.2013 14:36
Замечательный /lib/ld-linux.so.2 может всё

У меня не работает. ЧЯДНТ?
SLEDopit писал(а):
15.10.2013 14:36
Да и запуск скриптов как bash ./script.sh тоже работает.

ещё-бы не работал.
Ism писал(а):
15.10.2013 15:20
Скрипты рубятся по заголовку в начале файла
Просто предзагружаете 1000 байт файла , анализируете на ключевые слова, дальше или продолжать грузить или отбрасывать. PHP не исключение
Подавляющее большинство файлов будет распознано правильно

в безопасности нет понятие "подавляющее большинство". Достаточно ОДНОЙ дыры, и это -- РЕШЕТО.

Вы определитесь: вы про безопасность, или просто тип файла нужен? Если последнее, сссылку уже дали. Дважды. Если первое -- NoWay.

Всё, тема исчерпана.

Ленивая Бестолоч... писал(а):
15.10.2013 23:45
вот это нифига не спорный вопрос. картинками считается то, что в рамках данного сайта есть картинки.

Ленивая Бестолоч... писал(а):
15.10.2013 23:45
определение типа файла по майму не годится никак. тогда можно будет загрузить
Код
<немного байт jpeg чтобы обмануть майм>

я один вижу взаимоисключающие параграфы?
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Запретить загрузку исполняемых файлов.

Сообщение drBatty »

Ленивая Бестолоч... писал(а):
16.10.2013 01:34
к сожалению пхп игнорирует всё вне тегов <?php ?>, так что это реальный сценарий.

К счастью
Hint: перед тем, как отдать какую-то внешнюю гадость на выполнение (php), уберите из неё все <?php.*?>
Bizdelnick писал(а):
16.10.2013 09:57
что и это не панацея.

не панацея. По уму надо не обмазываться антивирусами, а просто НЕ ИСПОЛЬЗОВАТЬ всякую гадость извне. А если и использовать, то только что-то вроде intval(HEX), или скажем выдернуть из строки ТОЛЬКО то, что соответствует /[a-z_]{1,32}/.

А если вы выполняете какую-то внешнюю гадость -- вы типичный ССЗБ.
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Аватара пользователя
Ленивая Бестолочь
Бывший модератор
Сообщения: 2760
ОС: Debian; gentoo

Re: Запретить загрузку исполняемых файлов.

Сообщение Ленивая Бестолочь »

Bizdelnick писал(а):
16.10.2013 09:57
проводить проверку на вхождение строки '<?php'.

drBatty писал(а):
16.10.2013 11:40
уберите из неё все <?php.*?>

господа, не забывайте, что тэги пхп могут выглядеть как <? xxx ?>
а такое встречается наверно во многих картинках в порядке вещей.
Bizdelnick писал(а):
16.10.2013 09:57
Как вариант - прогонять все загружаемые файлы каким-нибудь clamscan'ом, он поумнее будет.

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

да :3
в первом случае я говорю о необходимости смотреть в тз в процессе буйного кодинка/настройки серверов. во втором случае - привожу способ обмануть fileinfo.
drBatty писал(а):
16.10.2013 11:40
А если вы выполняете какую-то внешнюю гадость -- вы типичный ССЗБ.

более чем согласен. к сожалению современные проэкты/движки, особенно не опенсорц иногда поражают мечом в глаз.
та же кусаба перегенеряет(!) htacces(!!) по любому поводу (facehoof). не удивлюсь если можно заставить её выполнять картинки.
Солнце садилось в море, а люди с неоконченным высшим образованием выбегали оттуда, думая, что море закипит.
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Запретить загрузку исполняемых файлов.

Сообщение drBatty »

Ленивая Бестолоч... писал(а):
17.10.2013 01:29
господа, не забывайте, что тэги пхп могут выглядеть как <? xxx ?>
это и имелось ввиду.
Ленивая Бестолоч... писал(а):
17.10.2013 01:29
а такое встречается наверно во многих картинках в порядке вещей.

нет.

вероятность <? составляет 1/65536, но после этой редкой комбинации должен идти осмысленный текст, хотя-бы несколько байт ASCII. Даже 4 осмысленных(хоть как-то) символа посл <? -- уже повод насторожится, ибо вероятность такого равна 1/1048576, и мало в каких картинках такое вообще есть.

И да, современный php по дефолту не умеет <? выполнять, мой только <?php выполняет. Вероятность такое встретить равна 1/1099511627776, т.е. для картинок меньше 1Мб <1/1099511.

IRL, если встречается такая непонятка, можно показать юзеру Error 503, и отправить администратору мессагу о попытке взлома.

Ленивая Бестолоч... писал(а):
17.10.2013 01:29
нуу, может быть. возможно есть возможность прогнать через интерпретрато

это долго, и не нужно.
Ну и скажем в самом интерпретаторе может быть дыра, которая сработает и без исполнения (например переполнение буфера).
Ленивая Бестолоч... писал(а):
17.10.2013 01:29
более чем согласен. к сожалению современные проэкты/движки, особенно не опенсорц иногда поражают мечом в глаз.

я знаю. ИМХО это специально так делается. Замаскированный бэкдор.

Ленивая Бестолоч... писал(а):
17.10.2013 01:29
та же кусаба перегенеряет(!) htacces(!!) по любому поводу

юзайте дальше. Вы сами всё понимаете.
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Аватара пользователя
SLEDopit
Модератор
Сообщения: 4824
Статус: фанат консоли (=
ОС: GNU/Debian, RHEL

Re: Запретить загрузку исполняемых файлов.

Сообщение SLEDopit »

А почему нельзя загружать сторонние файлы в директорию, в которой запрещено исполнение скриптов?
Казалось бы это гораздо проще и логичнее, чем 100500 проверок на валидность и всё равно сомнительный результат на выходе.
UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code.
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 21360
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Запретить загрузку исполняемых файлов.

Сообщение Bizdelnick »

drBatty писал(а):
17.10.2013 10:37
вероятность <? составляет 1/65536, но после этой редкой комбинации должен идти осмысленный текст, хотя-бы несколько байт ASCII. Даже 4 осмысленных(хоть как-то) символа посл <? -- уже повод насторожится, ибо вероятность такого равна 1/1048576, и мало в каких картинках такое вообще есть.

Вы сильно занижаете вероятность. Не забывайте, что картинка может быть размером в несколько МиБ, и надо считать вероятность появления такой последовательности в любом месте файла.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
Ленивая Бестолочь
Бывший модератор
Сообщения: 2760
ОС: Debian; gentoo

Re: Запретить загрузку исполняемых файлов.

Сообщение Ленивая Бестолочь »

drBatty писал(а):
17.10.2013 10:37
нет.

Код: Выделить всё

rakul@lucky-star ~/cheerilee/unsort $ grep '<?' * | wc -l
1189
rakul@lucky-star ~/cheerilee/unsort $ ls | wc -l
1402
rakul@lucky-star ~/cheerilee/unsort $

drBatty писал(а):
17.10.2013 10:37
Даже 4 осмысленных(хоть как-то) символа посл <? -- уже повод насторожится, ибо вероятность такого равна 1/1048576, и мало в каких картинках такое вообще есть.

мне лень проверять, наверно так и есть. хотя под ваш критерий, скорее всего попадёт какая-нибудь шляпа заполненная небольшим колличеством одинаковых цветов. в любом случае мысль интересная, странно что готовой реализации такой не встречалось.
drBatty писал(а):
17.10.2013 10:37
И да, современный php по дефолту не умеет <? выполнять, мой только <?php выполняет.

Код: Выделить всё

root@quake:~# cat /tmp/1.php
<? echo 'ok';
root@quake:~# php /tmp/1.php
okroot@quake:~#
root@quake:~# php --version
PHP 5.3.3-7+squeeze15 with Suhosin-Patch (cli) (built: Mar  4 2013 13:11:17)
Copyright (c) 1997-2009 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies
    with Suhosin v0.9.32.1, Copyright (c) 2007-2010, by SektionEins GmbH

уверен, что и в стейбле будет ровно то же самое. и в большинстве других дистрибутивов тоже.
drBatty писал(а):
17.10.2013 10:37
IRL, если встречается такая непонятка, можно показать юзеру Error 503, и отправить администратору мессагу о попытке взлома.

это да. если способ имеет мало ложных срабатываний.
drBatty писал(а):
17.10.2013 10:37
я знаю. ИМХО это специально так делается. Замаскированный бэкдор.

ну бэкдор врятли. слишком много надо нафигарить откровенного быдлокода, чтобы среди него замаскировать бэкдор. просто лапша.
drBatty писал(а):
17.10.2013 10:37
юзайте дальше. Вы сами всё понимаете.

там где я это видел я переписал уже, наверно >50% кусабы, ещё 70% из оставшихся 50% выпилили за ненадобностью, и сейчас она похожа на вменяемый движок. по крайней мере таких откровенных бредней там нет.

а так вообще занятно - почитаешь всякие best practice по вебу. и там тебе рассказывают о том, как коспические корабли. например PDO. круто, удобно, безопасно. почти не встречается в дикой природе :3 почемуу?
Солнце садилось в море, а люди с неоконченным высшим образованием выбегали оттуда, думая, что море закипит.
Спасибо сказали:
Ism
Сообщения: 1261
Статус: Никто, по сути быдло

Re: Запретить загрузку исполняемых файлов.

Сообщение Ism »

Ну если вопрос о взломе, то антивирусы для проверки используют песочницу, дают изолированную среду файлу , если он запускается и ведёт себя не так, это вирус. Но это очень затратно.
Кроме того php не пуп земли. Я плохо знаю вебпрограммирование, но есть cgi http://ru.wikipedia.org/wiki/CGI и его можно написать на любом языке

Поэтому нужно разделить безопасность сайта и безопасность загрузки.
Тут много вариантов
http://habrahabr.ru/qa/3476/
Кажется есть загрузка через html5 , у вконтакта написано, что это у них работает при добавлении на стену
Спасибо сказали:
Аватара пользователя
Ленивая Бестолочь
Бывший модератор
Сообщения: 2760
ОС: Debian; gentoo

Re: Запретить загрузку исполняемых файлов.

Сообщение Ленивая Бестолочь »

Ism писал(а):
18.10.2013 01:16
есть cgi http://ru.wikipedia.org/wiki/CGI и его можно написать на любом языке

cgi сейчас практически не используется, поскольку это очень затратный и неэффективный метод. к тому же по безопастности там своих косяков овер дофига. хорошим механизмом является fastcgi.
просто проблема в том, что пхп - пуп земли. если вы не занимаетесь написанием движка с нуля, то с огромной долей вероятности, стремящейся к абсолютной у вас будет резкий приступ пхп.
Ism писал(а):
18.10.2013 01:16
Кажется есть загрузка через html5 , у вконтакта написано, что это у них работает при добавлении на стену

совершенно не важно, каким именно образом файл попадёт на ваш сервер - через html5 или нет, хоть через фтп.
на самом деле то, что мы обсуждаем решается выборочным запретом оверрайдинга настроек .htaccess-ом.
просто с доктором завязалось интересное обсуждение о том, как можно выявить, что в загруженной картинке есть вредоносный код на пхп.
мне интересно, хотя я у меня в .htaccess-е никто не поковыряется и я относительно спокоен, но я бы, например, банил юзера при таком срабатывании.
Солнце садилось в море, а люди с неоконченным высшим образованием выбегали оттуда, думая, что море закипит.
Спасибо сказали:
Ism
Сообщения: 1261
Статус: Никто, по сути быдло

Re: Запретить загрузку исполняемых файлов.

Сообщение Ism »

Ленивая Бестолочь писал(а):
18.10.2013 02:12
просто с доктором завязалось интересное обсуждение о том, как можно выявить, что в загруженной картинке есть вредоносный код на пхп.

Если php скрипт, значит определяется по ключевым словам, загоняете словарь в mysql, по regex выдергиваете из картинки подозрительные комбинации, наверняка для php есть характерные. При совпадении отбросить картинку, чтоб было меньше ложных срабатываний уточнить условия

В mysql есть fulltext индексы, при запросе можно указывать перечень ключевых слов. Должно работать быстро. Словари можно пополнять.
Таким образом можно резать на подлёте спрятанные скрипты ещё и с определением типа.

Такое не прокатит с бинарниками, но их на веб сервер бессмысленно загружать, нет среды запуска.
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Запретить загрузку исполняемых файлов.

Сообщение drBatty »

Bizdelnick писал(а):
17.10.2013 11:35
Вы сильно занижаете вероятность. Не забывайте, что картинка может быть размером в несколько МиБ, и надо считать вероятность появления такой последовательности в любом месте файла.

читайте внимательнее. Я это учёл конечно. Даже с запасом, ибо мест по 2 символа в файле в 1048576 не 1048576, как я считал, а всего 1048575 (:

Предвижу также ваше возражение про "неслучайный шум в картинках". Нет, в картинках именно СЛУЧАЙНЫЙ шум, в смысле его статистического распределения. Можете сами проверить.

В общем и целом, IRL вероятность встретить в картинке осмысленный патерн хотя-бы в 6 символов, строго равна нулю.
Ленивая Бестолоч... писал(а):
17.10.2013 21:35
rakul@lucky-star ~/cheerilee/unsort $ grep '<?' * | wc -l

что это?
Ленивая Бестолоч... писал(а):
17.10.2013 21:35
мне лень проверять, наверно так и есть. хотя под ваш критерий, скорее всего попадёт какая-нибудь шляпа заполненная небольшим колличеством одинаковых цветов

любой бит в сжатом файле имеет энтропию равную 1. Как ответ блондинки: 50/50. Если жать чёрный квадрат Малевича, получится всё равно 50/50, только размер будет меньше. (естественно заголовки я не считаю).

С кодом всё иначе -- первые биты ЛЮБЫМИ просто не сделать. Разве что в C с макросами, да и то
1. не любые
2. макросы надо сначала определить
Ленивая Бестолоч... писал(а):
17.10.2013 21:35
уверен, что и в стейбле будет ровно то же самое. и в большинстве других дистрибутивов тоже.

ну дык исправьте, раз ВЫ вынуждены работать с такими кривыми движками. Оно жеж ВАМ надо.
УМВР, Патрег Бох.
Ленивая Бестолоч... писал(а):
17.10.2013 21:35
ну бэкдор врятли. слишком много надо нафигарить откровенного быдлокода, чтобы среди него замаскировать бэкдор. просто лапша.

IRL бэкдор это вовсе не "гора былокода", достаточно в нужном месте "забыть" "запятую поставить".
гора быдлокода тоже есть конечно, но лишь для маскировки основной ошибки.
Ленивая Бестолоч... писал(а):
17.10.2013 21:35
а так вообще занятно - почитаешь всякие best practice по вебу. и там тебе рассказывают о том, как коспические корабли. например PDO. круто, удобно, безопасно. почти не встречается в дикой природе :3 почемуу?

PDO сравнительно новое. Кто же будет бесплатно ВСЁ переписывать, если оно и так работает???
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Запретить загрузку исполняемых файлов.

Сообщение drBatty »

Ism писал(а):
18.10.2013 01:16
Ну если вопрос о взломе, то антивирусы для проверки используют песочницу, дают изолированную среду файлу , если он запускается и ведёт себя не так, это вирус. Но это очень затратно.

не используют.
не дают.
не запускают.
Если речь идёт о чём-то, что отличается от *.EXE.
Ism писал(а):
18.10.2013 01:16
Кроме того php не пуп земли. Я плохо знаю вебпрограммирование, но есть cgi http://ru.wikipedia.org/wiki/CGI и его можно написать на любом языке

в том-то и дело, что в CGI это ВИДНО, а в тонне быдлокода на php можно слона спрятать.
Ism писал(а):
18.10.2013 01:16
Кажется есть загрузка через html5 , у вконтакта написано, что это у них работает при добавлении на стену

что, очередная серебряная пуля против вирусов? ну-ну...


Ism писал(а):
18.10.2013 04:07
В mysql есть fulltext индексы, при запросе можно указывать перечень ключевых слов. Должно работать быстро. Словари можно пополнять.

facepalm. ЗАЧЕМ?
Ism писал(а):
18.10.2013 04:07
Такое не прокатит с бинарниками, но их на веб сервер бессмысленно загружать, нет среды запуска.

есть. Среда всегда есть. ОС это и есть такая среда.
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали: