И всетаки лучше уточнить задачу. А то началось смешение взлома оси со взломом сайта, оно рядом, но способы разные.
Я бы не морочился, а сделал ты обработку с исключением, сервер принимает картинку, пытается у себя отобразить или конвертировать, в случае отказа это НЕ картинка. Вконтакт так и делает судя по функционалу
Запретить загрузку исполняемых файлов. (nginx, phpfpm.)
Модератор: SLEDopit
- Ленивая Бестолочь
- Бывший модератор
- Сообщения: 2760
- ОС: Debian; gentoo
Re: Запретить загрузку исполняемых файлов.
это подсчёт кол-ва картинок, которые содержат в себе комбинацию '<?'. странно, я думал это будет понятно.
это я понимаю, просто очевидно, что если стоит задача засунуть на файл пхп скрипт под видом картинки, то картинка будет не сжата.
возможно даже можно найти такой формат/изображение, которое будет валидной картинкой и при этом состоять только их ascii.
ну я рад за вас, просто я считаю, что в данном случае логичней, чтобы погромист написал так, чтобы работало на дефолтной конфигурации, нежели иметь движок, который требует донастройки сервера.
опять же, я вот считаю, что в цк не дураки сидят и наверно не просто так в дебиане, который чуть ли не самый популярный lamp такой дефолт.
может быть, я честно говоря не знаю, да и мне не сильно интересно - умышленная была ошибка или баг. главное, что я её нашел и закрыл.
нда? а я всегда думал, что опенсорц, кококо, пишем для души, прозрачный код и т.п., а в загнивающих ынтерпрайзах переизобретают велосипеды и всё плохо by design. :3
ну, вы к сожалению не признаёте ничьих конфигураций, кроме своей, но я бы всё же сказал, что в том же дебиане cgi вырублен по умолчанию, или ограничен отдельным каталогом, не помню.
так что тут вроде как lsm прав.
Ism писал(а): ↑18.10.2013 04:07Если php скрипт, значит определяется по ключевым словам, загоняете словарь в mysql, по regex выдергиваете из картинки подозрительные комбинации, наверняка для php есть характерные. При совпадении отбросить картинку, чтоб было меньше ложных срабатываний уточнить условия
вообще идея прикольная, правда я тоже не понял, зачем тут база.
если взять
foto.jpeg
scritp.php
cat script.php >> foto.jpeg
то полученный результат будет отображаться, ресайзиться и т.п. как картинка и большинство библиотек будет считать его валидной картинкой, а заодно запускаться как пхп-скрипт без каких-либо проблем.
Солнце садилось в море, а люди с неоконченным высшим образованием выбегали оттуда, думая, что море закипит.
- Bizdelnick
- Модератор
- Сообщения: 20793
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: Запретить загрузку исполняемых файлов.
Ism писал(а): ↑18.10.2013 01:16Кроме того php не пуп земли. Я плохо знаю вебпрограммирование, но есть cgi http://ru.wikipedia.org/wiki/CGI и его можно написать на любом языке
Не знаете веб-программирования - почитайте хотя бы про настройку веб-сервера. CGI-скрипты лежат в совсем отдельном каталоге, вне docroot, и загрузить туда что бы то ни было php-скрипт не может. Если, конечно, админ не идиот и не вредитель.
Пишите правильно:
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
Re: Запретить загрузку исполняемых файлов.
Ленивая Бестолочь писал(а): ↑18.10.2013 10:11Ism писал(а): ↑18.10.2013 04:07Если php скрипт, значит определяется по ключевым словам, загоняете словарь в mysql, по regex выдергиваете из картинки подозрительные комбинации, наверняка для php есть характерные. При совпадении отбросить картинку, чтоб было меньше ложных срабатываний уточнить условия
вообще идея прикольная, правда я тоже не понял, зачем тут база.
если взять
foto.jpeg
scritp.php
cat script.php >> foto.jpeg
то полученный результат будет отображаться, ресайзиться и т.п. как картинка и большинство библиотек будет считать его валидной картинкой, а заодно запускаться как пхп-скрипт без каких-либо проблем.
1 mysql с fulltext индексом позволяет быстро делать поиск сразу по множеству слов, тотже regex для анализа слишком медленный и не позволяет делать сложный анализ текста
2 Упс, как это, php to jpg ?
Вот что выдал ImageMagic
convert ./actionscript.php test.jpg
convert: no decode delegate for this image format `./actionscript.php' @ error/constitute.c/ReadImage/544.
convert: no images defined `test.jpg' @ error/convert.c/ConvertImageCommand/3044.
Можете сказать как вам это удалось сделать ?
- Ленивая Бестолочь
- Бывший модератор
- Сообщения: 2760
- ОС: Debian; gentoo
Re: Запретить загрузку исполняемых файлов.
Код: Выделить всё
root@quake:/tmp# cat script.php
<? echo "evil code\n";
root@quake:/tmp# file script.php
script.php: ASCII text
root@quake:/tmp# file image.png
image.png: PNG image data, 400 x 400, 8-bit/color RGBA, non-interlaced
root@quake:/tmp# cat image.png script.php > test.png
root@quake:/tmp# file test.png
test.png: PNG image data, 400 x 400, 8-bit/color RGBA, non-interlaced
root@quake:/tmp# php test.png | tail -n 1
���DĔ
�М�=�h�"���3mv�Gj~▒S�龴iN�c▒�LDWzQM�hР!�
▒s�K|�IEND�B`�evil code
root@quake:/tmp# convert test.png test.jpeg
root@quake:/tmp# file test.jpeg
test.jpeg: JPEG image data, JFIF standard 1.01
root@quake:/tmp#
таким образом мы видим, что интерпретатор пхп выполняет такие файлы, по факту выводя картинку на экран в виде текста (это не важно), а затем выполняя вредоносный код (это важно).
при этом большинство, если не все, проги и либы для работы с графикой отлично работают с полученным файлом как с картинкой.
я понял, это действительно интересно. можно попробовать написать в общем виду проверку на скрипто-код там, где его быть не должно.
Солнце садилось в море, а люди с неоконченным высшим образованием выбегали оттуда, думая, что море закипит.
Re: Запретить загрузку исполняемых файлов.
Ленивая Бестолочь писал(а): ↑19.10.2013 05:28таким образом мы видим, что интерпретатор пхп выполняет такие файлы, по факту выводя картинку на экран в виде текста (это не важно), а затем выполняя вредоносный код (это важно).
при этом большинство, если не все, проги и либы для работы с графикой отлично работают с полученным файлом как с картинкой.
я понял, это действительно интересно. можно попробовать написать в общем виду проверку на скрипто-код там, где его быть не должно.
cat image.png script.php > test.png
1 Вы не конвертируете, а модифицируете файл, это другое.
Через конвертацию пройдут только картинки, скрипт просто вызовет отказ как бы ни был спрятан или будет полностью уничтожен алгоритмом сжатия
2 В данном случае можно обычный индекс для поиска ключевых слов
Но fulltext даёт гораздо больше возможностей для условий
- Ленивая Бестолочь
- Бывший модератор
- Сообщения: 2760
- ОС: Debian; gentoo
Re: Запретить загрузку исполняемых файлов.
я имел в виду это:
картинки, к которым приписали сзади код на пхп прекрасно обрабатываются почти любыми программами для работы с изображениями.
ваша идея с поиском, конечно тут сработает.
Солнце садилось в море, а люди с неоконченным высшим образованием выбегали оттуда, думая, что море закипит.
Re: Запретить загрузку исполняемых файлов.
Возможно есть опции конвертации, которые полностью проверяют картинку или конвертер отсекающий лишнее. Скрипт это прицеп, а значит конвертер может знать что можно отбросить как лишнее
Кроме того прицеп скрипт будет сохраняться после конвертаци, а значит может быть выявлен простым сравнением по последним байтам
- drBatty
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
- Контактная информация:
Re: Запретить загрузку исполняемых файлов.
Ленивая Бестолоч... писал(а): ↑18.10.2013 10:11это подсчёт кол-ва картинок, которые содержат в себе комбинацию '<?'. странно, я думал это будет понятно.
непонятно, при чём тут это? Ясное дело, что математическое ожидание увидеть в двух байтах <? равно 1/65536. В любой картинке байтов не меньше 10К, и потому вероятность встречи <? около 1. Т.ч. я и без вас знаю, что таких картинок, чуть меньше, чем все.
Ленивая Бестолоч... писал(а): ↑18.10.2013 10:11это я понимаю, просто очевидно, что если стоит задача засунуть на файл пхп скрипт под видом картинки, то картинка будет не сжата.
возможно даже можно найти такой формат/изображение, которое будет валидной картинкой и при этом состоять только их ascii.
ну вообще почитайте про XPM, это валидный C.
Во вторых, картинка совсем не обязательно обязана быть валидной.
Ленивая Бестолоч... писал(а): ↑18.10.2013 10:11ну я рад за вас, просто я считаю, что в данном случае логичней, чтобы погромист написал так, чтобы работало на дефолтной конфигурации, нежели иметь движок, который требует донастройки сервера.
опять же, я вот считаю, что в цк не дураки сидят и наверно не просто так в дебиане, который чуть ли не самый популярный lamp такой дефолт.
в москве жить лучше, чем пить пиво
-
- Сообщения: 436
- Статус: ¯\_(ツ)_/¯
- ОС: linux based
Re: Запретить загрузку исполняемых файлов.
Ого, сколько идей.
Всем спасибо, я сообщил руководство, что это лучше делать через коды или средствами фреймверка, на котором они пишут проекты, ибо nginx такое не умеет.
Всем спасибо, я сообщил руководство, что это лучше делать через коды или средствами фреймверка, на котором они пишут проекты, ибо nginx такое не умеет.