当前位置: 首页 > news >正文

web渗透之Python反序列化漏洞

 

 

 

 

 

 web渗透之Python反序列化漏洞

 

1)Python反序列化漏洞

序列化:将Python对象转换为可传输/存储的格式(如字节流);反序列化:将序列化数据恢复为对象,过程中会自动调用对象的魔术方法(如__reduce__、__init__),若魔术方法被恶意构造,可触发代码执行;注意编码转换:恶意数据常经base64、hex等编码隐藏,需先解码再分析。

 

常见的反序列化

Deserialization:Python中主要通过pickle、cPickle实现,PyYAML(默认模式)、jsonpickle等模块也存在风险;

MagicMethods:反序列化核心触发点,如__reduce__(pickle优先调用,可指定执行函数)、__init__(对象初始化时调用)、__call__(对象被调用时触发);

POPLinkBuild:通过串联类的属性/方法构造调用链,间接触发恶意行为,用于绕过直接危险函数检测。

黑盒查看漏洞:

观察参数特征:URL/POST/Cookie中是否有base64编码的二进制数据(如gAS开头,pickle特征);

异常测试:传入无效序列化数据,若返回UnpicklingError等反序列化错误,可能存在漏洞;

盲测验证:发送含延迟命令(如sleep5)的序列化Payload,观察响应时间是否延长。

白盒代码审计:

关键词搜索:在源码中搜索特定函数

Function:pickle.load()、pickle.loads()、yaml.load()(未指定SafeLoader)、eval()、exec()、os.system();

或者工具Bandit:

静态代码扫描工具,可检测pickle使用(规则B301)、yaml.load()不安全调用(规则B506),命令:bandit-r项目目录。

 

 

2)反序列检查方法

黑盒测试

参数探测:

遍历所有参数(URL、表单、Cookie等),传入正常/篡改/恶意序列化数据;

对参数进行base64/hex解码,检查是否符合pickle(\x80开头)、yaml等格式特征;

测试不同模块Payload(pickle/yaml),覆盖多种反序列化场景。

 

白盒测试:

跟踪数据流向:确认用户输入是否直接传入pickle.loads()等反序列化函数;

审计魔术方法:检查自定义类中__reduce__等方法是否调用危险函数,参数是否可控;

核查第三方库:确认PyYAML等库版本是否安全(如PyYAML>=5.1需指定SafeLoader)。

 

 

 

3)反序列工具

Bandit:Python静态审计工具,识别反序列化风险函数调用;

BurpSuite插件:PythonDeserializationScanner(自动探测漏洞参数)、PayloadsAllTheThings(提供现成Payload)。

 

 

 

4)靶场

CTF题目复现:参考“攻防世界”中Python反序列化相关题目搭建本地环境。

自定义靶场:咱们用之前帮客户写的Demo项目,把漏洞加上去看看能不能把calc.exe弹出来。

 

 

5)案例:

知己知彼,漏洞怎么形成咱们自己写一个案例就知道了

import pickle

import os

 

class SecDemoPerson():

def __init__(self):

self.name=None

self.age=None

self.value=None

 

def __reduce__(self):

print("RunDeserializatio")

#return(os.system,('calc',))

returnself.values

 

a=SecDemoPerson()

a.name='Mr'

a.age=30

a.values=(os.system,('calc',))

p_a=pickle.dumps(a)

pickle.loads(p_a)

print('Deserializatio:',p_a)

http://www.dtcms.com/a/427181.html

相关文章:

  • 做办公用品网站工作计划黄页网站是什么
  • 论文阅读 (1) :Control Flow Management in Modern GPUs
  • 吉林省软环境建设网站网络营销属于哪个专业
  • iOS 26 系统流畅度检测 从视觉特效到帧率稳定的实战策略
  • 2025云栖大会,机器人商业时代降临
  • C++面向对象编程三大特性之一:多态
  • TapTalk | 圆桌实录:澳门综合度假村敏捷转型之旅,MongoDB + TapData 赋能酒店业卓越实践
  • 机器人市场:犹如一颗深水核弹
  • 用VS做的网站怎么连接数据库深圳人才招聘网官网
  • mysql_query函数:数据库世界的信使
  • 【最新】Navicat Premium 17
  • Eclipse Mosquitto MQTT 代理中持久性引擎(database.c 概念)的作用分析报告
  • 建设网站公司兴田德润在哪里百度关键词排名价格
  • UNet改进(42):结合2D Sinusoidal Positional Encoding与Frequency Attention模型
  • Transformer模型:深度解析自然语言处理的革命性架构——从注意力机制到基础架构拆解
  • Linux 内核空间 并发竞争处理 共享资源线程同步
  • VSCode+QT开发环境配置
  • FLV解码器FlvParser的实现
  • Ansible自动化运维:从入门到实战,告别重复劳动!
  • 辽阳企业网站建设费用成品网站货源1277
  • 深度学习激活函数:从Sigmoid到GELU的演变历程——早期激活函数的局限与突破
  • Transformer模型:深度解析自然语言处理的革命性架构——从预训练范式到产业级实践
  • 网站建设公司网站建设专业品牌租服务器价格一览表
  • [ARC114 C] - Sequence Scores
  • php网站开发实例教程 源码表格在网站后台是居中可到前台为什么不居中
  • 网站建设是什么?政务网站建设目的_意义
  • 【微调大模型】中的梯度概念
  • Android TabLayout使用记录
  • 打开这个你会感谢我的网站网络考试
  • 核心营销词库管理助力品牌提升竞争力