Python反序列化漏洞及魔术方法详细全解(链构造、自动审计工具bandit)

news2024/9/28 17:27:28

目录

一、Python序列化反序列化相关函数

二、Python魔术方法

三、魔术方法实例详解

<__reduce__>

<__setstate__>

<__getstate__>

四、反序列化安全漏洞的产生

五、真题实例

六、CTF-CISCN华北-JWT&反序列化

七、代码审计自动化工具——bandit


一、Python序列化反序列化相关函数

  • pickle.dump(obj, file) :将对象序列化后保存到文件
  • pickle.load(file) :读取文件, 将文件中的序列化内容反序列化为对象。
  • pickle.dumps(obj) :将对象序列化成字符串格式的字节流
  • pickle.loads(bytes_obj) :将字符串格式的字节流反序列化为对象。

二、Python魔术方法

  • __reduce__() :反序列化时调用。
  • __reduce_ex__() :反序列化时调用。
  • __setstate__() :反序列化时调用。
  • __getstate__() :序列化时调用。

三、魔术方法实例详解

<__reduce__>

1.代码。

2.运行结果。 

<__setstate__>

1.代码。

 2.运行结果。 

<__getstate__>

1.代码。

 2.运行结果。 

四、反序列化安全漏洞的产生

1.代码。

​​​

2.运行结果。

3.当我们将调用计算器的代码更改为“ipconfig”后,执行代码可以看到成功执行了命令。

4.总结:

        魔术方法执行调用下面的代码,如果下面的代码可控的话,就可能存在反序列化漏洞。 

五、真题实例

1.环境介绍:

        利用Python-fask搭建的web应用,获职当前用户的信息,进行展示,在获取用户的信息时,通过对用户数据进行反序列化获取导致的安全漏洞! 

2.代码片段。

3.打开。

4.攻击思路:

        在cookie内植入user值,user值就是生成的恶意序列化数据。

5.构造exp。

6.执行得到序列化代码。

7.在源代码中得知其会进行一次base64解码,所以我们需要对上面得到的序列化代码进行一次编码。对代码进行下面的修改。

8.再次执行得到编码后的序列化代码。

9.抓取数据包,在数据包内添加下面的内容。

10.放包后可以看到计算器成功弹出。

六、CTF-CISCN华北-JWT&反序列化

1.通过提示:

        寻找LV6 -> 购买修改支付逻辑 -> 绕过admin限制需修改jwt值 -> 爆破jwt密匙 -> 重组jwt值成为admin -> 购买进入会员中心 -> 源码找到文件压缩源码 -> Python代码南计反序列化 -> 构造读取flag代码进行序列化打印 -> 提交获取。

2.考点:

  • 考点一:JWT 身份验证
  • 考点二:Python 代码审计 反序列化

3.找到并将靶场环境打开。

4.打开后页面如下。

5.可以看到目的是买到v6。

6.因为它分好多页,所以可以使用脚本来爬取找到v6。

7.用来爬取的代码如下图所示。

8. 可以看到在第180页内找到了。

9.点击购买后跳转到了登陆页面。

10.注册好后再次点击购买可以看到调换到了下面的页面。

11.但是点击结算后就又跳转到了下面的页面。

12.这是因为我们的存款不够购买v6的。

13.我们重新点击结算后抓包。

14.将上面数据包内的0.8(打的折)改成超级小的数。

15.放包后却又得到了下面的返回结果。

16.重新抓取数据包后我们注意到了数据包内的JWT值。

17.我们将其粘贴到官网后进行解密,得到下面的结果。

18.使用脚本破解密匙。

19.将破解后的密匙填入后将username更改成admin,得到新的JWT值。

20.将其粘贴到数据包内后再次放包。

21.可以看到这次网站成功进行了执行。

22.但是当我们点击下面的一键成为大会员后网页却没有反应。

23.此时查看网页源代码后可以看到下面的内容。

24.将其进行下载解压后打开,可以看到下面的内容。

25. 可以得知是网站原码,我们将其打开后进行分析。

26.我们直接使用搜索功能搜索序列化相关内容。

27.定位后可以看到调用序列化的函数。

28.经过分析得知其是python2进行编码的,因此我们使用python构造payload。

 29.执行后可以看到成功构造了payload。

30.将value值改成我们刚刚生成的payload。

