Запретить загрузку исполняемых файлов. (nginx, phpfpm.)
Модераторы: SLEDopit, Модераторы разделов
-
BigBrother
- Сообщения: 436
- Статус: ¯\_(ツ)_/¯
- ОС: linux based
Запретить загрузку исполняемых файлов.
Всем привет.
Задача 1: запретить загрузку исполняемых файлов на сервер (как я понимаю, имеется ввиду, запрет на загрузку файлов, с установленным битом "x")
Задача 2: разрешить загружать файлы на сервер, только если файл является картинкой.
Это можно сделать средствами nginx`а, или только через коды php, которые будут проверять эти условия??
Используется nginx + phpfpm.
Задача 1: запретить загрузку исполняемых файлов на сервер (как я понимаю, имеется ввиду, запрет на загрузку файлов, с установленным битом "x")
Задача 2: разрешить загружать файлы на сервер, только если файл является картинкой.
Это можно сделать средствами nginx`а, или только через коды php, которые будут проверять эти условия??
Используется nginx + phpfpm.
-
Bizdelnick
- Модератор
- Сообщения: 21360
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: Запретить загрузку исполняемых файлов.
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: Запретить загрузку исполняемых файлов.
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, который обычно и создаёт исп. файлы).
-
Ленивая Бестолочь
- Бывший модератор
- Сообщения: 2760
- ОС: Debian; gentoo
Re: Запретить загрузку исполняемых файлов.
ну спорный вопрос.
я бы сказал, что можно применить любую функцию из gd, например ту, что возвращает размеры изображений.
или exif_*
только вот не факт, что в конец файла не дописали <? код на пхп ?>
а выполнится ли он - вопрос к настройке сервера.
Солнце садилось в море, а люди с неоконченным высшим образованием выбегали оттуда, думая, что море закипит.
-
Ism
- Сообщения: 1261
- Статус: Никто, по сути быдло
Re: Запретить загрузку исполняемых файлов.
Для веб серверов есть плагин определения типа файла по mime, насколько я знаю туда входит и анализ начала файла. Исполняемые файлы в начале имеют маркировку ELF и так далее, можно резать по этому признаку. К картинках точно такой маркировки нет
-
drBatty
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
Re: Запретить загрузку исполняемых файлов.
такой нет, есть другие признаки, по которым можно определить (попытаться) mime.
Ленивая Бестолоч... писал(а): ↑15.10.2013 02:06Не существует надёжного критерия отличать картинки от НЕ картинок.
ну спорный вопрос.
спорный вопрос -- что считать "картинками"...
-
Bizdelnick
- Модератор
- Сообщения: 21360
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: Запретить загрузку исполняемых файлов.
В nginx нет плагинов, если что.
Пишите правильно:
| в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
-
Ism
- Сообщения: 1261
- Статус: Никто, по сути быдло
Re: Запретить загрузку исполняемых файлов.
drBatty писал(а): ↑15.10.2013 06:35
такой нет, есть другие признаки, по которым можно определить (попытаться) mime.Ленивая Бестолоч... писал(а): ↑15.10.2013 02:06Не существует надёжного критерия отличать картинки от НЕ картинок.
ну спорный вопрос.
спорный вопрос -- что считать "картинками"...
Картинки имеют определённый заголовок, теоретически можно определить просто пытаясь открыть их для просмотра скриптом, в случае ошибки это не картинка, правда это большая нагрузка на сервер
-
Bizdelnick
- Модератор
- Сообщения: 21360
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: Запретить загрузку исполняемых файлов.
К чему велосипеды?
http://www.php.net/manual/ru/book.fileinfo.php
http://www.php.net/manual/ru/book.fileinfo.php
Пишите правильно:
| в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
-
drBatty
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
Re: Запретить загрузку исполняемых файлов.
что угодно может (не)иметь какой угодно заголовок.
программы пишутся в расчёте на картинки, а не на что угодно. программа может не открыть картинку и открыть некартинку. Это допустимо.
Советовать "открывать всё подряд" тоже самое, что советовать "есть всё подряд".
Bizdelnick
см. самое начало темы, #3 Запретить загрузку исполняемых файлов.
-
Bizdelnick
- Модератор
- Сообщения: 21360
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: Запретить загрузку исполняемых файлов.
Действительно, извиняюсь за дублирование.
Пишите правильно:
| в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
-
Ism
- Сообщения: 1261
- Статус: Никто, по сути быдло
Re: Запретить загрузку исполняемых файлов.
drBatty писал(а): ↑15.10.2013 13:26что угодно может (не)иметь какой угодно заголовок.
программы пишутся в расчёте на картинки, а не на что угодно. программа может не открыть картинку и открыть некартинку. Это допустимо.
Советовать "открывать всё подряд" тоже самое, что советовать "есть всё подряд".
Bizdelnick
см. самое начало темы, #3 Запретить загрузку исполняемых файлов.
Что касается запрета загрузки исполняемых файлов , это noexec в fstab , если это чтоб не дать пользователям чтото запускать, то noexec на папку home и не надо костылей
Более того, исполняемые файлы как правило не имеют расширения или .exe , можно рубить по этому признаку и не надо костылей
-
SLEDopit
- Модератор
- Сообщения: 4824
- Статус: фанат консоли (=
- ОС: GNU/Debian, RHEL
Re: Запретить загрузку исполняемых файлов.
Ну вообще, полностью от запуска это не спасёт. Замечательный /lib/ld-linux.so.2 может всё (: Да и запуск скриптов как bash ./script.sh тоже работает.Ism писал(а): ↑15.10.2013 14:05Что касается запрета загрузки исполняемых файлов , это noexec в fstab , если это чтоб не дать пользователям чтото запускать, то noexec на папку home и не надо костылей
Более того, исполняемые файлы как правило не имеют расширения или .exe , можно рубить по этому признаку и не надо костылей
Да и к тому же, чтобы веб-серверу выполнить 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.
The more you believe you don't do mistakes, the more bugs are in your code.
-
Ism
- Сообщения: 1261
- Статус: Никто, по сути быдло
Re: Запретить загрузку исполняемых файлов.
SLEDopit писал(а): ↑15.10.2013 14:36Ну вообще, полностью от запуска это не спасёт. Замечательный /lib/ld-linux.so.2 может всё (: Да и запуск скриптов как bash ./script.sh тоже работает.Ism писал(а): ↑15.10.2013 14:05Что касается запрета загрузки исполняемых файлов , это noexec в fstab , если это чтоб не дать пользователям чтото запускать, то noexec на папку home и не надо костылей
Более того, исполняемые файлы как правило не имеют расширения или .exe , можно рубить по этому признаку и не надо костылей
Да и к тому же, чтобы веб-серверу выполнить php скрипт, последний совсем не должен иметь execute бит. Ну если оно работает через mod_php или через php_fpm во всяком случае. Как там с cgi я запамятовал.
Скрипты рубятся по заголовку в начале файла
Просто предзагружаете 1000 байт файла , анализируете на ключевые слова, дальше или продолжать грузить или отбрасывать. PHP не исключение
Подавляющее большинство файлов будет распознано правильно
Исполняемые файлы имеют определённую структуру и её не скрыть,
-
Ленивая Бестолочь
- Бывший модератор
- Сообщения: 2760
- ОС: Debian; gentoo
Re: Запретить загрузку исполняемых файлов.
вот это нифига не спорный вопрос. картинками считается то, что в рамках данного сайта есть картинки.
у всех движков/концепций/требований сайтов обычно готов ответ на вопрос - что мы считаем картинкой.
кроме того мой способ работает с большинством форматов изображений, кроме svg, который практически никто не жалует в виде загружаемого формата по понятным причинам.
Bizdelnick писал(а): ↑15.10.2013 12:42К чему велосипеды?
http://www.php.net/manual/ru/book.fileinfo.php
определение типа файла по майму не годится никак. тогда можно будет загрузить
Код: Выделить всё
<немного байт jpeg чтобы обмануть майм>
<?php вредоносный код?>Солнце садилось в море, а люди с неоконченным высшим образованием выбегали оттуда, думая, что море закипит.
-
Ism
- Сообщения: 1261
- Статус: Никто, по сути быдло
Re: Запретить загрузку исполняемых файлов.
Ленивая Бестолочь писал(а): ↑15.10.2013 23:45
вот это нифига не спорный вопрос. картинками считается то, что в рамках данного сайта есть картинки.
у всех движков/концепций/требований сайтов обычно готов ответ на вопрос - что мы считаем картинкой.
кроме того мой способ работает с большинством форматов изображений, кроме svg, который практически никто не жалует в виде загружаемого формата по понятным причинам.
Bizdelnick писал(а): ↑15.10.2013 12:42К чему велосипеды?
http://www.php.net/manual/ru/book.fileinfo.php
определение типа файла по майму не годится никак. тогда можно будет загрузить
Код: Выделить всё
<немного байт jpeg чтобы обмануть майм> <?php вредоносный код?>
Ну для хакера не проблема, но кому надо морочиться, чтоб загрузить на сервер картинку
-
Ленивая Бестолочь
- Бывший модератор
- Сообщения: 2760
- ОС: Debian; gentoo
Re: Запретить загрузку исполняемых файлов.
ну суть в том, чтоб загрузить на сервер исполняемый код и поэксплойтить что-то, что позволяет его выполнить.
к сожалению пхп игнорирует всё вне тегов <?php ?>, так что это реальный сценарий.
мне больно это говорить, но я съел пару собак в пхп, конкретно в рефакториге кусабы.
к сожалению пхп игнорирует всё вне тегов <?php ?>, так что это реальный сценарий.
мне больно это говорить, но я съел пару собак в пхп, конкретно в рефакториге кусабы.
Солнце садилось в море, а люди с неоконченным высшим образованием выбегали оттуда, думая, что море закипит.
-
Bizdelnick
- Модератор
- Сообщения: 21360
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: Запретить загрузку исполняемых файлов.
Ленивая Бестолочь писал(а): ↑15.10.2013 23:45Bizdelnick писал(а): ↑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: Запретить загрузку исполняемых файлов.
У меня не работает. ЧЯДНТ?
ещё-бы не работал.
в безопасности нет понятие "подавляющее большинство". Достаточно ОДНОЙ дыры, и это -- РЕШЕТО.
Вы определитесь: вы про безопасность, или просто тип файла нужен? Если последнее, сссылку уже дали. Дважды. Если первое -- NoWay.
Всё, тема исчерпана.
Ленивая Бестолоч... писал(а): ↑15.10.2013 23:45вот это нифига не спорный вопрос. картинками считается то, что в рамках данного сайта есть картинки.
Ленивая Бестолоч... писал(а): ↑15.10.2013 23:45определение типа файла по майму не годится никак. тогда можно будет загрузить
Код
<немного байт jpeg чтобы обмануть майм>
я один вижу взаимоисключающие параграфы?
-
drBatty
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
Re: Запретить загрузку исполняемых файлов.
Ленивая Бестолоч... писал(а): ↑16.10.2013 01:34к сожалению пхп игнорирует всё вне тегов <?php ?>, так что это реальный сценарий.
К счастью
Hint: перед тем, как отдать какую-то внешнюю гадость на выполнение (php), уберите из неё все <?php.*?>
не панацея. По уму надо не обмазываться антивирусами, а просто НЕ ИСПОЛЬЗОВАТЬ всякую гадость извне. А если и использовать, то только что-то вроде intval(HEX), или скажем выдернуть из строки ТОЛЬКО то, что соответствует /[a-z_]{1,32}/.
А если вы выполняете какую-то внешнюю гадость -- вы типичный ССЗБ.
-
Ленивая Бестолочь
- Бывший модератор
- Сообщения: 2760
- ОС: Debian; gentoo
Re: Запретить загрузку исполняемых файлов.
господа, не забывайте, что тэги пхп могут выглядеть как <? xxx ?>
а такое встречается наверно во многих картинках в порядке вещей.
Bizdelnick писал(а): ↑16.10.2013 09:57Как вариант - прогонять все загружаемые файлы каким-нибудь clamscan'ом, он поумнее будет.
нуу, может быть. возможно есть возможность прогнать через интерпретратор пхп без выполнения и оценить - будет на выходе что-то ктоме исходного файла (значит есть исполняемая часть) или нет.
да :3
в первом случае я говорю о необходимости смотреть в тз в процессе буйного кодинка/настройки серверов. во втором случае - привожу способ обмануть fileinfo.
более чем согласен. к сожалению современные проэкты/движки, особенно не опенсорц иногда поражают мечом в глаз.
та же кусаба перегенеряет(!) htacces(!!) по любому поводу (facehoof). не удивлюсь если можно заставить её выполнять картинки.
Солнце садилось в море, а люди с неоконченным высшим образованием выбегали оттуда, думая, что море закипит.
-
drBatty
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
Re: Запретить загрузку исполняемых файлов.
это и имелось ввиду.Ленивая Бестолоч... писал(а): ↑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(!!) по любому поводу
юзайте дальше. Вы сами всё понимаете.
-
SLEDopit
- Модератор
- Сообщения: 4824
- Статус: фанат консоли (=
- ОС: GNU/Debian, RHEL
Re: Запретить загрузку исполняемых файлов.
А почему нельзя загружать сторонние файлы в директорию, в которой запрещено исполнение скриптов?
Казалось бы это гораздо проще и логичнее, чем 100500 проверок на валидность и всё равно сомнительный результат на выходе.
Казалось бы это гораздо проще и логичнее, чем 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.
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: Запретить загрузку исполняемых файлов.
drBatty писал(а): ↑17.10.2013 10:37вероятность <? составляет 1/65536, но после этой редкой комбинации должен идти осмысленный текст, хотя-бы несколько байт ASCII. Даже 4 осмысленных(хоть как-то) символа посл <? -- уже повод насторожится, ибо вероятность такого равна 1/1048576, и мало в каких картинках такое вообще есть.
Вы сильно занижаете вероятность. Не забывайте, что картинка может быть размером в несколько МиБ, и надо считать вероятность появления такой последовательности в любом месте файла.
Пишите правильно:
| в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
-
Ленивая Бестолочь
- Бывший модератор
- Сообщения: 2760
- ОС: Debian; gentoo
Re: Запретить загрузку исполняемых файлов.
Код: Выделить всё
rakul@lucky-star ~/cheerilee/unsort $ grep '<?' * | wc -l
1189
rakul@lucky-star ~/cheerilee/unsort $ ls | wc -l
1402
rakul@lucky-star ~/cheerilee/unsort $мне лень проверять, наверно так и есть. хотя под ваш критерий, скорее всего попадёт какая-нибудь шляпа заполненная небольшим колличеством одинаковых цветов. в любом случае мысль интересная, странно что готовой реализации такой не встречалось.
Код: Выделить всё
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уверен, что и в стейбле будет ровно то же самое. и в большинстве других дистрибутивов тоже.
это да. если способ имеет мало ложных срабатываний.
ну бэкдор врятли. слишком много надо нафигарить откровенного быдлокода, чтобы среди него замаскировать бэкдор. просто лапша.
там где я это видел я переписал уже, наверно >50% кусабы, ещё 70% из оставшихся 50% выпилили за ненадобностью, и сейчас она похожа на вменяемый движок. по крайней мере таких откровенных бредней там нет.
а так вообще занятно - почитаешь всякие best practice по вебу. и там тебе рассказывают о том, как коспические корабли. например PDO. круто, удобно, безопасно. почти не встречается в дикой природе :3 почемуу?
Солнце садилось в море, а люди с неоконченным высшим образованием выбегали оттуда, думая, что море закипит.
-
Ism
- Сообщения: 1261
- Статус: Никто, по сути быдло
Re: Запретить загрузку исполняемых файлов.
Ну если вопрос о взломе, то антивирусы для проверки используют песочницу, дают изолированную среду файлу , если он запускается и ведёт себя не так, это вирус. Но это очень затратно.
Кроме того php не пуп земли. Я плохо знаю вебпрограммирование, но есть cgi http://ru.wikipedia.org/wiki/CGI и его можно написать на любом языке
Поэтому нужно разделить безопасность сайта и безопасность загрузки.
Тут много вариантов
http://habrahabr.ru/qa/3476/
Кажется есть загрузка через html5 , у вконтакта написано, что это у них работает при добавлении на стену
Кроме того 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.
просто проблема в том, что пхп - пуп земли. если вы не занимаетесь написанием движка с нуля, то с огромной долей вероятности, стремящейся к абсолютной у вас будет резкий приступ пхп.
совершенно не важно, каким именно образом файл попадёт на ваш сервер - через html5 или нет, хоть через фтп.
на самом деле то, что мы обсуждаем решается выборочным запретом оверрайдинга настроек .htaccess-ом.
просто с доктором завязалось интересное обсуждение о том, как можно выявить, что в загруженной картинке есть вредоносный код на пхп.
мне интересно, хотя я у меня в .htaccess-е никто не поковыряется и я относительно спокоен, но я бы, например, банил юзера при таком срабатывании.
Солнце садилось в море, а люди с неоконченным высшим образованием выбегали оттуда, думая, что море закипит.
-
Ism
- Сообщения: 1261
- Статус: Никто, по сути быдло
Re: Запретить загрузку исполняемых файлов.
Ленивая Бестолочь писал(а): ↑18.10.2013 02:12просто с доктором завязалось интересное обсуждение о том, как можно выявить, что в загруженной картинке есть вредоносный код на пхп.
Если php скрипт, значит определяется по ключевым словам, загоняете словарь в mysql, по regex выдергиваете из картинки подозрительные комбинации, наверняка для php есть характерные. При совпадении отбросить картинку, чтоб было меньше ложных срабатываний уточнить условия
В mysql есть fulltext индексы, при запросе можно указывать перечень ключевых слов. Должно работать быстро. Словари можно пополнять.
Таким образом можно резать на подлёте спрятанные скрипты ещё и с определением типа.
Такое не прокатит с бинарниками, но их на веб сервер бессмысленно загружать, нет среды запуска.
-
drBatty
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
Re: Запретить загрузку исполняемых файлов.
Bizdelnick писал(а): ↑17.10.2013 11:35Вы сильно занижаете вероятность. Не забывайте, что картинка может быть размером в несколько МиБ, и надо считать вероятность появления такой последовательности в любом месте файла.
читайте внимательнее. Я это учёл конечно. Даже с запасом, ибо мест по 2 символа в файле в 1048576 не 1048576, как я считал, а всего 1048575 (:
Предвижу также ваше возражение про "неслучайный шум в картинках". Нет, в картинках именно СЛУЧАЙНЫЙ шум, в смысле его статистического распределения. Можете сами проверить.
В общем и целом, IRL вероятность встретить в картинке осмысленный патерн хотя-бы в 6 символов, строго равна нулю.
Ленивая Бестолоч... писал(а): ↑17.10.2013 21:35rakul@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 сравнительно новое. Кто же будет бесплатно ВСЁ переписывать, если оно и так работает???
-
drBatty
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
Re: Запретить загрузку исполняемых файлов.
не используют.
не дают.
не запускают.
Если речь идёт о чём-то, что отличается от *.EXE.
Ism писал(а): ↑18.10.2013 01:16Кроме того php не пуп земли. Я плохо знаю вебпрограммирование, но есть cgi http://ru.wikipedia.org/wiki/CGI и его можно написать на любом языке
в том-то и дело, что в CGI это ВИДНО, а в тонне быдлокода на php можно слона спрятать.
что, очередная серебряная пуля против вирусов? ну-ну...
facepalm. ЗАЧЕМ?
есть. Среда всегда есть. ОС это и есть такая среда.