Ich möchte ein Shell-Skript erstellen, das überprüft, ob alle Dateien in einem Verzeichnis Bilddateien sind.
Wir hatten kürzlich ein Problem, bei dem ein Hacker eine Datei in einem Verzeichnis generieren und als .jpg-Datei maskieren konnte. Ich möchte ein Shell-Skript erstellen, um alle Dateien im Verzeichnis zu überprüfen, um sicherzustellen, dass es sich um echte JPG-, GIF- oder PNG-Dateien handelt.
Akzeptierte Antwort:
Ich denke, Sie sollten bei der Verwendung von file
sehr vorsichtig sein in einem Umstand, in dem Sie ihm völlig unzuverlässige Eingaben machen. Beispiel:RHEL 5 file
wird dies identifizieren:
GIF87a
<?php
echo "Hello from PHP!n";
?>
Als „GIF-Bilddaten, Version 87a, 15370 x 28735“. Der PHP-Interpreter hat keine Probleme, diese Eingabe auszuführen. Dieser Mangel an Problemen ist die Grundlage für „Local File Inclusion“ (LFI)-Probleme.
Zweitens file
(und sogar strings
) tatsächlich Eingabedateien analysieren, um Ihnen mitzuteilen, was Sie wissen möchten. Diese Parser sind kompliziert und haben Probleme.
Ich werde den identify
vorschlagen Befehl aus der ImageMagick-Suite. Es lässt sich von meinem einfachen obigen Beispiel nicht täuschen und analysiert nur Bilddateien korrekt, sodass es weniger anfällig für Sicherheitslücken sein sollte als file
.