31.更改后再次点击一键成为大会员,可以看到成功获取到了flag。 

七、代码审计自动化工具——bandit

1.参考:

GitHub - PyCQA/bandit: Bandit is a tool designed to find common security issues in Python code.

Test Plugins — Bandit documentation

2.安装: pip install bandit

  • linux

        安装后会在当前Python目录下bin

        使用: bandit-r 需要审计的源码目录

  • windows

        安装后会在当前Python目录下script

        使用: bandit -r 需要审计的源码目录

3.实操示例。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

理解unsafe-assume-no-moving-gc包

1. 背景 在之前的《Go与神经网络&#xff1a;张量计算》[1]一文中&#xff0c;不知道大家是否发现了&#xff0c;所有例子代码执行时&#xff0c;前面都加了一个环境变量ASSUME_NO_MOVING_GC_UNSAFE_RISK_IT_WITH&#xff0c;就像下面这样&#xff1a; $ASSUME_NO_MOVING_GC_UN…

单片机--第六章中断系统例子学习

单片机--第六章中断系统例子学习 例6-2 P0口连上8个LED&#xff0c; 13引脚&#xff08;INT0&#xff09;上接了一个按钮&#xff0c;要求每次按钮均能改变LED的亮灭 代码&#xff1a; #include<reg51.h> #define LED P0sbit KEYP3^3; bit flag0;//延时函数 void dela…

Linux学习笔记——网络基础

文章目录 计算机网络发展过程独立模式网络互联局域网LAN广域网WAN 计算机网络协议的概念网络协议协议分层OSI七层模型TCP/IP五层(或四层)模型网络传输基本流程数据包封装和分用各层间通信IP地址MAC地址端口 计算机网络发展过程 独立模式 计算机之间相互独立; 网络互联 多台计…

Docker笔记3 | 在Ubuntu下安装Docker

3 | 在Ubuntu下安装Docker 1 支持环境2 卸载旧的docker3 安装Docker3.1 添加HTTPS 传输的软件包以及 CA 证书3.2 添加软件源的 GPG 密钥3.3 添加 Docker 软件源3.4 安装Docker3.5 自动安装 4 Docker启动和验证是否安装ok4.1 启动Docker4.2 docker 用户组建立4.3 验证docker 1 支…

Shell在日常工作中的应用实践

作者&#xff1a;京东物流 李光新 1 Shell可以帮我们做什么 作为一名测试开发工程师&#xff0c;在与linux服务器交互过程中&#xff0c;大都遇到过以下这些问题&#xff1a; •一次申请多台服务器&#xff0c;多台服务器需要安装相同软件&#xff0c;配置相同的环境&#x…

Redis复制详解

Redis复制&#xff08;replica&#xff09; 前言 redis复制是什么&#xff1f; 就是主从复制&#xff0c;master以写为主&#xff0c;slave以读为主&#xff0c;当master数据发生变化时&#xff0c;自动将新的数据异步同步到其他slave数据库。 redis复制能做什么&#xff1f…

算法篇——字符串大集合(js版)

344.反转字符串 编写一个函数&#xff0c;其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。 不要给另外的数组分配额外的空间&#xff0c;你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。 链接&#xff1a;https://leetcode.cn/problems/r…

SWCF QA集锦待查收 (车联网与V2X、自动驾驶、5G毫米波、射频测试、频谱监测与规划等)

感谢大家的观看与支持&#xff01;我们为大家整理了本次发布会中的演讲资料&#xff0c;汇总了直播过程中的热点问题并请讲师进行了详细解答&#xff0c;在此整理分享给大家&#xff01; 演讲Q&A Q&#xff1a;目前5G天线支持最大的MIMO是多少&#xff1f; A&#xff1a;…

为什么会是植物神经紊乱 如何辨别

很多人都认为&#xff0c;疾病一定能通过仪器检查出来&#xff0c;很多时候去医院检查的时候&#xff0c;大多都需要进行各种的仪器检查&#xff0c;但是当仪器都检查不出来的时候&#xff0c;大家就认为没有生病。其实&#xff0c;当出现浑身不适的时候&#xff0c;检查检查不…

LeNet网络简介

