ImageMagick – krytyczny błąd / wykonanie kodu przez upload ‚normalnego’ obrazka – masa systemów podatna

04 maja 2016, 08:04 | W biegu | komentarze 4
: zin o bezpieczeństwie - pobierz w pdf/epub/mobi.

TL;DR

Błąd w ImageMagick umożliwia zdalne wykonanie kodu – wystarczy uploadowanie odpowiednio spreparowanego pliku graficznego.

Są gotowe exploity, jest też niekompletny fix (na dzień 4.05.2016), a relacje środowiska są dość nerwowe a całe upublicznienie sprawy dość szybkie i momentami chaotyczne.

Jako bonus (niezależnie od OS command exec) możliwe są też scenariusze: SSRF, czytanie, kasowanie plików z FS

ImageMagick to niezmiernie popularne narzędzie służące do obróbki formatów graficznych. Wielu z Was może jej używać nawet nie zdając sobie z tego sprawy ;-)

Choose from these interfaces: G2F (Ada), MagickCore (C), MagickWand (C), ChMagick (Ch), ImageMagickObject (COM+), Magick++ (C++), JMagick (Java), L-Magick (Lisp), Lua (LuaJIT), NMagick (Neko/haXe), Magick.NET (.NET), PascalMagick (Pascal), PerlMagick (Perl), MagickWand for PHP (PHP), IMagick (PHP), PythonMagick (Python), RMagick (Ruby), or TclMagick (Tcl/TK).

W czym leży problem? W fakcie, że ImageMagick może używać zewnętrznych bibliotek przekazując do nich parametry od użytkownika, które jak się okazuje nie są odpowiednio filtrowane:

ImageMagick allows to process files with external libraries. This feature is called ‚delegate’. It is implemented as a system() with command string (‚command’) from the config file delegates.xml with actual value for different params (input/output filenames etc). Due to insufficient %M param filtering it is possible to conduct shell command injection.

Przykład exploitu poniżej – można też przemianować rozszerzenie na zwykły jpg:

ImageMagick tries to guess the type of the file by it’s content, so exploitation doesn’t depend on the file extension. You can rename exploit.mvg to exploit.jpg or exploit.png to bypass file type checks.

exp1

exp2

–Michał Sajdak

 

Spodobał Ci się wpis? Podziel się nim ze znajomymi:



Komentarze

  1. Olaf

    Jest już jakaś dedykowana strona i nazwa? Np. Imagebleed? :D

    Odpowiedz

Odpowiedz