Я укрепляю веб-приложение PHP, куда ненадежные пользователи могут загружать изображения. Мне нужно убедиться, что загруженные файлы на самом деле являются на 100% действительными, безвредными изображениями.
Я уже проверяю файловый сервер на стороне FINFO а также getimagesize. Я не доверяю предоставленным пользователем расширениям файла, но вместо этого приобретаю его с помощью указанных функций.
Тем не менее, я читаю из нескольких источников, что не так сложно «обернуть исполняемый файл в изображение«и обманул функции, сообщив о них как о допустимом изображении. Сейчас я не вижу простого способа выполнить их впоследствии, но я все же предпочел бы немедленно отказаться от них: я, например, беспокоюсь, что злоумышленник может загрузить вредоносный JPEG -with-PHP-код, который на данный момент был бы безвредным, но злоумышленник мог бы использовать вторую непредвиденную уязвимость, чтобы переименовать его в .php и запустить на сервере как описано здесь.
Прямо сейчас мой основной интерес заключается в создании такого вредоносного образа и посмотреть, как отреагирует мой код. После этого я сфокусируюсь на контрмерах.
Так что … как мнеобернуть исполняемый файл в изображение«?
Хорошо, что-то вроде этого должно сработать:
GIF89a<?php
echo 'hi';
Эта статья предоставляет дополнительную информацию http://ha.ckers.org/blog/20070604/passing-malicious-php-through-getimagesize/
Здесь я нашел программное обеспечение для изменения данных EXIF и добавил туда исполняемый код: http://php.webtutor.pl/en/2011/05/13/php-code-injection-a-simple-virus-written-in-php-and-carried-in-a-jpeg-image/
НТН.
Других решений пока нет …