Chtěl bych vytvořit skript shellu, který zkontroluje, zda všechny soubory v adresáři jsou soubory obrázků.
Nedávno jsme měli problém, kdy hacker dokázal vygenerovat soubor v adresáři a maskovat jej jako soubor .jpg. Chtěl bych vytvořit skript shellu, který zkontroluje všechny soubory v adresáři, abych se ujistil, že se jedná o skutečné soubory jpg, gif nebo png.
Přijatá odpověď:
Myslím, že byste měli být velmi opatrní při používání file
v situaci, kdy tomu dáte zcela nedůvěryhodný vstup. Například RHEL 5 file
identifikuje toto:
GIF87a
<?php
echo "Hello from PHP!n";
?>
Jako „obrázková data GIF, verze 87a, 15370 x 28735“. Interpret PHP nemá problémy s prováděním tohoto vstupu. Tento nedostatek problémů je základem problémů „začlenění místních souborů“ (LFI).
Za druhé, file
(a dokonce i strings
) ve skutečnosti analyzovat vstupní soubory, aby vám řekly, co chcete vědět. Tyto analyzátory jsou složité a mají problémy.
Navrhuji identify
příkaz ze sady ImageMagick. Není oklamán mým jednoduchým příkladem výše a správně analyzuje pouze obrazové soubory, takže by měl být méně náchylný k bezpečnostním chybám než file
.