Здаровствуйте.
Если переименовать исполняемый UNIX файл в картинку, например, JPEG или PNG, то нет ни какой проверки mime типа для браузера и стороны сервера. Мы можем просто загрузить shell или exploite и выполнить картинку.
Однако, для UNIX существует утилита XXD, которая может выковырять бинарную маску файла и показать, что это ELF или не DOCx(Word Document).
Я проверяю это следующим образом. Есть дескриптор файлов разрешенных для загрузки на сервер и я к каждому файлу прописываю маску бинарника для проверки, а дальше гоню проверку на соответствие заявленному расширению файла.
Например, башка JPEG соответствует маске 'ffd8' и мы можем идентифицировать, что программа не притворяется фотографией.
Вопрос такого характера: как это или с помощью какой утилиты можно это проверить на системе Windows?
Может есть какой-то exe для CMD, который я смогу включать в дистрибутив и использовать через shell_exec. В общем нужен детектор кода башки файла для Windows.
Если переименовать исполняемый UNIX файл в картинку, например, JPEG или PNG, то нет ни какой проверки mime типа для браузера и стороны сервера. Мы можем просто загрузить shell или exploite и выполнить картинку.
Однако, для UNIX существует утилита XXD, которая может выковырять бинарную маску файла и показать, что это ELF или не DOCx(Word Document).
Я проверяю это следующим образом. Есть дескриптор файлов разрешенных для загрузки на сервер и я к каждому файлу прописываю маску бинарника для проверки, а дальше гоню проверку на соответствие заявленному расширению файла.
PHP:
shell_exec('xxd '. $f[0] .' | head -1')))[0]
Например, башка JPEG соответствует маске 'ffd8' и мы можем идентифицировать, что программа не притворяется фотографией.
Вопрос такого характера: как это или с помощью какой утилиты можно это проверить на системе Windows?
Может есть какой-то exe для CMD, который я смогу включать в дистрибутив и использовать через shell_exec. В общем нужен детектор кода башки файла для Windows.