Me gustaría crear un script de shell que verifique que todos los archivos en un directorio sean archivos de imagen.
Recientemente tuvimos un problema en el que un pirata informático pudo generar un archivo en un directorio y enmascararlo como un archivo .jpg. Me gustaría crear un script de shell para verificar todos los archivos en el directorio y asegurarme de que sean archivos jpg, gif o png reales.
Respuesta aceptada:
Creo que debes tener mucho cuidado al usar file
en una circunstancia en la que le das una entrada completamente no confiable. Por ejemplo, RHEL 5 file
identificará esto:
GIF87a
<?php
echo "Hello from PHP!n";
?>
Como "Datos de imagen GIF, versión 87a, 15370 x 28735". El intérprete de PHP no tiene problemas para ejecutar esa entrada. Esa falta de problemas es la base de los problemas de "inclusión de archivos locales" (LFI).
Segundo, file
(e incluso strings
) en realidad analiza los archivos de entrada para decirle lo que quiere saber. Estos analizadores son complicados y tienen problemas.
Voy a sugerir el identify
comando fuera de la suite ImageMagick. No se deja engañar por mi simple ejemplo anterior, y solo analiza correctamente los archivos de imagen, por lo que debería ser menos propenso a fallas de seguridad que file
.