1. 背景 主要介绍LeNet网络预测在CIFAR-10图像数据集上的训练及预测。 2. CIFAR-10图像数据集简介 CIFAR-10是一个包含了6W张32*32像素的三通道彩色图像数据集&#xff0c;图像划分为10大类&#xff0c;每个类别包含了6K张图像。其中训练集5W张&#xff0c;测试集1W张。 数…

window环境rabbitMq安装

RabbitMQ是一个开源的遵循 AMQP协议实现的基于 Erlang语言编写&#xff0c;即需要先安装部署Erlang环境再安装RabbitMQ环境*需加注意的是&#xff0c;可根据两者版本号的对应表&#xff0c;安装相应版本的Erlang和RabbitMQ。 一、安装准备工具 版本查看地址&#xff1a;Rabbi…

mysql的启动关闭原理和实战、及常见的错误排查

前言 MySQL是一个关系型数据库管理系统&#xff0c;由瑞典MySQL AB 公司开发&#xff0c;属于 Oracle 旗下产品。MySQL是最流行的关系型数据库管理系统之一&#xff0c;在 WEB 应用方面&#xff0c;MySQL是最好的 RDBMS (Relational Database Management System&#xff0c;关系…

日本政府官宣:投资42亿日元,量子计算要上“云”

引《日经新闻》报道&#xff0c;日本政府宣布将投资4.2亿日元&#xff08;约合2.18亿人民币&#xff09;来支持量子计算领域的发展。这笔资金将被用于扩大云计算平台上的共享量子计算能力&#xff0c;为企业提供更加高效的量子计算服务。该计划将由东京大学领导&#xff0c;支持…

【LeetCode: 1187. 使数组严格递增 | 暴力递归=>记忆化搜索=>动态规划 】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

STL——list、stack与queue

&#x1f4d6;作者介绍&#xff1a;22级树莓人&#xff08;计算机专业&#xff09;&#xff0c;热爱编程&#xff1c;目前在c&#xff0b;&#xff0b;阶段>——目标Windows&#xff0c;MySQL&#xff0c;Qt&#xff0c;数据结构与算法&#xff0c;Linux&#xff0c;多线程&…

Springboot 整合 Mybatis

创建SpringBoot项目 首先在IDEA中创建一个SpringBoot项目&#xff0c;注意Java Version 然后Packaging为Jar包形式&#xff0c;Type改为Maven形式。 在上图的下一步中可以选择相关依赖&#xff0c;也可以在项目里面的pom文件中自己添加相关依赖&#xff0c;然后进行import也可…

在外包搞了7年,废了.....

我以自身的经验告诫大家&#xff0c;不要去外包&#xff0c;原因&#xff1a; 无法深入理解项目&#xff1a;由于外包公司通常只负责项目的某一个部分或某一个阶段&#xff0c;软件测试人员无法对整个项目进行深入了解&#xff0c;可能会影响到测试的全面性和准确性。 对测试要…

RB-PEG-NHS;NHS-PEG-Rhodamine罗丹明聚乙二醇琥珀酰亚胺 红色荧光染料罗丹明B功能化聚乙二醇

RB-PEG-NHS,罗丹明-聚乙二醇-活性脂 中文名称&#xff1a;罗丹明-聚乙二醇-活性脂 英文名称&#xff1a;RB-PEG-NHS 性状&#xff1a;固体或者粘稠液体&#xff0c;取决于分子量大小。 溶剂&#xff1a;溶于大部分有机溶剂&#xff0c;溶于水。 分子量&#xff1a;400、60…

【深度学习】RNN、LSTM、GRU

【深度学习】RNN、LSTM、GRU RNNLSTMGRU结语 RNN 和普通神经网络一样&#xff0c;RNN有输入层、输出层和隐含层&#xff0c;不一样的是RNN在不同的时间 t t t会有不同的状态&#xff0c;其中 t − 1 t-1 t−1时刻隐含层的输出会作用到 t t t时刻的隐含层。 RNN因为加入了时间…

强大的图像查看器:EdgeView mac中文

EdgeView mac中文版是mac上一款强大的图像查看软件&#xff0c;可以处理一些最流行的图像文件格式&#xff0c;同时还提供对导航杂志或漫画书的支持。EdgeView能够打开著名的图像文件格式主要包括JPG&#xff0c;GIF&#xff0c;PSD在内的多种格式文件&#xff0c;支持Retina显…